gpt4 book ai didi

Azure Pipelines 通用包任务使用 'publishedPackageVar' 选项来实现正确的版本部署

转载 作者:行者123 更新时间:2023-12-02 23:23:36 29 4
gpt4 key购买 nike

我正在使用 Azure Pipelines,需要在一个阶段(构建)中将文件上传到 Azure 工件,然后在另一个阶段(部署)中下载具有相同版本的相同包。到目前为止,我已经通过使用通用包任务进行上传和下载来完​​成此操作,因此我使用选项 versionOption: 'patch' 上传包。在构建阶段并在部署阶段使用vstsPackageVersion: '0.0.*'下载包.

这是一个不错的解决方案,直到我遇到了一个接一个地运行两个构建并上传到同一个 Azure 工件源的问题,并且由于我已经在构建和部署阶段之间设置了批准,因此管道的两次运行都将导致部署推送到提要的最新工件。

经过一番调查,我发现通用包上传任务有一个名为 publishedPackageVar 的选项,它将上传的工件的名称和版本保存在变量中。我找不到有关此选项的任何文档,但据我所知,它将名称和版本存储为字符串,并以空格字符分隔:<artifact_name> <major>.<minor>.<patch> ,并且 vstsPackageVersion 仅需要 <major>.<minor>.<patch>部分。

我的问题是:是否有人出于类似原因使用此 publishedPackageVar 选项,以及将其传递给通用包的 vstsPackageVersion 选项的最佳方式是什么下载任务?

我能想到的所有解决方案都需要一些丑陋的多步骤解决方法(例如使用 sed 从变量获取版本并将其存储为新变量),这只会使我的管道可读性较差。

最佳答案

请参阅有关 Universal Package task 的文档

publishedPackageVar

Package Output Variable Provide a name for thevariable that contains the published package name and version.

该值默认由包名和版本号组成。我们无法修改任务中的格式。

正如您所说,一种方法是使用脚本将版本号与该变量分开,并将其存储在新变量中。

我想分享另一种方法。

您可以使用自定义包版本号。然后您可以使用counter expression构建增量版本号。

该变量可以直接在两个阶段使用。

这是一个例子:

pool:
vmImage: windows-2019

variables:
major: 2
minor: 9
restnumber: 1
patch: $[counter(variables['restnumber'], 0)]
version: $(major).$(minor).$(patch)

stages:
- stage: Build
jobs:
- job: upload
steps:
- task: UniversalPackages@0
inputs:
command: 'publish'
publishDirectory: '$(Build.sourcesdirectory)'
feedsToUsePublish: 'internal'
vstsFeedPublish: 'xx'
vstsFeedPackagePublish: 'xx'
versionOption: 'custom'
versionPublish: '$(version)'

- stage: Stage
jobs:
- job: download
steps:
- task: UniversalPackages@0
inputs:
command: 'download'
downloadDirectory: '$(System.DefaultWorkingDirectory)'
feedsToUse: 'internal'
vstsFeed: 'xx'
vstsFeedPackage: 'xx'
vstsPackageVersion: '$(version)'

在本例中,您可以通过更改变量:restnumber的值来重置计数器。

关于Azure Pipelines 通用包任务使用 'publishedPackageVar' 选项来实现正确的版本部署,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69164413/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com