至尊狐GitLab SaaS内测轻度体验
非常感谢大家对GitLab(SaaS)本地化努力的支持,也感谢马哥的内测资质。 最近突然想出了一个使用私有镜像仓库的想法。 Extreme fox GitLab 提供了一个容器镜像库,只是对 CICD 的简单体验。 容器镜像库 Container Registry 文档介绍这里,还是英文的。 (本地化工作应该很多,文件还没翻译。) 容器镜像库可以作为一个独立的镜像仓库使用(为什么?看下一篇)。即
非常感谢大家对GitLab(SaaS)本地化努力的支持,也感谢马哥的内测资质。
最近突然想出了一个使用私有镜像仓库的想法。 Extreme fox GitLab 提供了一个容器镜像库,只是对 CICD 的简单体验。
容器镜像库 Container Registry
文档介绍这里,还是英文的。 (本地化工作应该很多,文件还没翻译。)
容器镜像库可以作为一个独立的镜像仓库使用(为什么?看下一篇)。即使用docker命令将构建好的镜像推送到容器镜像库中。
当然也可以和CICD pipeline结合使用,后面会介绍。
独立使用
本地登录 Container Registry 有两种认证方式:
-
SQL Server 身份验证
-
在双重认证,可以使用访问个人访问令牌
事实上,无论是否启动双重认证,都建议使用访问令牌。
docker登录registry.gitlab.cn
#根据提示输入用户名和密码或token
image name最多三层,即registry.example.com/[namespace]后面的内容最多三层。例如,以下图像名称为 myproject/my/image
registry.example.com/mynamespace/myproject/my/image:rc1
其次,第一层镜像名称必须是镜像名称,比如上面的myproject。
尝试推送tekton的镜像:
码头工人标签 gcr.io/tekton-releases/github.com/tektoncd/pipeline/cmd/controller:v0.28.1 registry.gitlab.cn/addozhang/registry-mirror/tekton-pipeline/controller:v0.28.1
docker push registry.gitlab.cn/addozhang/registry-mirror/tekton-pipeline/controller:v0.28.1
请忽略发布时间。原始图像的 Created 字段存在问题。
也可以使用 REST API 访问它:
curl --location --request GET 'https://gitlab.cn/api/v4/projects/addozhang%2Fregistry-mirror/registry/repositories/155/tags' \
--header 'PRIVATE-TOKEN: TOKEN_HERE'
[{"name":"v0.28.1","path":"addozhang/registry-mirror/tekton-pipeline/controller:v0.28.1","location":"registry.gitlab.cn/addozhang/registry -mirror/tekton-pipeline/controller:v0.28.1"}]
用CICD构建和推送
见下文。
CICD
我这里将github使用的test tekton项目镜像到,并添加了一个。 gitlab-ci.yml管道定义文件。
是的官方文档,并参考了官方模板,管道的定义非常快。
整个流水线包括两个阶段:Java代码的编译打包和镜像的构建。
如上图,最新的一个是使用缓存功能缓存。平方米/存储库;前两次都用到了缓存(这里的构建时间相差很大,不知道是不是因为晚上资源少?)。 Java 项目会将依赖包保存在本地库中。使用缓存功能可以提高构建效率。
流水线 DAG
使用需求可以控制同阶段作业的构建顺序,否则同阶段作业的执行是并行的。同时,有需求,可以在至少需要三个job的前提下搭建DAG,所以我又加了一个job。
缓存:
路径:
- .m2/存储库
变量:
MAVEN_OPTS:“-Dhttps.protocolsu003dTLSv1.2 -Dmaven.repo.localu003d$CI_PROJECT_DIR/.m2/repository -Dorg.slf4j.simpleLogger.log.org.apache.maven.cli.transfer .Slf4jMavenTransferListeneru003dWARN -Dorg.slf4j.simpleLogger.showDateTimeu003dtrue -Djava.awt.headlessu003dtrue"
阶段:
- 构建
- 图片
- 后期构建
Maven 构建:
图片:maven:3-jdk-8
阶段:构建
文物:
路径:
- 目标/*.jar
脚本:
- mvn 安装 -DskipTests
码头工人建造:
图片:码头:19.03.12
舞台:形象
需求:
- Maven 构建
依赖:
- Maven 构建
服务:
- 码头工人:19.03.12-dind
变量:
IMAGE_TAG:$CI_REGISTRY_IMAGE:最新
脚本:
- 码头工人登录 -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD $CI_REGISTRY
- 搬运工构建 -t $IMAGE_TAG 。
- 搬运工推送 $IMAGE_TAG
完成:
图片:busybox:最新
阶段:后期构建
需求:
- 码头工人构建
脚本:
- 回显“全部完成!”
感觉画的有点粗糙。以后应该优化。
作业依赖
在前面的管道定义中,为了传递maven构建的jar,使用artifacts和dependencies进行传递。
我错了吗?将鼠标悬停在鼠标上不会显示相关作业。
管道触发器
除了推送代码触发之外,您还可以通过 Web API 创建触发器来触发。
卷曲-X POST \
-F 令牌u003dTOKEN_HERE \
-F 参考u003d主要\
https://gitlab.cn/api/v4/projects/9766/trigger/pipeline
{"id":19252,"project_id":9766,"sha":"5dde144d584b76fe6d3b63a4a9beb789762d1a2d","ref":"main","status":"created","created_at":"2021-10 -01T07:37:42.806+08:00","更新_at":"2021-10-01T07:37:42.806+08:00","web_url":"https://gitlab.cn/addozhang /tekton-test/-/pipelines/19252","before_sha":"0000000000000000000000000000000000000000","tag":false,"yaml_errors":null,"user":{"id":432,"name" :"addozhang","用户名":"addozhang","状态":"active","头像_url":null,"web_url":"https://gitlab.cn/addozhang"},"开始_at":null,"finished_at":null,"committed_at":null,"duration":null,"queued_duration":null,"coverage":null,"detailed_status":{"图标":"状态_created","text":"created","label":"created","group":"created","tooltip":"created","has_details":true," details_path":"/addozhang/tekton-test/-/pipelines/19252","illustration":null,"favicon":"/assets/ci_favicons/favicon_status_created-4b975aa976d24e5a3ea7cd9a5713e6ce2cd9afd08b910415e96675de35f64955.png}}
总结
由于我之前工作的公司也可以使用 Gitlab,而且我有使用 Github Action 和 Tektoncd 的经验,所以体验上没有任何障碍。这也得益于文档的完善和极湖团队的努力。希望姬虎能做得更好。
在本文中,注册镜像用作仓库名称,您可以猜到一些东西。请关注下一篇文章。
文章统一在云公众号。
更多推荐
所有评论(0)