我的任务是向开发人员提供手动触发的管道,为开发人员提供部署到哪个集成环境的选项。
例如,我们有 3 个名为“savanna”、“desert”和“jungle”的集成环境可供集成。我希望管道在初始步骤完成后停止,并为开发人员提供要部署的集成环境的选择。这样我们就可以独立于其他开发人员的工作来处理堆栈的不同方面并测试更改。
Bitbucket pipelines 可以实现这个功能吗?据我所知,Pipelines 仅适用于静态、上升环境的部署。我是不是错过了什么?
您可以通过并行选择步骤并手动触发来完成“选择您的路径”管道。
但是,限制是它们之后不能有步骤,因为您需要完成所有并行步骤才能继续,并且您不能在步骤上使用 Bitbucket 部署,因为不允许并行部署,即使它们都是手动部署.
另一种方法是为每个选项执行自定义管道,他们选择在其环境中运行管道。
这行不通 配置错误 并行步骤只能包含对单一环境类型的部署。将不同类型分成自己的平行组。
如果将所有环境放入一个环境组(测试、登台、生产之一)中,则可以做到这一点。 完成后,这是 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 个按钮(部署到开发/暂存/生产)都将处于活动状态。这个自动步骤可以被构建,就像我的例子一样,或者一些打印一些文本的假的。
虽然有 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
变量或任何部署变量请记住,如果您向临时环境提供并行手动部署,则除非触发所有步骤,否则无法继续管道。因此,我会将生产部署包含在最后的并行块中。
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 不会承认此步骤是对环境的部署