【问题标题】:Difference between Github's "Environment" and "Repository" secrets?Github 的“环境”和“存储库”秘密之间的区别?
【发布时间】:2021-05-03 12:48:33
【问题描述】:

在 GitHub documentation 中,它指出机密的优先级从最低到最高(Environment > Repository > Organization),它还指出 Organization 机密可用于所有存储库该组织。但它没有说明任何关于 EnvironmentRepository 的秘密。

我的问题是:

  1. EnvironmentRepository 秘密之间有什么区别?
  2. 什么时候应该使用Environment 秘密?
  3. 我应该什么时候使用Repositorysecrets?

【问题讨论】:

    标签: github continuous-integration environment-variables continuous-deployment github-actions


    【解决方案1】:

    使用示例工作流添加到Holger Just's 答案。 GitHub docs 显示了在工作流中使用 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 特定的秘密之前 em> 使用存储库密码。

    【讨论】:

      【解决方案2】:

      嗯,环境机密特定于 Github Actions 中的 environment,它允许您在单个存储库中为作业运行不同的配置,例如先部署到暂存,然后再部署到生产。

      存储库机密特定于单个存储库(以及其中使用的所有环境),而组织机密特定于整个组织及其下的所有存储库。

      如果您有特定于环境的机密,则可以使用环境机密。

      如果您不确定,您也可以从所有内容的存储库机密开始。如果您稍后引入需要不同机密的不同环境,您可以将存储库机密移动到特定环境。由于继承链,这对作业应该是透明的。

      【讨论】:

      • 只是为了检查我是否正确理解了这一点,基本上如果我有 developmenttestproduction 的变量,我将为它们中的每一个创建一个 environment 并拥有唯一的变量那里,然后把公共变量放在repository变量中?
      • 是的,您可以这样使用它。请参阅环境文档以及相应的作业和工作流定义。
      • 当我不得不在 GitHub 上设置秘密时,我总是感到沮丧,直到今天看到你的回答。非常感谢!
      猜你喜欢
      • 2013-08-24
      • 2021-04-19
      • 2013-12-16
      • 1970-01-01
      • 2010-11-29
      • 2014-05-22
      • 2011-06-30
      • 2011-03-21
      • 1970-01-01
      相关资源
      最近更新 更多