Bitbucket Pipelines:提供部署环境的选择

问题描述 投票:0回答:4

我的任务是向开发人员提供手动触发的管道,为开发人员提供部署到哪个集成环境的选项。

例如,我们有 3 个名为“savanna”、“desert”和“jungle”的集成环境可供集成。我希望管道在初始步骤完成后停止,并为开发人员提供要部署的集成环境的选择。这样我们就可以独立于其他开发人员的工作来处理堆栈的不同方面并测试更改。

Bitbucket pipelines 可以实现这个功能吗?据我所知,Pipelines 仅适用于静态、上升环境的部署。我是不是错过了什么?

bitbucket-pipelines
4个回答
0
投票

您可以通过并行选择步骤并手动触发来完成“选择您的路径”管道。

但是,限制是它们之后不能有步骤,因为您需要完成所有并行步骤才能继续,并且您不能在步骤上使用 Bitbucket 部署,因为不允许并行部署,即使它们都是手动部署.

另一种方法是为每个选项执行自定义管道,他们选择在其环境中运行管道。


0
投票

这行不通 配置错误 并行步骤只能包含对单一环境类型的部署。将不同类型分成自己的平行组。

https://jira.atlassian.com/browse/BCLOUD-18754


0
投票

如果将所有环境放入一个环境组(测试、登台、生产之一)中,则可以做到这一点。 完成后,这是 bitbucket-pipelines.yml 的示例:

definitions:
  steps:
    - step: &build
        name: Build
        image: node:16.20.0
        script:
          - .ci/build.sh

pipelines:
  branches:
    master:
      - parallel:
          steps:
          - step: *build
          - step: 
              name: Deploy to develop
              image: amazon/aws-cli:2.15.15
              deployment: develop
              trigger: manual
              script:
                - .ci/deploy.sh --env develop
          - step: 
              name: Deploy to staging
              image: amazon/aws-cli:2.15.15
              deployment: staging
              trigger: manual
              script:
                - .ci/deploy.sh --env staging
          - step: 
              name: Deploy to prod
              image: amazon/aws-cli:2.15.15
              deployment: prod
              trigger: manual
              script:
                - .ci/deploy.sh --env prod

这里最重要的是第一步必须自动触发,然后所有 3 个按钮(部署到开发/暂存/生产)都将处于活动状态。这个自动步骤可以被构建,就像我的例子一样,或者一些打印一些文本的假的。


-1
投票

虽然有 3 个底层“静态、升序”环境类别,但您可以在这些类别中定义最多 50 个任意环境。请参阅https://bitbucket.org/blog/additional-deployment-environments-for-bitbucket-pipelines

但是

您不能在并行步骤中使用它们。 Bitbucket 产生此错误

配置错误

并行步骤只能包含对单一环境类型的部署。将不同类型分成自己的平行组。

正如 @Randommm 所解释的,Atlassian 错误地关闭了与此相关的任何问题,例如https://jira.atlassian.com/browse/BCLOUD-18754

仍然

如果您权衡多个功能,您可以“提供部署环境的选择”。即

  • 跟踪自定义环境的部署。也无需重新部署控件。
  • 在脚本中使用
    BITBUCKET_DEPLOYMENT_ENVIRONMENT
    变量或任何部署变量
  • 重用部署步骤,又名清晰的 bitbucket-pipelines.yml

请记住,如果您向临时环境提供并行手动部署,则除非触发所有步骤,否则无法继续管道。因此,我会将生产部署包含在最后的并行块中。

definitions:
  yaml-anchors:
    - &deploy-step
        script:
          - ./deploy.sh $BITBUCKET_DEPLOYMENT_ENVIRONMENT

pipelines:
  branches:
    main:
      - step:
          <<: *deploy-step
          name: Deploy Test
          deployment: test
          trigger: automatic

      - parallel:
        - step:
            name: Deploy Savanna
            # deployment: savanna  # don't
            trigger: manual
            script:
              - export CUSTOM_DEPLOY_VARS
              - ./deploy.sh savanna
        - step:
            name: Deploy Desert
            # deployment: desert  # don't
            trigger: manual
            script:
              - export CUSTOM_DEPLOY_VARS
              - ./deploy.sh desert
        - step:
            name: Deploy Jungle
            # deployment: jungle  # don't
            trigger: manual
            script:
              - export CUSTOM_DEPLOY_VARS
              - ./deploy.sh jungle
        - step:
            <<: *deploy-step
            name: Deploy Production
            deployment: production  # one is ok
            trigger: manual

这样就可以了

但是 bitbucket 不会承认此步骤是对环境的部署

© www.soinside.com 2019 - 2024. All rights reserved.