如何为跑步者设置 GitLab CE CI 用户 docker 图片
How to setup GitLab CE CI to user docker images for runners
我已经尝试了好几天让 运行ner 在 docker 容器上工作。我有一个安装了 GitLab、gitlab-运行ner 和 docker 的 Debian 运行ning 系统。我想使用 docker 作为我的 运行 用户的容器,因为 shell 执行者正在我的 CI 机器上安装所有东西...
到目前为止我所做的:我按照 GitLab CE 文档中的描述安装了 docker 和 运行 这个命令:
gitlab-runner register -n \
--url DOMAIN \
--registration-token TOKEN \
--executor docker \
--description "docker-builder" \
--docker-image "gliderlabs/alpine" \
--docker-privileged
然后我用这个 .gitlab-ci-yml
创建了一个测试仓库来查看它是否正常工作
variables:
# GIT_STRATEGY: fetch # re-uses the project workspace
GIT_CHECKOUT: "false" # don't checkout the working copy to a revision related to the CI pipeline
GIT_DEPTH: "3"
cache:
paths:
- node_modules/
stages:
- deploy
before_script:
- apt-get update
- apt-get install -y -qq sshpass
- ls -la
# ======================= Jobs=======================
# Teporaly disable jobs by adding a . (dot) before the job name
ftp-upload:
stage: deploy
# environment: Production
except:
- testing
script:
- rm ./package-lock.json
- npm install
- ls -la
- sshpass -V
- export SSHPASS=$PASSWORD
- sshpass -e scp -o stricthostkeychecking=no -r . $USERNAME@$HOST:/Test
only:
- master
# ===================== ./Jobs ======================
但我在 GitLab CI 控制台中收到错误消息:
Running with gitlab-runner 11.1.0 (081978aa)
on docker-builder 5ce3c211
Using Docker executor with image gliderlabs/alpine ...
Pulling docker image gliderlabs/alpine ...
Using docker image sha256:74a78e860d7b39aa694197a70d4467019b611b80c21d886fcd1bfc04d2e767d4 for gliderlabs/alpine ...
Running on runner-5ce3c211-project-3-concurrent-0 via srvvgit001...
Cloning repository for master with git depth set to 3...
Cloning into '/builds/additive/test'...
Skipping Git checkout
Skipping Git submodules setup
Checking cache for default...
Successfully extracted cache
/bin/sh: eval: line 64: apt-get: not found
$ apt-get update
ERROR: Job failed: exit code 127
我对那些 docker 容器知之甚少,但它们似乎可以在不修改我的 CI 系统的情况下重新使用。在这里看起来它正在安装另一个 alpine image/container,但我不是说过 GitLab 运行ner 使用现有的吗?
希望有人可以更容易地向我解释这是如何工作的...我真的已经尝试了 google 给我的任何东西。
您正在使用的 Docker 图像是一个 Alpine 图像,它是一个最小的 Linux 分布。
Alpine Linux 没有使用 apt
进行包管理,而是 apk
.
问题出在您 .gitlab-ci-yml
的 before_script
部分,您正在尝试 运行 apt
.
要解决您的问题,请将 apt
的使用替换为 apk
:
before_script:
- apk update
- apk add sshpass
...
阅读有关 Alpine Linux 包管理的更多信息 here。
我已经尝试了好几天让 运行ner 在 docker 容器上工作。我有一个安装了 GitLab、gitlab-运行ner 和 docker 的 Debian 运行ning 系统。我想使用 docker 作为我的 运行 用户的容器,因为 shell 执行者正在我的 CI 机器上安装所有东西...
到目前为止我所做的:我按照 GitLab CE 文档中的描述安装了 docker 和 运行 这个命令:
gitlab-runner register -n \
--url DOMAIN \
--registration-token TOKEN \
--executor docker \
--description "docker-builder" \
--docker-image "gliderlabs/alpine" \
--docker-privileged
然后我用这个 .gitlab-ci-yml
创建了一个测试仓库来查看它是否正常工作variables:
# GIT_STRATEGY: fetch # re-uses the project workspace
GIT_CHECKOUT: "false" # don't checkout the working copy to a revision related to the CI pipeline
GIT_DEPTH: "3"
cache:
paths:
- node_modules/
stages:
- deploy
before_script:
- apt-get update
- apt-get install -y -qq sshpass
- ls -la
# ======================= Jobs=======================
# Teporaly disable jobs by adding a . (dot) before the job name
ftp-upload:
stage: deploy
# environment: Production
except:
- testing
script:
- rm ./package-lock.json
- npm install
- ls -la
- sshpass -V
- export SSHPASS=$PASSWORD
- sshpass -e scp -o stricthostkeychecking=no -r . $USERNAME@$HOST:/Test
only:
- master
# ===================== ./Jobs ======================
但我在 GitLab CI 控制台中收到错误消息:
Running with gitlab-runner 11.1.0 (081978aa)
on docker-builder 5ce3c211
Using Docker executor with image gliderlabs/alpine ...
Pulling docker image gliderlabs/alpine ...
Using docker image sha256:74a78e860d7b39aa694197a70d4467019b611b80c21d886fcd1bfc04d2e767d4 for gliderlabs/alpine ...
Running on runner-5ce3c211-project-3-concurrent-0 via srvvgit001...
Cloning repository for master with git depth set to 3...
Cloning into '/builds/additive/test'...
Skipping Git checkout
Skipping Git submodules setup
Checking cache for default...
Successfully extracted cache
/bin/sh: eval: line 64: apt-get: not found
$ apt-get update
ERROR: Job failed: exit code 127
我对那些 docker 容器知之甚少,但它们似乎可以在不修改我的 CI 系统的情况下重新使用。在这里看起来它正在安装另一个 alpine image/container,但我不是说过 GitLab 运行ner 使用现有的吗?
希望有人可以更容易地向我解释这是如何工作的...我真的已经尝试了 google 给我的任何东西。
您正在使用的 Docker 图像是一个 Alpine 图像,它是一个最小的 Linux 分布。
Alpine Linux 没有使用 apt
进行包管理,而是 apk
.
问题出在您 .gitlab-ci-yml
的 before_script
部分,您正在尝试 运行 apt
.
要解决您的问题,请将 apt
的使用替换为 apk
:
before_script:
- apk update
- apk add sshpass
...
阅读有关 Alpine Linux 包管理的更多信息 here。