【发布时间】:2021-05-22 09:32:56
【问题描述】:
我在我的 homeoffice 中设置了一个开发服务器,并通过 docker-compose 安装了 gitlab。到目前为止一切正常,我可以登录、推送提交等等。
现在我想设置一个 CI 管道,以便在推送新标签时构建作曲家包。所以我点击了 CI/CD 按钮并从作曲家模板中添加了 .gitlab-ci.yml 文件。但管道只是悬而未决。所以我想我可能需要先注册一个跑步者。
我在通过 docker 运行 gitlab 的同一台机器上安装了 gitlab-runner(通过 apt),并使用 gitlab 提供的域和密钥注册了运行器(在添加运行器页面中)。我选择了 docker 作为执行者,给它起了个名字,其他的都保留了默认值。
运行器在 gitlab 中已正确注册,并且 ci 管道现在正在工作,但总是失败。
我唯一的输出是:
Running with gitlab-runner 11.2.0 (11.2.0)
on **************
Using Docker executor with image curlimages/curl:latest ...
Pulling docker image gitlab-runner-helper:11.2.0 ...
gitlab-ci文件内容为:
# This file is a template, and might need editing before it works on your project.
# Publishes a tag/branch to Composer Packages of the current project
publish:
image: curlimages/curl:latest
stage: build
variables:
URL: "$CI_SERVER_PROTOCOL://$CI_SERVER_HOST:$CI_SERVER_PORT/api/v4/projects/$CI_PROJECT_ID/packages/composer?job_token=$CI_JOB_TOKEN"
script:
- version=$([[ -z "$CI_COMMIT_TAG" ]] && echo "branch=$CI_COMMIT_REF_NAME" || echo "tag=$CI_COMMIT_TAG")
- insecure=$([ "$CI_SERVER_PROTOCOL" = "http" ] && echo "--insecure" || echo "")
- response=$(curl -s -w "\n%{http_code}" $insecure --data $version $URL)
- code=$(echo "$response" | tail -n 1)
- body=$(echo "$response" | head -n 1)
# Output state information
- if [ $code -eq 201 ]; then
echo "Package created - Code $code - $body";
else
echo "Could not create package - Code $code - $body";
exit 1;
fi
因为我没有对模板文件进行任何更改,我怀疑 gitlab-runner 设置需要一些配置才能工作,可能是组分配或类似的东西。
运行 systemctl status gitlab-runner 时,我可以看到:
无法为 /builds/{group} 创建容器卷 来自守护进程的错误响应:gitlab-runner-helper 的请求访问被拒绝,存储库不存在或可能需要“docker login”:拒绝:请求的资源访问权限是拒绝 (executor_docker.go:166:3s)" job=15 project=34 runner=******
所以我去了 gitlab 中的跑步者部分,并为特定项目启用了跑步者。所以我可以避免上面的错误,但管道仍然中断。
gitlab 中的输出还是一样,但是 gitlab-runner 的日志不一样:
错误后不继续拉取:错误:\n拒绝:请求的资源访问被拒绝\n未授权:需要身份验证\n
可悲的是 - 我没有从这里得到任何进一步的东西
每次我按下管道的重试按钮时,我都会得到以下系统日志条目:
检查作业...收到" job=19 repo_url="correct-url-for-repo" runner=****** 此消息出现两次
错误后不继续拉取:错误:\n拒绝:请求的资源访问被拒绝\n未授权:需要身份验证\n 忽略从注册表返回的额外错误:未授权:需要身份验证
无法为 /builds/{group} 创建容器卷 来自守护进程的错误响应:gitlab-runner-helper 的请求访问被拒绝,存储库不存在或可能需要“docker login”:拒绝:请求的资源访问权限是拒绝(executor_docker.go:166:3s)”作业=19 项目=34 跑步者=****** 作业失败:来自守护程序的错误响应:gitlab-runner-helper 的请求访问被拒绝,存储库不存在或可能需要“docker login”:拒绝:请求的资源访问被拒绝(executor_docker.go:166:3s)”作业=19 项目=34 跑步者=****** 两条消息都出现了两次
所以要么不允许 gitlab-runner 拉取 docker 图像,要么不允许访问我的 gitlab 项目,但我无法找出问题所在。
当以 root 身份运行 gitlab-runner restart 时,我看到以下“错误”
ERRO[0000] Docker 执行器:预构建的镜像助手将从 /var/lib/gitlab-runner 加载。
有人可以帮帮我吗:)?
【问题讨论】:
标签: docker gitlab gitlab-ci gitlab-ci-runner