在工作流程中使用密碼

已完成

執行工作流程時,不會自動將密碼傳遞至執行器。 若要讓秘密可供動作使用,您必須將秘密設定為工作流程檔案中的輸入或環境變數。 若要達成此目的,您可以使用秘密內容,如下列範例所示:

steps:

  - name: Test Database Connectivity
    with:
      db_username: ${{ secrets.DBUserName }}
      db_password: ${{ secrets.DBPassword }}

從命令列參考秘密

從命令列參考秘密時,您可以將它們視為殼層環境變數,如下列範例所示:

steps:

- shell: pwsh
  env:
    DB_PASSWORD: ${{ secrets.DBPassword }}
  run: |
    db_test "$env:DB_PASSWORD"

請務必遵循這種方法,以將意外暴露的風險降到最低。 可以使用 PowerShell 命令檢視從命令列在流程之間傳遞的秘密,並在安全性稽核記錄中擷取。

在 IF:條件中使用秘密

由於秘密不能在 IF:條件中直接參考,作爲因應措施,請考慮將秘密設定為作業層級環境變數,然後參考環境變數以有條件地在作業中執行步驟,如下列範例所示:

name: Run a step if a secret has been set
on: push
jobs:
  samplejob:
    runs-on: ubuntu-latest
    env:
      job_secret: ${{ secrets.JobSecret }}
    steps:
      - if: ${{ env.job_secret != '' }}
        run: echo 'the secret has a value set.'
      - if: ${{ env.job_secret == '' }}
        run: echo ' the secret does not have a value set.'

限制

工作流程最多可使用 100 個秘密,不論其位置為何。 秘密的大小限制為 48 KB。 若要使用大於 48 KB 的秘密,您可以使用因應措施將秘密儲存在存放庫中,並將解密複雜密碼儲存為 GitHub 上的秘密。 如需此流程的詳細資料,請參閱 GitHub 文件中 儲存大型秘密 主題。

請注意,除了 GITHUB_TOKEN 之外,從分支存放庫觸發工作流程時,不會將秘密傳遞至執行器。