Automation 如何安全地设置连续交付?

Automation 如何安全地设置连续交付?,automation,travis-ci,circleci,continuous-delivery,semaphore-ci,Automation,Travis Ci,Circleci,Continuous Delivery,Semaphore Ci,设置: 私有主回购协议,每个开发者都有自己的私有分支 目前正在使用CircleCI,但我们很乐意切换以满足需求 主回购上的分支机构受合并限制的保护 要求: 对分叉拉动请求进行构建+测试 基于主回购分支更新部署到不同的环境 并非所有开发人员都可以完全信任生产凭据 部分解决方案: 启用在分叉拉取请求上生成和传递机密() 使用CircleCI上下文设置每个分支的环境变量。这允许不同的部署目标 问题: 所有回购协议特定的秘密以及所有全球上下文现在都可以由任何可以打开PR的人访问 即使我们禁

设置:

  • 私有主回购协议,每个开发者都有自己的私有分支
  • 目前正在使用CircleCI,但我们很乐意切换以满足需求
  • 主回购上的分支机构受合并限制的保护
要求:

  • 对分叉拉动请求进行构建+测试
  • 基于主回购分支更新部署到不同的环境
  • 并非所有开发人员都可以完全信任生产凭据
部分解决方案:

  • 启用在分叉拉取请求上生成和传递机密()
  • 使用CircleCI上下文设置每个分支的环境变量。这允许不同的部署目标
问题:

  • 所有回购协议特定的秘密以及所有全球上下文现在都可以由任何可以打开PR的人访问
  • 即使我们禁用基于分叉拉请求的构建,对至少一个repo具有写访问权限的任何人都可以访问所有全局上下文
问题:

  • 这似乎是一个非常常见的用例。其他公司如何解决这个问题
  • CircleCI不是用于此的正确工具吗?-不,不是(见下文)
  • 我们应该构建一个定制的解决方案吗

Edit1:

CircleCI回复我,令人惊讶的是,这不是他们支持的用例。现在正在调查其他供应商。以上问题仍然没有答案


Edit2:

我还联系了TravisCi和SemaphoreCi,似乎只有TravisCi支持构建分叉PRs,并且不向它们泄露秘密()

SempahoreCi缺少(1)构建分叉PRs和(2)在非主工作流中隐藏部署阶段的秘密

CircleCi有,但需要手动更改工作流。设置起来肯定不容易,我也不完全理解它们是如何工作的