首页 > 解决方案 > VSTS:执行发布时将包版本变量作为下拉列表

问题描述

当我们执行发布时,我们需要选择要部署的特定包版本(默认情况下是最新的,但也可能是旧版本)。现在该字段是一个简单的文本框,我们必须手动指定版本,但这很容易出错,因为用户基本上可以在那里放任何他们想要的东西,并且每当新版本被推送到提要时,我们都需要更新发布定义. 是否有某种方法可以在定义中配置变量以查看提要中包的特定版本并将其作为下拉列表显示给用户?

标签: azure-devopsazure-pipelines-release-pipeline

解决方案


默认情况下没有任何方法可以做到这一点。您需要创建自定义构建任务并调用 Feed API 来实现。

例如,在您的自定义构建任务中添加以下部分:

"inputs": [
        {
          "name": "feedList",
          "type": "pickList",
          "label": "feedList",
          "defaultValue": "",
          "required": false,
          "helpMarkDown": "Select the feed.",
          "properties": {
                    "DisableManageLink": "True"
                }   
        },
        {
          "name": "packageList",
          "type": "pickList",
          "label": "packageList",
          "defaultValue": "",
          "required": false,
          "helpMarkDown": "Select the package.",
          "properties": {
                    "DisableManageLink": "True"
                }   
        },
        {
            "name": "versionList",
            "type": "pickList",
            "label": "versionList",
            "defaultValue": "",
            "required": false,
            "helpMarkDown": "Select the version.",
            "properties": {
                      "DisableManageLink": "True"
                  }   
          }
      ],
      "dataSourceBindings": [
            {
                "target": "feedList",
                "endpointId": "tfs:feed",
                "endpointUrl": "{{endpoint.url}}/_apis/packaging/feeds",
                "resultSelector": "jsonpath:$.value[*]",
                "resultTemplate": "{ \"Value\" : \"{{{id}}}\", \"DisplayValue\" : \"{{{name}}}\" }"
            },
            {
                "target": "packageList",
                "endpointId": "tfs:feed",
                "parameters": {
                    "feed": "$(feedList)"
                },
                "endpointUrl": "{{endpoint.url}}/_apis/packaging/feeds/{{{feed}}}/Packages",
                "resultSelector": "jsonpath:$.value[*]",
                "resultTemplate": "{ \"Value\" : \"{{{id}}}\", \"DisplayValue\" : \"{{{name}}}\" }"
            },
            {
                "target": "versionList",
                "endpointId": "tfs:feed",
                "parameters": {
                    "feed": "$(feedList)",
                    "package": "$(packageList)"
                },
                "endpointUrl": "{{endpoint.url}}/_apis/packaging/feeds/{{{feed}}}/Packages/{{{package}}}/Versions",
                "resultSelector": "jsonpath:$.value[*]",
                "resultTemplate": "{ \"Value\" : \"{{{version}}}\", \"DisplayValue\" : \"{{{version}}}\" }"
            }
        ],

您将获得一个选择包版本的列表: 在此处输入图像描述 然后您可以在客户构建任务中获取所选版本并将变量值设置为所选版本。


推荐阅读