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

前言

上次我們教到如何使用 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

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

相關文獻

jq 工具官網

留言

此網誌的熱門文章

Docker 之建立與使用 Docker Image 清理本地 Image

Docker 之建立與使用 Docker Image 雲端下載

Docker 之如何安裝 Docker 容器