2021-06-23

[Azure DevOps] 如何使用任务组

1. 使用 PowerShell 脚本

在上一篇文章中我们学会了怎么使用扩展在编译前实时更改版本号。有些情况下我们希望不适用扩展,例如喜欢发明轮子,或者根本没有安装扩展的权限。这时候我们可以自己写 PowerShell 解决这个问题。

在 Pipeline 中添加一个 PowerShell 的任务,Type 选择 Inline,然后在 Script 里输入这段 PowerShell 脚本:

$ComponentPath = $Env:Build_SourcesDirectory$VersionNumber = $Env:AssemblyVersion+"."+$Env:Build_BuildId+".0"$ErrorActionPreference = "Stop"Write-Output "ComponentPath""$ComponentPath""."Write-Output "VersionNumber""$VersionNumber""."$assemblyFiles = Get-ChildItem -Recurse -Path $ComponentPath -Include AssemblyInfo.cs | Where-Object { $_.fullname -notmatch "\\packages\\" }$assemblyVersionRegex     = New-Object System.Text.RegularExpressions.Regex -ArgumentList '^\s*\[assembly:\s*AssemblyVersion\("[^"]*"\)\]',MultiLine$assemblyFileVersionRegex = New-Object System.Text.RegularExpressions.Regex -ArgumentList '^\s*\[assembly:\s*AssemblyFileVersion\("[^"]*"\)\]',MultiLine$assemblyInfoVersionRegex = New-Object System.Text.RegularExpressions.Regex -ArgumentList '^\s*\[assembly:\s*AssemblyInformationalVersion\("[^"]*"\)\]',Multilineforeach ($file in $assemblyFiles){    $content = [System.IO.File]::ReadAllText($file)    $assemblyVersionReplacement     = [string]::Format("[assembly: AssemblyVersion(""{0}"")]",              $VersionNumber)    $assemblyFileVersionReplacement = [string]::Format("[assembly: AssemblyFileVersion(""{0}"")]",          $VersionNumber)    $assemblyInfoVersionReplacement = [string]::Format("[assembly: AssemblyInformationalVersion(""{0}"")]", $VersionNumber)    $content = $assemblyVersionRegex.Replace($content, $assemblyVersionReplacement)    $content = $assemblyFileVersionRegex.Replace($content, $assemblyFileVersionReplacement)    $content = $assemblyInfoVersionRegex.Replace($content, $assemblyInfoVersionReplacement)    [System.IO.File]::WriteAllText($file, $content)    Write-Output "Updated file ""$file"" to have version ""$VersionNumber""."}

上面这段 PowerShell 的作用是修改项目里的 AssemblyInfo.cs,将版本号改为 $Env:AssemblyVersion+"."+$Env:Build_BuildId+".0"。有了这个 Task,我们可以不再依赖扩展来实现这个功能。

需要注意的是,在 PowerShell 里使用 Azure Pipelines 的变量的格式是 $Env: + 变量名,变量名里的句号 . 要改为下划线 _,例如 $(Build.BuildId) 在 PowerShell 里的引用方式为 $Env:Build_SourcesDirectory

2. 使用任务组

下一步,为了不在每个 Pipeline 中复制粘贴这个 Task 及其中的 PowerShell 脚本,我们需要把这个 Task 做成一个公共的东西。这时候可以使用任务组 ,它可以将已在生成或发布管道中定义的一系列任务封装到可添加到生成或发布管道中的单个可重用任务,就像任何其他任务一样。不过需要注意的是 YAML 管道不支持任务组,任务组只能用在经典管道中。

创建任务组的方式如下图所示,在任务列表中选中一个或多个任务,然后在右键菜单中选中 Create task group,在弹出的对话框中输入名称,选择分类,最后点击 Create原文转载:http://www.shaoqun.com/a/824649.html

跨境电商:https://www.ikjzd.com/

新蛋:https://www.ikjzd.com/w/79

telegram:https://www.ikjzd.com/w/1734

haofang:https://www.ikjzd.com/w/1046


1.使用PowerShell脚本在上一篇文章中我们学会了怎么使用扩展在编译前实时更改版本号。有些情况下我们希望不适用扩展,例如喜欢发明轮子,或者根本没有安装扩展的权限。这时候我们可以自己写PowerShell解决这个问题。在Pipeline中添加一个PowerShell的任务,Type选择Inline,然后在Script里输入这段PowerShell脚本:$ComponentPath=$Env:B
海外版抖音成为跨境电商引流爆单新战场(内附注册流程):https://www.ikjzd.com/tl/97113
跨境电商欧洲消费者习惯调查:https://www.ikjzd.com/tl/97121
老公总无端怀疑我偷情 手机一响他就要看:http://lady.shaoqun.com/a/272406.html
口述:婚礼上老婆和我妈打了起来:http://lady.shaoqun.com/m/a/15580.html
口述实录:"我年薪30万,每月给老婆500元家用":http://lady.shaoqun.com/m/a/255358.html
妇女上厕所正面尿尿 学校女厕所真实图片:http://lady.shaoqun.com/a/246669.html
etoro:https://www.ikjzd.com/w/1402
2019亚马逊广告全指导,看得懂的拿去吧,全英文的:https://www.ikjzd.com/tl/97110
被陌生人带去卫生间啪到腿软 他一下比一下更重的撞击:http://lady.shaoqun.com/m/a/248211.html
由汽车震动引起的地震:http://lady.shaoqun.com/a/384294.html
由汽车震动引起的地震:http://www.30bags.com/a/451920.html
这个16岁的男孩还和他的母亲睡在同一张床上:孩子的"性别观念",父母应该尽快培养:http://www.30bags.com/a/451921.html

No comments:

Post a Comment