You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

DevOps Server资源版本选择器忽略选定版本,始终使用最新版

手动运行部署流水线时资源版本选择无效的解决办法

问题现象

手动运行部署流水线时,已在资源版本选择器中选定历史构建版本(如ID 8517),但日志显示实际下载的是最新构建版本(如ID 8528)。

当前配置

部署流水线主配置:

trigger:
 - none

resources:
  pipelines:
  - pipeline: Console
    source: Build.Console

extends:
  template: Deploy.yml
  parameters:
    ...

部署模板Deploy.yml配置:

parameters:
  ...

jobs:
- deployment: Console
  workspace:
    clean: outputs
  environment: 'Test'
  strategy:
    runOnce:
      deploy:
        steps:
        - download: Console
        ...

已尝试无效操作

  • 简化资源触发器配置
  • 清理工作区
  • 尝试用变量指定资源版本(资源声明段无法使用变量)
  • 不愿替换download步骤为DownloadPipelineArtifact任务(该模板在触发式流水线中运行正常)

原因分析

部署作业(deployment类型任务)中的download: <pipeline-resource>步骤默认存在优先级逻辑:未显式指定版本时,会优先拉取与部署环境关联的最新资源版本,而非手动选择的版本。即使手动选定了版本,若未在下载步骤中明确引用该版本标识,系统仍会 fallback 到最新版。

解决方案

无需替换download步骤,只需在模板的download步骤中显式指定使用手动选择的资源版本ID,利用系统自动注入的resources.pipeline.<resource-name>.runID变量即可:

修改Deploy.yml中的下载步骤:

- download: Console
  version: '${{ resources.pipeline.Console.runID }}'

该变量在手动选择版本时,会自动被赋值为你选定的构建版本ID,确保下载的是指定版本而非最新版。

补充说明

如果需要更灵活的版本选择,也可以在部署流水线中添加自定义参数,让用户输入版本ID并传递给资源声明:

# 部署流水线主配置
trigger:
 - none

parameters:
- name: consoleBuildVersion
  type: string
  displayName: 'Console构建版本ID'
  default: 'latest'

resources:
  pipelines:
  - pipeline: Console
    source: Build.Console
    version: '${{ parameters.consoleBuildVersion }}'

extends:
  template: Deploy.yml
  parameters:
    ...

这种方式适合需要在参数界面直接输入版本ID的场景,同样无需修改模板中的download步骤。

内容的提问来源于stack exchange,提问作者Shaun Kohanowski

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.05 07:27:23