GitLabCI作業(yè)中如何使用私有倉(cāng)庫鏡像?
如果是在vm或者物理機(jī)注冊(cè)的docker類型執(zhí)行器的runner,則在本機(jī)執(zhí)行docker login之后就可以了。但是現(xiàn)在是通過docker運(yùn)行的gitlabrunner 并且使用的也是docker類型的執(zhí)行器。此時(shí)我們就需要在項(xiàng)目或者Runner配置鏡像倉(cāng)庫的認(rèn)證信息了。
注意:如果提前把鏡像下載到本地供runner使用,比每次都下載要快一些的??梢栽O(shè)置鏡像的拉取策略if-not-present。
首先,我們用docker啟動(dòng)runner,并注冊(cè)執(zhí)行器類型為docker的runner并啟動(dòng)runner。
- ## 注冊(cè)
 - 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"
 - ## 運(yùn)行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
 
您可以采用兩種方法來訪問私有注冊(cè)表。兩者都需要設(shè)置環(huán)境變量DOCKER_AUTH_CONFIG來存儲(chǔ)身份驗(yàn)證信息 。
1作業(yè)級(jí):要配置一個(gè)作業(yè)以訪問專用注冊(cè)表,請(qǐng)?zhí)砑?DOCKER_AUTH_CONFIG為作業(yè)變量。
2平臺(tái)級(jí)(每個(gè)runner):要配置Runner以便其所有作業(yè)都可以訪問私有注冊(cè)表,在Runner的配置中添加DOCKER_AUTH_CONFIG到環(huán)境變量中。
獲取憑證信息
使用docker login生成
- docker login registry.example.com:5000 --username my_username --password my_password
 
然后復(fù)制~/.docker/config.json的內(nèi)容。
- [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)"
 - } }}
 
配置憑證信息
- 格式化數(shù)據(jù):{"auths": {"192.168.1.200:8088": {"auth": "YWRtaW46SGFyYm9yMTIzNDU="}}
 
項(xiàng)目級(jí)配置
將認(rèn)證信息以變量的方式存儲(chǔ)在項(xiàng)目或者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
 
系統(tǒng)級(jí)配置
將認(rèn)證信息以變量的方式存儲(chǔ)在runner配置文件中
- [[runners]]
 - environment = ['DOCKER_AUTH_CONFIG={"auths": {"192.168.1.200:8088": {"auth": "YWRtaW46SGFyYm9yMTIzNDU="}}}']
 
測(cè)試驗(yàn)證
#DevOps# #GitLab# #持續(xù)交付#

















 
 
 












 
 
 
 