Github 的 "Environment" 和 "Repository" 秘密之间的区别?
Difference between Github's "Environment" and "Repository" secrets?
在GitHubdocumentation中表示secrets的优先级从低到高(Environment
>Repository
>Organization
),它还指出 Organization
机密可用于组织中的所有存储库。但它没有说明任何关于 Environment
和 Repository
的秘密。
我的问题是:
Environment
和 Repository
秘密有什么区别?
- 我什么时候应该使用
Environment
秘密?
- 我什么时候应该使用
Repository
机密?
好吧,环境机密特定于 Github 中的 environment 操作,允许您 运行 为单个存储库中的作业配置不同的配置,例如先部署到暂存区,然后再部署到生产环境。
存储库机密特定于单个存储库(以及其中使用的所有环境),而组织机密特定于整个组织及其下的所有存储库。
如果您有特定于环境的机密,则可以使用环境机密。
如果您不确定,您也可以从所有内容的存储库机密开始。如果您稍后引入需要不同秘密的不同环境,您可以将存储库秘密移动到特定环境。由于继承链,这对作业应该是透明的。
添加到工作流程中的 Holger Just's answer with an example workflow. The GitHub docs show an example when using the 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
dev-task:
runs-on: ubuntu-latest
environment: development
steps:
# uses development enviroment secrets over repository secrets
task:
runs-on: ubuntu-latest
steps:
# uses repository secrets as no environment is defined
所以想法是,当为 job
指定 environment
时,在 该作业中使用的任何秘密 将使用任何 environment
-specific secret before using the repository secret.
在GitHubdocumentation中表示secrets的优先级从低到高(Environment
>Repository
>Organization
),它还指出 Organization
机密可用于组织中的所有存储库。但它没有说明任何关于 Environment
和 Repository
的秘密。
我的问题是:
Environment
和Repository
秘密有什么区别?- 我什么时候应该使用
Environment
秘密? - 我什么时候应该使用
Repository
机密?
好吧,环境机密特定于 Github 中的 environment 操作,允许您 运行 为单个存储库中的作业配置不同的配置,例如先部署到暂存区,然后再部署到生产环境。
存储库机密特定于单个存储库(以及其中使用的所有环境),而组织机密特定于整个组织及其下的所有存储库。
如果您有特定于环境的机密,则可以使用环境机密。
如果您不确定,您也可以从所有内容的存储库机密开始。如果您稍后引入需要不同秘密的不同环境,您可以将存储库秘密移动到特定环境。由于继承链,这对作业应该是透明的。
添加到工作流程中的 Holger Just's answer with an example workflow. The GitHub docs show an example when using the 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
dev-task:
runs-on: ubuntu-latest
environment: development
steps:
# uses development enviroment secrets over repository secrets
task:
runs-on: ubuntu-latest
steps:
# uses repository secrets as no environment is defined
所以想法是,当为 job
指定 environment
时,在 该作业中使用的任何秘密 将使用任何 environment
-specific secret before using the repository secret.