gpt4 book ai didi

docker - 如何将 GitLab CE CI 设置为运行者的用户 docker 图像

转载 作者:行者123 更新时间:2023-12-02 21:14:27 25 4
gpt4 key购买 nike

我现在已经尝试了几天让运行者在 docker 容器上工作。我有一个安装了 GitLab、gitlab-runner 和 docker 的 Debian 运行系统。我想使用 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 图像/容器,但我不是说 GitLab 运行器使用现有的吗?

希望有人可以更轻松地向我解释这是如何工作的......我真的尝试过谷歌给我的任何东西。

最佳答案

您使用的 Docker 镜像是一个 Alpine 镜像,它是一个最小的 Linux 发行版。
Alpine Linux 未使用 apt用于包管理,但 apk .

问题出在您的 .gitlab-ci-ymlbefore_script您尝试运行的部分apt .

要解决您的问题,请替换使用 apt通过 apk :

before_script:
- apk update
- apk add sshpass
...

阅读有关 Alpine Linux 软件包管理的更多信息 here .

关于docker - 如何将 GitLab CE CI 设置为运行者的用户 docker 图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52145287/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com