[英]How to parameterize secrets on GitHub Action
我們在存儲庫 (dev/prd) 中有兩個分支,每個分支代表一個部署環境。 我們還有每個分支的 GitHub 操作秘密,在 dev 分支中應該是 dev_react_api,在 prd 分支中應該是 prd_react_api。
現在我們正在使用這些秘密secrets.dev_react_api 和secrets.prd_react_api 處理GitHub 操作工作流
是否有解決方案來參數化 GitHub 操作機密,如下所示?
# only pseudo-code
env:
branch_name: github.ref
secrets["${env.branch_name}_react_api"]
您可以為此使用環境機密。
首先轉到:設置 -> 環境 -> 新環境
創建一個新環境並確保您的環境名稱與您的分支名稱匹配
現在您可以創建任何您想要的環境機密,現在的訣竅是,您需要兩個文件來使用環境機密。 第一個是 main.yml,第二個是你的(例如) deploy.yml
on:
push:
branches:
- main
- staging
- development
permissions: write-all
jobs:
deploy:
uses: ./.github/workflows/deploy.yml
with:
environment: ${{ github.ref_name }}
secrets:
AWS_S3_BUCKET: ${{ secrets.AWS_S3_BUCKET }}
使用環境的第二個文件:
name: Deployment
on:
workflow_call:
inputs:
environment:
required: true
type: string
secrets:
AWS_S3_BUCKET:
required: true
jobs:
deploy:
name: Deploy
environment: ${{ github.ref_name }}
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@master
- uses: jakejarvis/s3-sync-action@master
name: Deploy to S3
env:
AWS_S3_BUCKET: ${{ secrets.AWS_S3_BUCKET }}
with:
args: --acl public-read --follow-symlinks --delete
現在您可以使用不同的參數創建任意數量的環境!
有關更多詳細信息,請參閱: https ://github.com/olivatooo/github-actions-build-deploy-with-staging-production-environment/
它應該與您使用動態名稱顯示的完全一樣。 secrets
只是一個變量,您可以顯式提供密鑰名稱secrets.x
隱式secrets['x']
。 動態地構建你的密鑰就可以了。 額外的 env branch_name
也不需要,因為您可以直接在字符串中獲取該值。
如果您有付費的 GitHub 計划或正在使用公共存儲庫,您還可以查看Environments ,它通過定義兩個單獨的環境來完全解決這個問題,每個環境都具有所需的秘密。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.