azure-devops - Azure DevOps 创建发布
问题描述
我创建了一个手动发布定义。我希望能够创建一个新版本,并且只让它包含已部署的先前版本的新更改。这可能吗?
解决方案
如果 25 个解决方案都构建在单个构建管道中并发布到单个工件中。您可以在构建管道中添加脚本任务以检查已更改的解决方案。并仅复制更改的工件以进行发布。请参见以下 powershell 脚本中的示例:
下面的内联脚本只是一个例子。
#get the folders that are changed
$folders = git diff --dirstat=files,0 HEAD~1 | Select-String '[0-9]*\.[0-9]*\% (.*)\/' | ForEach-Object{$_.Matches.Groups[1].Value}
#copy the the changed solution built result to artifact folder to publish
foreach ($folder in $folders){ Move-Item -Path $folder/bin -Destination "$(Build.ArtifactStagingDirectory)"}
在上面的 powershell 任务中。脚本的第一行将获取所有更改的文件夹。第二行将更改解决方案的构建结果移动到要发布的工件文件夹。
因为您的解决方案可能会在不同的地方输出构建的结果。您需要相应地更改命令的-Path
参数Move-Item
。您可能还需要更改-Destination
参数。
然后,您可以通过发布Destination
仅包含更改的工件的文件夹publish build artifact task
。然后您的发布管道将仅部署已更改的工件。
主要思想是检查哪个解决方案已更改并复制更改的工件,并仅将它们作为工件发布。
推荐阅读
- scala - 搜索 json 键并返回空列表,如果其值为空字符串
- ios - HTTP2 NSPOSIXErrorDomain 代码=100“协议错误”
- python-3.x - 错误:具有多个元素的数组的真值不明确。使用 a.any() 或 a.all()
- javascript - Angular 8 中多个项目之间共享的模块?
- java - orElse 的 Java 可选工作不像 else
- c# - 组合框。选择物品
- php - 403 不允许您执行此操作。登录后注册页面上的yii2
- scheduling - 是否有 MiniZinc 谓词来模拟时间相关的资源界限(如累积)?
- javascript - 在 ajax 请求中创建的选择标签不会显示在 HTML 文件中
- amazon-web-services - AWS SQS 不会触发 lambda 别名