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