寻找 Gitlab 功能作为 Circle CI 上下文

Looking for Gitlab feature as Circle CI context

在 Circle CI 中,context 可以让我为相同的变量设置不同的值。

比如我设置了devprod两个环境,在每个环境中,我都设置了几个变量

AWS_ACCESS_KEY_ID
AWS_SECRET_ACCESS_KEY
AWS_DEFAULT_REGION

由于我的环境在不同的 aws 账户中,我可以为它们提供不同的值。

其次,我可以设置权限,开发人员只能访问 dev 上下文,支持团队只能访问 prod 上下文。

但是我在 Gitlab 中没有得到相同的功能 CI。

在他们的一份文档中,它提到了 Group,但在我检查之后,它根本没有按预期工作。

https://docs.gitlab.com/ee/ci/migration/circleci.html#contexts-and-variables

Contexts and variables CircleCI provides Contexts to securely pass environment variables across project pipelines. In GitLab, a Group can be created to assemble related projects together. At the group level, CI/CD variables can be stored outside the individual projects, and securely passed into pipelines across multiple projects.

有什么方法可以在 Gitlab 中做到这一点 CI?

Circli中context的用法示例CI供大家参考

version: 2.1

workflows:
  staging-workflow:
    jobs:
      - staging-build:
          context:
            - staging

  prod-workflow:
    jobs:
      - prod-build:
          context:
            - prod

我认为你可以通过使用 gitlabs schedules 来实现类似的东西。

只需创建两个包含您要传递的变量的计划。

更新您的 ci 脚本以引用这些变量。

然后每个时间表可以由各自的各方拥有。

您还可以根据环境按组限制变量。因此,如果您有一个开发环境 - 可以限制变量,并且可以限制生产环境的变量。希望这有帮助。

最后我用 Gitlab CI enviroments

解决了这个问题
  1. 设置环境 StagingProduciton 当它要求 url 时,忽略这个问题,输入任何你喜欢的 url,我只输入 http://example.com .

仍然不确定我需要输入的正确 url。

  1. 更新 cicd 中的变量,默认为全部,将其更改为暂存或生产。

设置 -> CICD -> 变量 -> 展开

在截图中,我设置了两次变量AWS_ACCESS_KEY_ID,但分配到不同的环境。

(注意:AWS_ACCESS_KEY_ID不需要屏蔽,但AWS_SECRET_ACCESS_KEY应该屏蔽)

  1. 更新您的管道以使用环境。

上面的gitlab ci环境文档又把我搞糊涂了。 您不必提供url,只需添加环境名称即可。

staging_deploy:
  stage: deploy
  environment:
    name: staging
  when: manual
  script:
    - echo "staging deployment"