簡體   English   中英

如何在 GitHub Action 上參數化機密

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM