Gitlab CI/CD 之上傳 Docker Hub 自動掛載版號

2023/12/10閱讀時間約 5 分鐘
raw-image

前言

上次我們教到如何使用 Gitlab CI/CD 自動打包 Docker Image,並自動上傳 Docker Image 到 Docker Hub 存放我們的 Image,今天我們要再做一件事情,也就是當我們上傳 Image 時,除的上傳自動最新 Image,還要自動掛載版號

jq 工具使用

為了在每次上傳 Docker Image 時,我們必須要有個工具,可以讓獲取版號,於是在這裡我們使用 jq 這個工具,他可以幫助我們解析 json 檔的物件,並獲取物件內容,在文章的最底下我們會提供 jq 工具官網,把他安裝到 gitlab-runner 裡面

jq 工具安裝

由於我們之前安裝 Gitlab 與 Gitlab-Runner 是使用 Docker 運行起,接下來我們要把 jq 裝進 Gitlab-Runner 這個 Image 裡面,我們先查看我們 Gitlab-Runner Container 的 Id

CONTAINER ID   IMAGE                         COMMAND                  CREATED       STATUS                                 PORTS                                                                                                         NAMES
58358535d98d gitlab/gitlab-ce:latest "/assets/wrapper" 4 days ago Up About a minute (health: starting) 0.0.0.0:22->22/tcp, :::22->22/tcp, 0.0.0.0:80->80/tcp, :::80->80/tcp, 0.0.0.0:443->443/tcp, :::443->443/tcp gitlab-ce
4cb49c53cf78 gitlab/gitlab-runner:latest "/usr/bin/dumb-init …" 3 weeks ago Up About a minute gitlab_runner

接下來我們進入 gitlab-runner 容器裡面,輸入以下指令

docker exec -it 4cb49c53cf78 bash

再來我們開始安裝 jq 工具

apt-get update
apt-get install jq

上傳 Docker Image 並掛載版號

首先我們需要有一個可以管理版號的 json 文件,我們使用上次為大家提供的 DotNetCoreWebApiCiAndCdCourse 專案,並使用 npm 來生成管理版號文件,如果你會使用 yarn 也是可以,輸入以下指令

npm init -y

yarn init -y

接下來我們修改 Gitlab CI/CD 文件

image: mcr.microsoft.com/dotnet/sdk:6.0

stages:
- build

build-docker-development:
stage: build
tags:
- shell
before_script:
- echo $DOCKER_REGISTRY_PASSWORD | docker login -u $DOCKER_REGISTRY_USERNAME --password-stdin
- export IMAGE_VERSION=$(cat ./package.json | jq -r .version)
script:
- docker build -t $DOCKER_REGISTRY_USERNAME/dotnetcorewebapiciandcdcourse:latest .
- docker push $DOCKER_REGISTRY_USERNAME/dotnetcorewebapiciandcdcourse:latest
- docker build -t $DOCKER_REGISTRY_USERNAME/dotnetcorewebapiciandcdcourse:$IMAGE_VERSION .
- docker push $DOCKER_REGISTRY_USERNAME/dotnetcorewebapiciandcdcourse:$IMAGE_VERSION

最後我們上傳到我們的 Gitlab 伺服器運作 CI/CD 查看結果,可以看到我們 CI/CD 運作成功,並將我們 Docker Image 上傳到 Docker Hub

raw-image

而在 Docker Hub 也可以看到我們有特別掛載版號的 Image

raw-image

相關文獻

jq 工具官網

10會員
48內容數
d3.js 圖形
留言0
查看全部
發表第一個留言支持創作者!