【问题标题】:Deploy a preexisting artifact in a Azure DevOps Multi-Stage pipeline在 Azure DevOps 多阶段管道中部署预先存在的项目
【发布时间】:2020-09-22 03:00:12
【问题描述】:

在 Azure DevOps 经典管道中,您可以拥有一个用于创建工件的构建管道和一个用于部署它的发布管道。这意味着可以部署任何存储的现有工件,只需启动发布管道并选择工件的版本(典型用法:将当前部署的工件回滚到以前的版本)

如何在多阶段管道中实现这一点?任何方式只启动部署阶段选择要部署的工件?

问候

【问题讨论】:

    标签: azure-devops multistage-pipeline


    【解决方案1】:

    如何在多阶段管道中实现这一点?任何方式只启动部署阶段选择要部署的工件?

    确实,这样可以根据实际需求选择已有的artifact很方便,但是Multi-Stage pipeline目前不支持你想要的。

    此请求已报告给 MS 产品团队:

    Select artifacts in YAML release pipeline

    此功能已在上个 sprint 中添加:

    Pipeline resource version picker in the create run dialogue

    然而,在我的测试中,似乎这个功能并没有在所有地区部署:

    如果它没有部署在您所在的地区,您可以尝试使用任务Download Pipeline Artifacts taskrunId 输入:

    - task: DownloadPipelineArtifact@2
      inputs:
        source: 'specific'
        artifact: 'drop'
        path: $(Build.SourcesDirectory)/bin
        project: 'AndroidBuild'
        pipeline: 12
        runVersion: 'specific'
        runId: $(buildid)
    

    然后在我们排队构建时使用传递队列变量buildid

    希望这会有所帮助。

    【讨论】:

    • 谢谢刘磊。关于何时在西班牙地区可用的任何想法?问候。
    【解决方案2】:

    这可以通过两个管道来完成。一个用于构建的管道,您的管道在其中生成工件并为您的发布阶段创建另一个管道。在发布管道中,您可以将资源设置为指向另一个构建或管道。您可以在其中使用您之前生成的工件(包括较旧的构建版本)到部署阶段。

    见: YAML Resources

    您的发布 YAML 管道可以指定它需要哪些资源。您可以指定现有构建或其他管道。

    resources:
      pipelines:
      - pipeline: SmartHotel-resource # identifier for the resource (used in pipeline resource variables)
        source: SmartHotel-CI # name of the pipeline that produces an artifact
    

    但是,将它们分开只会导致移动开销和维护。

    【讨论】:

    • 谢谢@auto-geek。只有一个管道意味着在回滚到先前版本的情况下从源代码再次构建工件。这会是你的方法吗?
    • 是的,将所有内容都放在一个管道中意味着您必须在回滚到以前的版本时重新构建,因为您的发布阶段需要使用工件。您不能跳过构建阶段,也不能使用单一管道方法选择旧的构建版本。解决方法是将您的管道分成两部分,然后在发布管道中选择适合您的任何构建工件,而无需再次运行构建。 @Josto
    猜你喜欢
    • 2022-12-19
    • 2020-11-23
    • 1970-01-01
    • 1970-01-01
    • 2021-03-18
    • 1970-01-01
    • 1970-01-01
    • 2020-11-28
    • 2021-03-25
    相关资源
    最近更新 更多