【问题标题】:How Can You Trigger Only the Deployment Steps in Bitbucket Pipelines?如何仅触发 Bitbucket 管道中的部署步骤?
【发布时间】:2019-10-28 18:47:49
【问题描述】:

有没有办法只触发 Bitbucket 管道中的部署步骤?

目前我的管道构建了一系列 Docker 映像,将其推送到注册表,并将映像部署到 Kubernetes。我的 helm 图表和值被检入不同的 repo,如果我想部署任何更改,我将不得不重新构建所有 Docker 映像以完成部署(或在终端上手动执行)。构建过程非常耗时(不同应用需要 5-20 分钟),因此等待构建并不理想。

【问题讨论】:

    标签: bitbucket bitbucket-pipelines


    【解决方案1】:

    您可能只使用为deploy 分支配置的单独管道。例如:

    pipelines:
      default:
        - step:
            name: Build and test
            script:
              - python build-test.py
      deploy:
        - step:
            name: Deploy to staging
            deployment: staging
            script:
              - python deploy.py
    

    【讨论】:

    • 谢谢。我认为我的问题没有真正的解决方案,但只想澄清你的建议。所以你会手动触发部署分支?作为自定义管道步骤,这不是更好吗?我的想法是有一个默认的构建和部署管道,可能还有一个自定义步骤来部署代码,但希望管道中没有重复的代码,这没什么大不了的,因为管道只是调用一个使用 env 的脚本变量。
    【解决方案2】:

    由于客户机密,我无法真正详细地写下来。但是在我的一个客户中,我们遇到了类似的问题,并将我们的流程分为两个步骤。

    首先,我们构建应用并运行所有测试。如果成功,我们将工件“发布”到 S3。

    这会触发我们的下一步:部署。此管道将从 S3 中提取工件并将其部署到环境中。

    当我们要部署到下一个环境时,不需要重新构建整个应用程序。我们只是从 S3 中获取工件并将其部署到另一个环境。这确保了工件不会在环境之间发生变化。唯一的区别是环境变量。

    我们通过创建自定义发布和部署脚本来实现这一点。您也可以将工件发布到 BitBucket,但它们会在一段时间后被删除。在 S3 中,它在我们的控制之下。

    我希望这能为您指明一个有用的方向。

    【讨论】:

      猜你喜欢
      • 2021-12-10
      • 2017-10-17
      • 1970-01-01
      • 2022-06-27
      • 2017-04-02
      • 2019-02-28
      • 2018-06-12
      • 1970-01-01
      • 2022-06-11
      相关资源
      最近更新 更多