在github上使用workflow構建docker鏡像並推送阿里雲

本篇文章將會簡單講解如何使用github Actions功能構建workflow並且打包java程序docker鏡像,最後推送到阿里免費的docker鏡像倉庫中。

一、註冊阿里雲賬號,使用容器鏡像服務

註冊阿里雲賬號完成之後,在dashboard中搜索“容器鏡像服務”關鍵字

image-20210513095921439

打開該頁面,默認頁面是這樣

image-20210513100222305

個人版是免費的,點進去

image-20210513100348822

根據官網描述,可以免費創建3個命名空間和300個鏡像倉庫,對於個人開發者而言,這絕對是足夠用的。

點擊“訪問憑證”按鈕,設置固定密碼

image-20210513100541072

記住賬號密碼待會兒會在github中用到。接下來創建命名空間。

image-20210513100823889

自動創建倉庫選項:當開啓自動創建後,可以在控制檯倉庫不存在的情況下,直接推送,系統會自動創建對應的倉庫。

默認倉庫類型:命名空間可以選擇公開或者私有,當你開啓“自動創建倉庫”功能時,這個配置纔有作用。這個配置將決定系統幫你創建的倉庫默認是公開還是私有。

最後一步:創建倉庫,這一步很重要,要特別注意

image-20210513101222122

在這一步中會確定下來倉庫的類型是公開還是私有,填完相關信息點擊下一步進入“代碼源”頁面,這裏使用的是github,所以要先進行github授權,授權完成後選定github對應的項目,最後取消“代碼變更自動構建鏡像”選項框,勾選“海外機器構建”選項框(因爲github在海外,如果不選擇這個,我嘗試了下,推送鏡像的時候會非常慢)。

image-20210513102008506

這樣,就完成了阿里雲上相關的設置。

我用以上步驟創建了"xxl-job-admin"公開的鏡像倉庫

image-20210513102251867

二、github創建workflow

https://github.com/kdyzm/xxl-job 這個項目是我克隆的xxljob的官方項目,基於2.3.0版本修改了些東西最終新增了2.4.1版本,相關的修改可以參考我之前的文章:xxl-job濫用netty導致的問題和解決方案。我計劃打包docker鏡像並且以容器方式運行,所以第一步,就是要將程序打包並且構建docker鏡像,最終推送阿里雲。

1.創建workflow

在項目根目錄創建.github目錄,然後在裏面創建workflows子目錄,子目錄中創建docker-image.yml文件,文件內容如下

name: Docker Image CI
on:
  workflow_dispatch:
jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v2
      - name: Set up JDK 1.8
        uses: actions/setup-java@v1
        with:
          java-version: 1.8
      - name: Build with Maven
        run: mvn clean package -DskipTests

      - name: Build the Docker image
        run: |
          docker version
          # 登錄阿里雲鏡像倉庫
          docker login --username=${{ secrets.DOCKER_USERNAME }} --password=${{ secrets.DOCKER_PASSWORD }} registry.cn-hangzhou.aliyuncs.com
          cd xxl-job-admin
          # 使用Dockerfile構建鏡像
          docker build . --file Dockerfile --tag registry.cn-hangzhou.aliyuncs.com/kdyzm/xxl-job-admin:2.4.1
          # 推送鏡像到鏡像倉庫
          docker push registry.cn-hangzhou.aliyuncs.com/kdyzm/xxl-job-admin:2.4.1

其中有兩個環境變量secrets.DOCKER_USERNAMEsecrets.DOCKER_PASSWORD,之前提到的賬號密碼,需要在運行workflow之前就設置好。設置方式如下

image-20210513103140213

2.運行workflow

點擊項目的Actions按鈕,選中對應的workflow,並運行即可

image-20210513103340902

點進去可以看到具體的構建日誌

image-20210513103431467

構建完成之後返回阿里雲控制檯

image-20210513103552472

可以看到鏡像已經推送成功。

點擊基本信息可以看到阿里貼心的小提示:如何拉取鏡像和推送鏡像

image-20210513103839100

以我的鏡像爲例,只需要docker pull registry.cn-hangzhou.aliyuncs.com/kdyzm/xxl-job-admin:2.4.1即可拉取鏡像

參考文檔

《使用github actions實現自動將鏡像推送到自己的鏡像倉庫》

《GitHub Actions 手動觸發方式進化史》

《GitHub Actions: Manual triggers with workflow_dispatch》

https://docs.github.com/en/actions/reference/events-that-trigger-workflows#workflow_dispatch

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章