From 5383c6884dfcc84c2aeba6a440d749d3033c113b Mon Sep 17 00:00:00 2001 From: Jeffery Date: Tue, 30 Jun 2026 12:31:18 +0800 Subject: [PATCH] =?UTF-8?q?chore(CD=20workflow):=20=E6=94=B9=E7=94=A8=20Ac?= =?UTF-8?q?tions=20secrets=20=E8=88=87=20vars=20=E6=B3=A8=E5=85=A5?= =?UTF-8?q?=E5=80=89=E5=BA=AB=E8=AA=8D=E8=AD=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitea/workflows/cd.yaml | 30 ++++++++++++++---------------- 1 file changed, 14 insertions(+), 16 deletions(-) diff --git a/.gitea/workflows/cd.yaml b/.gitea/workflows/cd.yaml index ebd54c7..c628ad2 100644 --- a/.gitea/workflows/cd.yaml +++ b/.gitea/workflows/cd.yaml @@ -3,8 +3,9 @@ # 當有 commit push 到 master 分支時觸發,流程分兩個 job 依序執行: # 1. release-tag-version:釋出並標註成品版本,取得版本號。 # 2. docker-build-push:依上一步取得的版本號 docker build 映像檔, -# 並 push 到 gitea.jsc.idv.tw 倉庫。 -# 更新日期:2026/06/30 12:00:23 +# 並 push 到倉庫;倉庫主機由 vars.SERVER_DOMAIN 提供, +# 登入帳密由 secrets.USERNAME / secrets.PASSWORD 提供。 +# 更新日期:2026/06/30 12:24:01 # ============================================================================= # workflow 名稱,會顯示在 Gitea Actions 介面上,方便辨識此流程 @@ -48,14 +49,6 @@ jobs: # 宣告此 job 相依於 release-tag-version; # 確保版本號先產生完成才執行,並可透過 needs 取得其 outputs needs: release-tag-version - # 此 job 範圍內的環境變數,供下方 steps 的 run 指令使用 - env: - # 目標倉庫主機(Gitea container registry 位址) - SERVER: gitea.jsc.idv.tw - # 登入倉庫所使用的帳號 - USERNAME: jiantw83 - # 登入倉庫所使用的密碼/權杖,從 Gitea secrets 取得,避免明文外洩 - PASSWORD: ${{ secrets.TOKEN }} # 此 job 的執行步驟清單 steps: # 步驟:取出原始碼到 runner 工作目錄,後續 docker build 需要 Dockerfile 等檔案 @@ -64,20 +57,25 @@ jobs: uses: actions/checkout@${{ vars.ACTION_CHECKOUT_VERSION }} # 步驟:登入 Docker 倉庫,取得推送映像檔的權限 - 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 執行此指令 shell: bash # 步驟:建置 Docker 映像檔 - name: 建置映像檔 - # 以倉庫名稱(gitea.repository)為 image 名稱、上一個 job 產生的 version 為 tag, + # image 名稱由 vars.SERVER_DOMAIN(倉庫主機)與 gitea.repository(倉庫名稱)組成、 + # 以 needs.release-tag-version.outputs.version(上一個 job 產生的版本號)為 tag, # 對當前目錄(.)的 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 執行此指令 shell: bash # 步驟:將建置完成的映像檔推送到倉庫 - name: 推送映像檔 - # push 與上一步相同名稱與 tag 的映像檔到 SERVER 指定的倉庫 - run: docker push $SERVER/${{ gitea.repository }}:${{ needs.release-tag-version.outputs.version }} + # push 與上一步相同名稱與 tag 的映像檔到 vars.SERVER_DOMAIN 指定的倉庫主機 + run: docker push ${{ vars.SERVER_DOMAIN }}/${{ gitea.repository }}:${{ needs.release-tag-version.outputs.version }} # 指定以 bash 執行此指令 shell: bash