【发布时间】:2021-05-29 13:55:54
【问题描述】:
在 Ubuntu Server 20.04.2.0 上安装了全新的 Gitlab CE 13.9.1。 这是管道
image: node:latest
before_script:
- apt-get update -qq
stages:
- install
install:
stage: install
script:
- npm install --verbose
为了运行它,我使用与我之前的 Gitlab CE 12 相同的过程来配置我的 Gitlab Runner:
我拉出最后一张 Gitlab runner 图像:
docker pull gitlab/gitlab-runner:latest
第一次尝试:
在本地卷上启动 GitLab Runner 容器挂载
docker run -d \
--name gitlab-runner \
--restart always \
-v /srv/gitlab-runner/config:/etc/gitlab-runner \
-v /var/run/docker.sock:/var/run/docker.sock \
gitlab/gitlab-runner:latest
并注册跑步者
docker run --rm -t -i \
-v /srv/gitlab-runner/config:/etc/gitlab-runner gitlab/gitlab-runner register
注册runner时,executor我选择shell
最后,当我推送到 Gitlab 时,在管道上,我看到了这个错误:
$ apt-get update -qq
E: List directory /var/lib/apt/lists/partial is missing. - Acquire (13: Permission denied)
ERROR: Job failed: exit status 1
第二次尝试:
在 Docker 卷上启动 GitLab Runner 容器挂载
- 创建卷
docker volume create gitlab-runner-config
- 启动 GitLab Runner 容器
docker run -d \
--name gitlab-runner \
--restart always \
-v gitlab-runner-config:/etc/gitlab-runner \
-v /var/run/docker.sock:/var/run/docker.sock \
gitlab/gitlab-runner:latest
- 注册runner(再次选择shell作为executor)
docker run \
--rm -t -i \
-v gitlab-runner-config:/etc/gitlab-runner gitlab/gitlab-runner register
同样的结果。
$ apt-get update -qq
E: List directory /var/lib/apt/lists/partial is missing. - Acquire (13: Permission denied)
ERROR: Job failed: exit status 1
第三次尝试:
授予 gitlab-runner 权限
我最终阅读了In gitlab CI the gitlab runner choose wrong executor 和https://docs.gitlab.com/runner/executors/shell.html#running-as-unprivileged-user,其中说明了这些解决方案:
- 移至码头
- 授予用户 gitlab-runner 运行指定命令所需的权限。 gitlab-runner 可以在没有 sudo 的情况下运行 apt-get,他还需要 perms 才能进行 npm install 和 npm run。
- 将 sudo nopasswd 授予用户 gitlab-runner。将 gitlab-runner ALL=(ALL) NOPASSWD: ALL (或类似) 添加到安装了 gitlab-runner 的机器上的 /etc/sudoers 并将 apt-get update 行更改为 sudo apt-get update,这将作为特权执行它们用户(root)。
- 我需要使用
shell - 我已经用
sudo usermod -aG docker gitlab-runner做到了 - 也尝试使用
sudo nano /etc/sudoers,添加gitlab-runner ALL=(ALL) NOPASSWD: ALL,并在管道中使用sudo apt-get update -qq,结果为bash: line 106: sudo: command not found
我现在很迷茫。欢迎任何想法。
【问题讨论】:
标签: docker gitlab gitlab-ci-runner