npm - Azure DevOps 管道中的 npm 版本
问题描述
我在 Azure DevOps 中有一个构建管道,用于发布工件,npm pack
以便以后发布到工件源中。
我想通过 GIT 设置我的主要和次要版本,但补丁版本与内部版本号相关。例如
1.2.20201212.4
其中 1 和 2 是通过 GIT 手动更新的 major.minor 版本,20201212.4 是构建管道设置的补丁和修订号
有人可以帮我找出所需的npm version
命令参数以从源代码中保留 minor.major 版本并仅更新 $(Build.BuildNumber) 变量中的补丁和修订部分吗?
解决方案
在 Azure Devops 中,您可以使用Replace Tokens Extension中的Replace Tokens 任务。
然后你可以在 NPM pack 任务之前添加任务来替换变量Package.json -> Version field.
以下是步骤:
Package.Json 文件:
{
"name": "helloword",
"version": "0.0.#{SetNumber}#",
"description": "Hello World",
"main": "server.js",
...
}
构建管道:
- 在构建管道中设置变量。
- 添加替换标记任务。
注意:根据我的测试,npm 包在 azure devops 中不支持xx.xxx版本格式(npm publish)。它可以支持xxx-x。
所以你可以这样设置buildnumber:<code>$(Date:yyyyMMdd)-$(Rev:r)。
结果:
更新:
您可以尝试使用 Npm Version 命令。
npm version 0.0.$(build.buildnumber) --no-git-tag-version
更新2:
您可以尝试使用以下 powershell 脚本来获取 Package.json 中的版本字段。然后更新补丁号。
$filePath = "$(Build.sourcesdirectory)\package.json" #filepath
$Jsonfile= Get-Content $filePath | ConvertFrom-Json
$version = $Jsonfile.version
echo $version
$major,$minor,$build = $version.Split('.')
$build = "$(build.buildnumber)"
$bumpedVersion = $major,$minor,$build -join(".")
echo $bumpedVersion
Write-Host "##vso[task.setvariable variable=version]$bumpedVersion"
在 Npm 版本中,您可以运行以下命令:
version $(version) --no-git-tag-version
推荐阅读
- powershell - 如何在 PowerShell 中合并两个 PoshWSUS 对象
- sonarqube - Windows 上的 SonarQube - 只能在本地查看
- spring - Logback MDC - SuccessHandler 中的错误值
- sql - 大查询的 SUBSTR 对面
- javascript - 使用 appendTo 创建滑块并使用隐藏/显示可见性类
- mysql - MySQL - 基于多个表中的 SELECT 的 UPDATE 查询
- android - ViewModel 类是否应该包含 Android 元素?
- android - 使用 FFMPEG 或录制设备音频和流
- python - 使用 Python 2.7 时无法执行 virtualenv 命令
- java - 如何在字符串中存储我们使用 api 获得的 xml 响应?