我在Azure devops中有一个Node项目,想将内部版本号设置为当前package.json中的任何内容,并附加一个数字。因此,如果我的package.json表示版本为0.0.1-beta,则内部版本号将类似于0.0.1-beta+20190215.1
。
使用npm:npm view <package-name> version
可以很容易地获得版本字符串,但是我不知道要在管道中的哪个位置存储并将其注入以用作内部版本号。据我所知,内部版本号只能设置为硬编码值或通过“手动”设置的变量设置,而不能像使用命令输出那样以动态方式设置。
我尝试使用变量,首先使用了一个无效的自定义变量。我还找到了一个名为Build.Buildname
的变量,但似乎无法将其写入。
有什么想法吗?
这是我正在尝试的基本pipeline.yaml的相关部分:
steps:
- task: NodeTool@0
inputs:
versionSpec: '8.x'
displayName: 'Install Node.js'
- script: |
npm install
npmVersionString=$(npm view <package-name> version)
echo ##vso[task.setvariable variable=build.buildnumber]$npmVersionString
npm run build
displayName: 'npm install, set buildnumber and build'
答案 0 :(得分:0)
要在构建过程中更新内部版本号,您不仅可以像每个变量一样更新变量Build.BuildNumber
,还需要执行一条特殊命令:
##vso[build.updatebuildnumber]{build number}
因此,在您的情况下,请替换此行
echo ##vso[task.setvariable variable=build.buildnumber]$npmVersionString
此行
echo ##vso##vso[build.updatebuildnumber]$npmVersionString
(如果需要,请不要忘记添加内部版本号)。