当前位置: 首页 > news >正文

极狐GitLab CI/CD 如何构建镜像并推送到 azure 镜像仓库?

极狐GitLab 是 GitLab 在中国的发行版,专门面向中国程序员和企业提供企业级一体化 DevOps 平台,用来帮助用户实现需求管理、源代码托管、CI/CD、安全合规,而且所有的操作都是在一个平台上进行,省事省心省钱。可以一键安装极狐GitLab,详情可以参考极狐GitLab 下载安装官网。

GitLab 中文版学习资料

  • 驭码CodeRider 官网:https://coderider.gitlab.cn/
  • GitLab 中文版官网:https://gitlab.cn
  • GitLab 中文文档:https://docs.gitlab.cn
  • GitLab 中文下载安装:https://gitlab.cn/install

azure 有自己的容器镜像仓库服务 acr(azure container registry)。用户可以构建容器镜像之后推送到 acr 中。当然,还可以直接借助极狐GitLab CI/CD 实现容器镜像构建和推送的自动化。下面演示如何使用极狐GitLab CI/CD 构建容器镜像并自动推送到 acr 中。

创建 ACR 服务


首先,需要在 azure 上创建一个 acr 服务。创建成功之后,可以看到对应的信息:

在这里插入图片描述

镜像仓库的登录地址为jihugitlab.azurecr.cn。点击页面上的 Push an Image 可以看到右侧的登录方法:

az acr login --name JiHuGitLab
Uppercase characters are detected in the registry name. When using its server url in docker commands, to avoid authentication errors, use all lowercase.
Login Succeeded

之后就可以使用 docker pull、push等命令了:

docker pull mcr.microsoft.com/mcr/hello-world
docker tag mcr.microsoft.com/mcr/hello-world jihugitlab.azurecr.cn/samples/hello-world

如果要使用 docker login的方式登录 acr,需要在 Access Key 中找到对应的用户名和密码:

在这里插入图片描述

同样可以登录成功:

docker login jihugitlab.azurecr.cn
Username: JiHuGitLab
Password:
WARNING! Your password will be stored unencrypted in /root/.docker/config.json.
Configure a credential helper to remove this warning. See
https://docs.docker.com/engine/reference/commandline/login/#credentials-storeLogin Succeeded

和极狐GitLab CI/CD 集成


一般来讲,在极狐GitLab CI/CD 中构建容器镜像的 .gitlab-ci.yml文件内容如下:
build:image: docker:lateststage: buildservices:- docker:20.10.7-dindscript:- docker login -u "$CI_REGISTRY_USER" -p "$CI_REGISTRY_PASSWORD" $CI_REGISTRY- docker build -t $CI_REGISTRY_IMAGE:1.0.0 .- docker push $CI_REGISTRY_IMAGE:1.0.0

只需要将环境变量 CI_REGISTRY_USERCI_REGISTRY_PASSWORDCI_REGISTRY修改为 acr 中的数值即可。也就是将这些变量都以环境变量的形式存储到极狐GitLab CI/CD 变量中(项目 --> 设置 --> CI/CD --> 变量):

在这里插入图片描述

因此,.gitlab-ci.yml文件中的内容如下:

build:image: docker:lateststage: buildservices:- docker:20.10.7-dindtags:- gitlabscript:- docker login -u "$ACR_REGISTRY_USER" -p "$ACR_REGISTRY_PASSWORD" $ACR_REGISTRY- docker build -t $ACR_REGISTRY_IMAGE:1.0.0 .- docker push $ACR_REGISTRY_IMAGE:1.0.0

出发 CI/CD 流水线之后,可以查看构建结果:

在这里插入图片描述

镜像构建成功,并且推送到了 acr 中,可以在 acr 中查看。在 acr 的 repositories 中看到推送成功的镜像:

在这里插入图片描述

高阶体验,用 CI/CD Component 简化构建过程


为了提高 CI/CD 流水线的复用性、易用性,极狐GitLab 从 16.0 引入了 component 功能,16.1 引入了 catalog 功能。对于这两个功能的详细介绍可以参考过往的技术文章极狐GitLab CI/CD Component & Catalog 功能揭秘。


对于上面的流程,可以采用直接引用 component 的方式来简化 CI/CD 流水线的构建。在极狐GitLab SaaS(JihuLab.com)上点击搜索或转到 --> 探索 --> CI/CD 目录,可以看到已经发布的 CI/CD Component:

在这里插入图片描述

第一个 docker-image-build就是构建容器镜像,并将其推送到镜像仓库的 component:

在这里插入图片描述

Component 的实际内容如下:

spec:inputs:stage:default: testimage:default: docker:20.10.7-dindimage_tag:default: 1.0.0tags:default: jh-gitlab---
component-job-build-image:image: $[[ inputs.image ]]stage: $[[ inputs.stage ]]tags:- $[[ inputs.tags ]]script:- docker login -u "$ACR_REGISTRY_USER" -p "$ACR_REGISTRY_PASSWORD" $ACR_REGISTRY- docker build -t $ACR_REGISTRY_IMAGE:$[[ inputs.image_tag ]] .- docker push $ACR_REGISTRY_IMAGE:$[[ inputs.image_tag ]]

在项目中的引用方式为:

include:  - component: jihulab.com/jh-xiaomage-devops/docker-image-build/docker-image-build@5.0.0inputs:      stage: build      image: docker:20.10.7-dind      tags: gitlabimage_tag: 2.0.0

然后触发流水线,直接查看构建结果:

在这里插入图片描述

然后在 acr 上查看 tag 为 2.0.0 的镜像是否被推送过去:

在这里插入图片描述

2.0.0的镜像已经存在于 acr 中了,说明引用 component 将镜像构建并推送成功。

http://www.lryc.cn/news/424322.html

相关文章:

  • Leetcode—1143. 最长公共子序列【中等】
  • ZBrush笔刷介绍
  • React+AntDesign做一个日历,展示节假日,节气,并且在某几个时间上添加活动备注
  • 排序算法之梳排序
  • ESP8266 创建TCP连接
  • OceanBase内存管理小窍门
  • 【问题解决】git status中文文件名乱码
  • 探索数据结构:AVL树的分析与实现
  • 使用 C++ 实现简单的插件系统
  • 使用Python创建省份城市地图选择器
  • 【Java 数据结构】Stack和Queue介绍
  • Docker基本语法
  • uniapp 对于scroll-view滑动和页面滑动的联动处理
  • opencv基础的图像操作
  • Java | Leetcode Java题解之第337题打家劫舍III
  • 本地查看的Git远程仓库分支与远程仓库分支数量不一致
  • opencv-python实战项目九:基于拉普拉斯金字塔的图像融合
  • 浅谈JDK
  • 爬虫案例3——爬取彩票双色球数据
  • C++ | Leetcode C++题解之第337题打家劫舍III
  • 软件架构设计师-UML知识导图
  • 在使用transformers和pytorch时出现的版本冲突的问题
  • uniapp粘贴板地址识别
  • C语言 | Leetcode C语言题解之第335题路径交叉
  • TypeScript学习第十三篇 - 泛型
  • 工业智能网关在汽车制造企业的应用价值及功能-天拓四方
  • LLM - 在服务器中使用 Ollama + OpenWebUI 部署最新大模型
  • 重启人生计划-积蓄星火
  • 2024.08.11 校招 实习 内推 面经
  • LCA(Lowest Common Ancestor)