chore(CD workflow): 改用 Actions secrets 與 vars 注入倉庫認證
This commit is contained in:
+14
-16
@@ -3,8 +3,9 @@
|
|||||||
# 當有 commit push 到 master 分支時觸發,流程分兩個 job 依序執行:
|
# 當有 commit push 到 master 分支時觸發,流程分兩個 job 依序執行:
|
||||||
# 1. release-tag-version:釋出並標註成品版本,取得版本號。
|
# 1. release-tag-version:釋出並標註成品版本,取得版本號。
|
||||||
# 2. docker-build-push:依上一步取得的版本號 docker build 映像檔,
|
# 2. docker-build-push:依上一步取得的版本號 docker build 映像檔,
|
||||||
# 並 push 到 gitea.jsc.idv.tw 倉庫。
|
# 並 push 到倉庫;倉庫主機由 vars.SERVER_DOMAIN 提供,
|
||||||
# 更新日期:2026/06/30 12:00:23
|
# 登入帳密由 secrets.USERNAME / secrets.PASSWORD 提供。
|
||||||
|
# 更新日期:2026/06/30 12:24:01
|
||||||
# =============================================================================
|
# =============================================================================
|
||||||
|
|
||||||
# workflow 名稱,會顯示在 Gitea Actions 介面上,方便辨識此流程
|
# workflow 名稱,會顯示在 Gitea Actions 介面上,方便辨識此流程
|
||||||
@@ -48,14 +49,6 @@ jobs:
|
|||||||
# 宣告此 job 相依於 release-tag-version;
|
# 宣告此 job 相依於 release-tag-version;
|
||||||
# 確保版本號先產生完成才執行,並可透過 needs 取得其 outputs
|
# 確保版本號先產生完成才執行,並可透過 needs 取得其 outputs
|
||||||
needs: release-tag-version
|
needs: release-tag-version
|
||||||
# 此 job 範圍內的環境變數,供下方 steps 的 run 指令使用
|
|
||||||
env:
|
|
||||||
# 目標倉庫主機(Gitea container registry 位址)
|
|
||||||
SERVER: gitea.jsc.idv.tw
|
|
||||||
# 登入倉庫所使用的帳號
|
|
||||||
USERNAME: jiantw83
|
|
||||||
# 登入倉庫所使用的密碼/權杖,從 Gitea secrets 取得,避免明文外洩
|
|
||||||
PASSWORD: ${{ secrets.TOKEN }}
|
|
||||||
# 此 job 的執行步驟清單
|
# 此 job 的執行步驟清單
|
||||||
steps:
|
steps:
|
||||||
# 步驟:取出原始碼到 runner 工作目錄,後續 docker build 需要 Dockerfile 等檔案
|
# 步驟:取出原始碼到 runner 工作目錄,後續 docker build 需要 Dockerfile 等檔案
|
||||||
@@ -64,20 +57,25 @@ jobs:
|
|||||||
uses: actions/checkout@${{ vars.ACTION_CHECKOUT_VERSION }}
|
uses: actions/checkout@${{ vars.ACTION_CHECKOUT_VERSION }}
|
||||||
# 步驟:登入 Docker 倉庫,取得推送映像檔的權限
|
# 步驟:登入 Docker 倉庫,取得推送映像檔的權限
|
||||||
- name: 登入倉庫
|
- name: 登入倉庫
|
||||||
# 將密碼透過管線餵給 docker login 的 --password-stdin,避免密碼出現在指令參數中
|
# 登入指令直接以表達式注入認證資訊:
|
||||||
run: echo $PASSWORD | docker login $SERVER -u $USERNAME --password-stdin
|
# secrets.PASSWORD 為倉庫密碼、vars.SERVER_DOMAIN 為倉庫主機位址、
|
||||||
|
# secrets.USERNAME 為登入帳號;
|
||||||
|
# 密碼透過管線餵給 docker login 的 --password-stdin,
|
||||||
|
# 避免密碼出現在指令參數中而被記錄於 log
|
||||||
|
run: echo ${{ secrets.PASSWORD }} | docker login ${{ vars.SERVER_DOMAIN }} -u ${{ secrets.USERNAME }} --password-stdin
|
||||||
# 指定以 bash 執行此指令
|
# 指定以 bash 執行此指令
|
||||||
shell: bash
|
shell: bash
|
||||||
# 步驟:建置 Docker 映像檔
|
# 步驟:建置 Docker 映像檔
|
||||||
- name: 建置映像檔
|
- name: 建置映像檔
|
||||||
# 以倉庫名稱(gitea.repository)為 image 名稱、上一個 job 產生的 version 為 tag,
|
# image 名稱由 vars.SERVER_DOMAIN(倉庫主機)與 gitea.repository(倉庫名稱)組成、
|
||||||
|
# 以 needs.release-tag-version.outputs.version(上一個 job 產生的版本號)為 tag,
|
||||||
# 對當前目錄(.)的 Dockerfile 進行 build
|
# 對當前目錄(.)的 Dockerfile 進行 build
|
||||||
run: docker build -t $SERVER/${{ gitea.repository }}:${{ needs.release-tag-version.outputs.version }} .
|
run: docker build -t ${{ vars.SERVER_DOMAIN }}/${{ gitea.repository }}:${{ needs.release-tag-version.outputs.version }} .
|
||||||
# 指定以 bash 執行此指令
|
# 指定以 bash 執行此指令
|
||||||
shell: bash
|
shell: bash
|
||||||
# 步驟:將建置完成的映像檔推送到倉庫
|
# 步驟:將建置完成的映像檔推送到倉庫
|
||||||
- name: 推送映像檔
|
- name: 推送映像檔
|
||||||
# push 與上一步相同名稱與 tag 的映像檔到 SERVER 指定的倉庫
|
# push 與上一步相同名稱與 tag 的映像檔到 vars.SERVER_DOMAIN 指定的倉庫主機
|
||||||
run: docker push $SERVER/${{ gitea.repository }}:${{ needs.release-tag-version.outputs.version }}
|
run: docker push ${{ vars.SERVER_DOMAIN }}/${{ gitea.repository }}:${{ needs.release-tag-version.outputs.version }}
|
||||||
# 指定以 bash 執行此指令
|
# 指定以 bash 執行此指令
|
||||||
shell: bash
|
shell: bash
|
||||||
|
|||||||
Reference in New Issue
Block a user