如果是在vm或者物理机注册的docker类型执行器的runner,则在本机执行docker login之后就可以了。但是现在是通过docker运行的gitlabrunner 并且使用的也是docker类型的执行器。此时我们就需要在项目或者Runner配置镜像仓库的认证信息了。
注意:如果提前把镜像下载到本地供runner使用,比每次都下载要快一些的。可以设置镜像的拉取策略if-not-present。
首先,我们用docker启动runner,并注册执行器类型为docker的runner并启动runner。
- ## 注册
- docker run -itd --rm -v /data/devops/gitlab-runner/config:/etc/gitlab-runner gitlab/gitlab-runner:v12.9.0 register \
- --non-interactive \ --executor "docker" \
- --url "http://gitlab.idevops.site/" \
- --registration-token "4qCqD8pEoLzvgzzVn5oy" \
- --description "devops-runner" \
- --tag-list "build,deploy" \
- --run-untagged="true" \
- --locked="false" \
- --docker-image alpine:latest \ --access-level="not_protected"
- ## 运行docker run -itd \ --name gitlab-runner \ --restart=always \ -v /data/devops/gitlab-runner/config:/etc/gitlab-runner \
- -v /var/run/docker.sock:/var/run/docker.sock \
- gitlab/gitlab-runner:v12.9.0
您可以采用两种方法来访问私有注册表。两者都需要设置环境变量DOCKER_AUTH_CONFIG来存储身份验证信息 。
1作业级:要配置一个作业以访问专用注册表,请添加 DOCKER_AUTH_CONFIG为作业变量。
2平台级(每个runner):要配置Runner以便其所有作业都可以访问私有注册表,在Runner的配置中添加DOCKER_AUTH_CONFIG到环境变量中。
获取凭证信息
使用docker login生成
- docker login registry.example.com:5000 --username my_username --password my_password
然后复制~/.docker/config.json的内容。
- [root@zeyang-nuc-service config]# cat ~/.docker/config.json
- { "auths": {
- "192.168.1.200:8088": {
- "auth": "YWRtaW46SGFyYm9yMTIzNDU="
- }, }, "HttpHeaders": {
- "User-Agent": "Docker-Client/19.03.5 (linux)"
- }
使用base64生成
- echo -n "my_username:my_password" | base64
- # 示例bXlfdXNlcm5hbWU6bXlfcGFzc3dvcmQ=# 格式{ "auths": {
- "registry.example.com:5000": {
- "auth": "(Base64 content from above)"
- } }}
配置凭证信息
- 格式化数据:{"auths": {"192.168.1.200:8088": {"auth": "YWRtaW46SGFyYm9yMTIzNDU="}}
项目级配置
将认证信息以变量的方式存储在项目或者ci文件中
- stages:
- - test
- variables:
- DOCKER_AUTH_CONFIG: '{"auths": {"192.168.1.200:8088": {"auth": "YWRtaW46SGFyYm9yMTIzNDU="}}}'
- test:
- stage: test
- tags:
- - build image: 192.168.1.200:8088/spinnaker01/spinnaker01-nginx-demo:RELEASE-1.1.1
- script:
- - sleep 20
系统级配置
将认证信息以变量的方式存储在runner配置文件中
- [[runners]]
- environment = ['DOCKER_AUTH_CONFIG={"auths": {"192.168.1.200:8088": {"auth": "YWRtaW46SGFyYm9yMTIzNDU="}}}']
测试验证
#DevOps# #GitLab# #持续交付#