我正在尝试使用由 GitVersion 在成功构建结束时的 GIT 提交确定的当前版本号设置标签。感觉我不能成为第一个这样做的人,但我正在努力寻找有用的东西。
Azure Devops Pipeline 在成功时获取源以“标记源”中有一项功能。我已经设置了它并设置为由我拥有的代理任务之一设置的变量(GitVersion)
我可以在调试日志中看到这个变量是由我添加到管道的 GitVersion 组件设置的。
2019-12-06T20:54:20.2390794Z ##[debug]Processed: ##vso[task.setvariable variable=GitVersion.MajorMinorPatch;]2.98.0
Run Code Online (Sandbox Code Playgroud)
但是,如果我就这样保留它,我会得到一个创建为“v$(GitVersion.MajorMinorPatch)”的标记,这意味着在创建标记时该变量不再存在。
标签格式帮助工具提示说
“标签格式可以是用户定义或预定义变量的组合,其范围为“全部”。例如:'$(Build.DefinitionName) $(Build.DefinitionVersion) $(Build.BuildId) $(Build .BuildNumber) $(My.Variable)'"
所以我猜问题是在管道期间创建的这个变量没有 All 的范围。
然后我尝试向“GitVersion.MajorMinorPatch”的管道添加一个管道变量,希望这是在正确的范围内,并希望当“task.setvariable”命令运行时,这会将这个变量值设置得更高范围变量。
但是在这种情况下,我只是创建了一个标签“v”。
所以我有点卡住了。不知何故,我需要能够在范围 ALL 上动态创建或设置一个变量,并使用我想在此处标记的值。
我真的很感激对此的任何想法。
我目前正在尝试使用VSTS设置一个持续集成系统,并遇到了一些障碍.作为发布过程的一部分,我需要根据环境更新JSON文件中的特定对象值.我可以使用的唯一工具可以在VSTS环境中完成,这是PowerShell.
我已经做了很多研究,但却无法弄清楚这是怎么做到的.我发现这个问题和答案在这里堆栈溢出" 我如何使用PowerShell的更新JSON文件,但在执行中的答案提供的脚本显着改变的JSON文件的结构,并增加了相当多的什么样子PowerShell中的元数据".
理想情况下,我想获取一个已部署的现有JSON文件,并在下面的示例JSON中更新connectionString属性的值.
{
"policies": {
"Framework.DataContext": {
"connectionString": "Server=ServerName;Database=DateBaseName;Integrated Security=sspi;"
}
}
}
Run Code Online (Sandbox Code Playgroud)
有没有人对如何做到这一点有任何建议?到目前为止,我已经尝试运行以下脚本但它抛出了"在此对象上找不到属性'connectionString'.验证该属性是否存在且可以设置." 例外.我已经验证对象遍历是正确的,并且connectionString属性存在.
$pathToJson = "D:\Path\To\JSON\file.json"
$a = Get-Content $pathToJson | ConvertFrom-Json
$a.policies.'Framework.DataContext'.connectionString = "Server=ServerName;Database=DateBaseName;Integrated Security=sspi;"
$a | ConvertTo-Json | set-content $pathToJson
Run Code Online (Sandbox Code Playgroud)
file.json的全部内容如下
{
"log": {
"level": 0,
"file": "c:\\temp\\simport.log",
"formats": {
"error": null,
"start": null,
"requestBegin": null,
"requestWork": "",
"requestError": null,
"requestEnd": null,
"stop": null
},
"eventLog": {
"name": "Application"
}
},
"diagnostic": {
"stackTrace": false
},
"api": {
"simport": true
},
"roles": { …Run Code Online (Sandbox Code Playgroud) 我试图弄清楚TFS Online 2017中两个预定义变量之间是否存在差异:$(Build.Repository.LocalPath)和$(Build.SourcesDirectory).我有一个使用这两个变量的构建,并且不知道我是否可以交替使用它们.
查看Microsoft的文档,描述如下:
$(Build.SourcesDirectory):下载源代码文件的代理上的本地路径.例如:c:\ agent_work\1\s默认情况下,新构建定义仅更新已更改的文件.您可以在"存储库"选项卡上修改文件的下载方式.
$(Build.Repository.LocalPath):下载源代码文件的代理上的本地路径.例如:c:\ agent_work\1\s默认情况下,新构建定义仅更新已更改的文件.您可以在"存储库"选项卡上修改文件的下载方式.
这些代表相同的事情还是我错过了什么?
我有两个存储库 - 一个在TFVC中,另一个在Git中.将它们分开有特定的技术原因.
TFVC中的代码构建在私有构建代理上,Git中的代码构建在托管代理上.所以目前我有两个独立的构建,它们的结果在一个发布定义中一起部署.
我正在寻找创建可能从两个存储库获取源代码的构建,以便我有一个要管理的构建定义.
有没有办法实现这个目标?
要为测试人员生成构建,我们在项目中使用VSTS.当我们签出并使用xcode在我们的Mac中运行分支时,它工作正常.但是当我尝试通过VSTS发布构建时,它会抛出错误,如下所示,构建失败.
ld:无法在bitcode包中重新解析目标文件:'无效的bitcode版本(生产者:'902.0.39.2_0'Reader:'900.0.39.2_0')',使用libLTO版本'LLVM版本9.0.0,(clang-900.0. 39.2)'用于架构arm64
我理解这个问题可能是因为有两个不同版本的编译器闲置.我正在使用Xcode 9.2,构建上传源代码的服务器也有Xcode 9.2.还有一件事是,在过去我已经将beta Xcode版本9.4提交到分支机构.这可能会产生问题,还是我在这里缺少的其他东西.
此外,我听到一些堆栈溢出和git建议,更新Xcode将解决问题.我很好,但是想要将该选项作为最后一个,因为有一些服务器和构建在服务器中排队,如android和WebApp构建,我们通过VSTS自动化,这将暂时停止.
任何帮助或指针都非常感谢.
注意:VSTS服务器在内部尝试归档构建.所以错误接受的答案:无效的bitcode版本(生产者:'800.0.35.0_0'Reader:'703.0.31_0')可能提供解决方案.但情况仍然不同,因为VSTS可能会尝试不同的东西.
我正在尝试使用构建管道创建代码覆盖率报告。我Visual Studio code在构建管道中添加了类型任务并启用了代码覆盖率。
当构建被触发时。我越来越 :
Data collector 'Code Coverage' message: Data collector 'Code Coverage' failed to provide initialization information. Error: System.TypeInitializationException: The type initializer for 'Microsoft.VisualStudio.Diagnostics.Logging.ProfilerInterop' threw an exception. ---> Microsoft.VisualStudio.Diagnostics.Common.InvariantException: Failed to load IntelliTrace Profiler binary or failed to locate functions.
Run Code Online (Sandbox Code Playgroud)
和
---> System.ComponentModel.Win32Exception: The system cannot find the path specified
Run Code Online (Sandbox Code Playgroud)
这是运行测试并且所有测试都通过了。但是我无法查看代码覆盖率报告。它创建的报告仅包含有关测试的信息
我们在何处指定路径的任何输入都将很有用。
管道由对master分支的新提交触发并发布包
目前,版本是手动设置的,我很乐意自动设置它。
我最初的想法是将以下任务添加到管道中:
$Build.SourceBranchversion patch --forcegit push这有效并且版本确实正确递增,问题是,它触发了管道的另一次运行,它将再次递增,这将......你明白了,无限循环。
有没有更好的方法来做到这一点?
我正在使用 Azure Pipelines YAML 格式设置管道。我创建了 3 个阶段:构建、暂存和生产。顾名思义,构建阶段构建项目并发布构建工件。Staging 阶段部署到 Staging 环境,Production 阶段部署到 Production 环境。
在我的项目的 Environments 部分,我添加了对生产环境的检查,以便我可以在上线之前批准部署。
我的管道的工作方式是在 Build 阶段完成后自动触发 Staging 和 Production 阶段。我不喜欢这一点的是,当开发人员将他们的代码部署到 Staging 时,他们需要几天时间在 Staging 上对其进行测试,然后再将他们的代码推送到生产环境。所以,在那之前,我的管道一直在运行并等待我的批准。左上角的微调器不断旋转,“持续时间”字段不断传递。
有什么方法可以让开发人员在准备就绪时手动触发生产阶段而不是构建阶段触发它?
我正在努力描绘 azure 管道的文件夹结构。我知道有一些隐式目录,例如:
这两个文件夹都是池中可用的特定构建代理上的文件夹。
有没有办法查看文件夹结构并更好地了解事物的布局?
直到最近,我们的 .Net Core 3.1 应用程序还在 Azure 管道上构建和发布良好。但是在过去的几天里,构建管道开始失败并出现错误:
##[error]C:\Program Files\dotnet\sdk\5.0.100\Sdks\Microsoft.NET.Sdk\targets\Microsoft.PackageDependencyResolution.targets(241,5):
Error NETSDK1005: Assets file 'D:\a\1\s\ProjectFolder\src\Project\obj\project.assets.json' doesn't have a target for 'netcoreapp3.1'.
Ensure that restore has run and that you have included 'netcoreapp3.1' in the TargetFrameworks for your project.
Run Code Online (Sandbox Code Playgroud)
(ResolvePackageAssets target) ->
C:\Program Files\dotnet\sdk\5.0.100\Sdks\Microsoft.NET.Sdk\targets\Microsoft.PackageDependencyResolution.targets(241,5):
error NETSDK1005: Assets file 'D:\a\1\s\ProjectFolder\src\Project\obj\project.assets.json' doesn't have a target for 'netcoreapp3.1'.
Ensure that restore has run and that you have included 'netcoreapp3.1' in the TargetFrameworks for your project. [D:\a\1\s\ProjectFolder\src\Project\Project.csproj]
Run Code Online (Sandbox Code Playgroud)
对于失败的解决方案构建步骤,构建管道设置如下。
任何想法如何以最少的更改解决此问题?
azure-pipelines ×10
azure-devops ×9
build ×2
.net-5 ×1
.net-core ×1
git ×1
gitversion ×1
ios ×1
json ×1
llvm ×1
npm ×1
npm-version ×1
powershell ×1
tfs ×1
tfvc ×1
unit-testing ×1
yaml ×1