Ada*_*dam 15 continuous-integration github environment-variables continuous-deployment github-actions
在 GitHub文档中,它指出机密的优先级从低到高 ( Environment> Repository> Organization),它还指出Organization机密可用于组织中的所有存储库。但它没有说明任何关于Environment和Repository秘密的东西。
我的问题是:
Environment和Repositorysecret和有什么不一样?Environment什么时候应该使用秘密?Repository什么时候应该使用秘密?Hol*_*ust 18
好吧,环境机密特定于 Github Actions 中的环境,它允许您在单个存储库中为作业运行不同的配置,例如先部署到暂存,然后再部署到生产。
存储库机密特定于单个存储库(以及其中使用的所有环境),而组织机密特定于整个组织及其下的所有存储库。
如果您有特定于环境的机密,则可以使用环境机密。
如果您不确定,您也可以从所有内容的存储库机密开始。如果您稍后引入需要不同机密的不同环境,则可以将存储库机密移动到特定环境。由于继承链,这应该对作业透明。
Nic*_*yme 10
通过示例工作流程添加到Holger Just 的答案中。GitHub文档jobs.<job_id>.environment显示了在工作流程中使用该选项时的示例,但我认为这是一个更合适的示例。
name: Some task
on:
push:
branches:
- main
jobs:
prod-task:
runs-on: ubuntu-latest
environment: production
steps:
# uses production enviroment secrets over repository secrets
- name: Run node build process
run: "NODE_ENV=${{ env.NODE_ENV }} npm run build"
dev-task:
runs-on: ubuntu-latest
environment: development
steps:
# uses development enviroment secrets over repository secrets
- name: Run node build process
run: "NODE_ENV=${{ env.NODE_ENV }} npm run build"
task:
runs-on: ubuntu-latest
steps:
# uses repository secrets as no environment is defined
- name: Run node build process
run: "NODE_ENV=${{ env.NODE_ENV }} npm run build"
Run Code Online (Sandbox Code Playgroud)
因此,我们的想法是,当environment为 a 指定an 时,该作业中job使用的任何机密都将在使用存储库机密之前使用任何特定的机密。environment
要设置环境机密,请导航至“环境”部分下的存储库设置(即https://github.com/<owner>/<repo>/settings/environments)。创建或选择环境。然后添加您需要的任何秘密,请参见下面的屏幕截图。确保在访问它的所有必需环境中提供秘密,否则该值将从父env范围继承或可能返回''。
| 归档时间: |
|
| 查看次数: |
1762 次 |
| 最近记录: |