最近研究GitLab的内置CI/CD功能,用到了gitlab-runner的docker executor,由于CI构建环境需求比较特殊,一时没有找到合适的image,于是决定自己做一个,网上搜索了下,找到了不需要在本地安装docker而直接在GitHub上创建包含Dockerfile的repo,然后关联Docker Hub并开启自动构建的方法,尝试了下可以可以轻松完成任务(甚至都可以完全不clone GitHub上的项目代码到本地,完全在线编辑Dockerfile就可以),虽然算是完成了目标,但后来想像其他人那样给同一个image加多个tag时,却没有在后台页面上找到直接操作的方法,Configure Automated Builds里,只能通过增加新的build rule来增加新的tag,但是这样的话即使来源分支什么配置都一样,结果image也一样,但还是build出了n个image,而不是1个image n个tag,本来以为只能安装docker命令行解决了,
后来参考 https://windsock.io/automated-docker-image-builds-with-multiple-tags/ 找到了解决方法,那就是使用post_push这个hook脚本:
#!/bin/bash
set -e
# Parse image name for repo name
tagStart=$(expr index "$IMAGE_NAME" :)
repoName=${IMAGE_NAME:0:tagStart-1}
# Tag and push image for each additional tag
for tag in {centos8,8}; do
docker tag $IMAGE_NAME ${repoName}:${tag}
docker push ${repoName}:${tag}
done
这样每次自动构建完会触发这个脚本执行,为image增加额外tag,最后,放出我的Docker Hub镜像页以供参考:https://hub.docker.com/r/wzkres/centos-ci-gcc
博主友情提示:
如您在评论中需要提及如QQ号、电子邮件地址或其他隐私敏感信息,欢迎使用>>博主专用加密工具v3<<处理后发布,原文只有博主可以看到。