我有一个在 Azure Repos 中使用 Git LFS 的项目,其中使用 Git LFS 签入了几个二进制图像文件。当我的 Azure Pipelines 构建执行 . 时git pull,图像文件不会从 Git LFS 中提取,我留下了几个零字节图像文件。
我正在使用自定义的自托管 Azure Pipelines 构建服务器,该服务器上安装了最新版本的 Git LFS:
PS C:\rehan> git lfs --version git-lfs/2.7.2 (GitHub; windows amd64; go 1.12.2; git 08a08ae0)
Run Code Online (Sandbox Code Playgroud)
我试过添加步骤来执行,git lfs install但这没有帮助。当我git lfs pull登录到构建服务器后手动执行 a 时,文件被正确下载。当我git lfs pull在 Azure Pipeline 中作为构建步骤运行时,出现以下错误:
fatal: could not read Username for 'https://foo.visualstudio.com': terminal prompts disabled
batch response: Git credentials for https://foo.visualstudio.com/Bar/_git/Bar not found.
error: failed to fetch …Run Code Online (Sandbox Code Playgroud) 我有一个构建设置,最后会构建一个 Wix 项目来为我的应用程序创建一个 MSI。当我尝试运行构建时,它会进入链接步骤并在它被取消之前挂起大约一个小时。没有错误信息或任何信息可以解释可能发生的情况。它挂起的日志是:
Link:
C:\Program Files (x86)\WiX Toolset v3.11\bin\Light.exe -out D:\a\1\s\myapplication.msi -pdbout D:\a\1\s\myapplication.wixpdb -cultures:null -ext "C:\Program Files (x86)\WiX Toolset v3.11\bin\\WixUtilExtension.dll" -ext "C:\Program Files (x86)\WiX Toolset v3.11\bin\\WixUIExtension.dll" -ext "C:\Program Files (x86)\WiX Toolset v3.11\bin\\WixNetFxExtension.dll" -sice:ICE30 -sice:ICE80 -contentsfile obj\Release\Installer.wixproj.BindContentsFileListnull.txt -outputsfile obj\Release\Installer.wixproj.BindOutputsFileListnull.txt -builtoutputsfile obj\Release\Installer.wixproj.BindBuiltOutputsFileListnull.txt -wixprojectfile D:\a\1\s\Installer.wixproj obj\Release\pthC2B68370CAB72F5041F3FBDF89753BBA\ActionsAndSequences.wixobj obj\Release\pthC2B68370CAB72F5041F3FBDF89753BBA\LangComponents.wixobj obj\Release\pthC2B68370CAB72F5041F3FBDF89753BBA\Upgrades.wixobj obj\Release\pthF392250A412040E3E7164BEF9B45533D\ClientUIFlow.wixobj obj\Release\pthF392250A412040E3E7164BEF9B45533D\OldClientWarningDlg.wixobj obj\Release\pthF392250A412040E3E7164BEF9B45533D\SetServicesUrlDlg.wixobj obj\Release\pthC2B68370CAB72F5041F3FBDF89753BBA\Components.wixobj obj\Release\Product.wixobj
Windows Installer XML Toolset Linker version 3.11.2.4516
Copyright (c) .NET Foundation and contributors. All rights reserved.
Run Code Online (Sandbox Code Playgroud)
我使用的配置是:
- task: MSBuild@1
displayName: 'Building Installer'
inputs:
solution: '/path/to/solution'
platform: 'x86'
configuration: …Run Code Online (Sandbox Code Playgroud) 使用 Azure Pipelines PowerShell 任务构建时,我试图将develop分支合并到分支master。
但是在执行命令时git push,我收到此错误:
致命:无法读取“ https://OrganizationName@dev.azure.com ”的密码:终端提示已禁用
代码存储库是“Azure Repos Git”。
git checkout -b master
git config --global user.email "xxxxxxx@xxxx.xxx"
git config --global user.name "xxxxx"
git merge origin/develop
git push origin master
Run Code Online (Sandbox Code Playgroud)
在引用了一些 URL 之后,我创建了个人访问令牌,并将推送命令修改为git push https://PAT@dev.azure.com/OrganizationName,但它仍然无法正常工作。
如果您找到解决此问题的方法,请告诉我。
git azure-powershell azure-devops azure-pipelines-build-task azure-pipelines
我有一个由多个管道使用的构建模板,我需要使用 toLower 简单地转换参数。
toLower 记录在此处 https://learn.microsoft.com/en-us/azure/azure-resource-manager/resource-group-template-functions-string#tolower
这是我最后一次尝试:
parameters:
imageName: '$(Build.Repository.Name)'
lcImageName: "$[toLower(parameters.imageName)]" #this is my current attempt
稍后,在 Bash@3 步骤中,我尝试使用该值
args: 'omitted/${{ parameters.lcImageName }}:$(output.dockertag)'
但我可以看到该值没有扩展
我还尝试在需要的地方直接调用它 toLower ,也不进行扩展。
我只需要使用 toLower 转换参数并在特定步骤中使用它,我有点惊讶我在这里问这个。
Powershell 任务的 yaml 架构允许您选择 targetType: 'inline' 并在 script: input 中定义一个脚本。
但是编写多行脚本的正确格式是什么?
文档没有指定如何,并且在第一行使用管道(就像为命令行任务指定的那样)不起作用。
我正在尝试使用由 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 上动态创建或设置一个变量,并使用我想在此处标记的值。
我真的很感激对此的任何想法。
我有一个 ASP.NET Core 2.1 并添加了 Microsoft.WindowsAzure.Storage 的 nuget 包,但是在将代码推送到 repo 后,构建管道在运行构建代理时发生包错误,是否有必要在构建中添加任何其他代理除 BUILD、RESTORE、TEST 和 PUBLISH 之外的管道。
信息:Azure Pipelines 托管代理已更新为包含 .Net Core 3.x SDK/Runtime 以及 2.2 和 2.1。除非您已锁定项目的 SDK 版本,否则可能会选择 3.x SDK,与以前的版本相比,它可能具有破坏性行为。
这是它在运行管道时显示的错误。
我目前有一个在子目录中提供服务的 monorepo,我倾向于将其转变为带有 metarepo 的 multirepo。
我决定尝试 Azure DevOps 的原因之一是有人告诉我您可以在子目录上设置触发器,例如:
trigger:
branches:
include:
- master
paths:
include:
- client
Run Code Online (Sandbox Code Playgroud)
经测试,它有效。
但是,我想知道是否可以有多个独立的触发器,或者这是否需要 polyrepo 或 multiple .yml?原因是如果client服务中只有更改,它只会触发那组测试、构建和部署,而不会触发api服务运行测试、构建和部署。
例如:
trigger:
branches:
include:
- master
paths:
include:
- client
stages:
...
Run tests
If tests pass, build and push to ACR
Deploy to AKS
...
trigger:
branches:
include:
- master
paths:
include:
- api
stages:
...
Run tests
If tests pass, build and push to ACR
Deploy to AKS
... …Run Code Online (Sandbox Code Playgroud) 2020 年 2 月 20 日更新
概括
Azure DevOps 管道构建无法从我们在 Artifacts 下的私有源中找到 NuGet 包。
我们的 Azure DevOps 环境
在 Azure 中,我们有我们的公司“空间”:dev.azure.com/OurCompany
在此之下,我们有多个项目,例如,想象一下这三个:
红色的
RED 保存了我们所有常见的帮助程序代码,这些代码都是 GREEN 和 BLUE 应用程序使用的 DLL。这些以 NuGet 包的形式提供。
在 RED 的 Artifacts 下,我们看到了一个名为“OurCompany”的“组织范围提要”。我们知道我们不能使用它,因为这些 NuGet 包需要对 OurCompany 中的每个人可用,这意味着不仅在 Azure 上,而且在我们公司网络(我们运行 Visual Studio 的地方)中的桌面计算机上。我认为“组织范围内的提要”不会暴露给我们的企业网络。
因此,我们在 RED 的 Artifacts 下创建了一个新的 Feed。当我查看权限时,我看到以下条目:
公司的
因此,回到 Corporate,我们将 NuGet 包源添加到我们的 Visual Studio,然后它可以从 Azure 中提取 NuGet 包。
绿色和蓝色
在这里,我们有我们的产品。我们创建了一个构建管道,并添加了一个 NuGet …
nuget-package-restore devops azure-devops azure-pipelines azure-artifacts
我对这个管道非常陌生,我正在尝试构建一种自动化的方法来.msi为我的应用程序构建安装程序文件。
我有 2 个项目.Net Core,Python所以我创建了 2 个管道。.Net Core 管道将构建文件并将其保存在某个位置,Python 管道使用这些文件(来自位置)作为其依赖项并构建一个新.msi文件,管道中的最后一部分newsetup.py构建.msi我将传递该位置的文件.Net Core 管道的输出文件。
我得到的错误是Artifact dropcli was not found for build 150.
.Net Core管道脚本:
- task: VSBuild@1
inputs:
solution: '$(solution)'
msbuildArgs: '/p:DeployOnBuild=true /p:WebPublishMethod=Package /p:PackageAsSingleFile=true /p:SkipInvalidConfigurations=true /p:DesktopBuildPackageLocation="$(Build.ArtifactStagingDirectory)\WebApp.zip" /p:DeployIisAppPath="Default Web Site"'
platform: '$(buildPlatform)'
configuration: '$(buildConfiguration)'
- task: PublishPipelineArtifact@1
inputs:
targetPath: '$(Pipeline.Workspace)'
artifact: 'dropcli'
publishLocation: 'pipeline'
- task: VSTest@2
inputs:
platform: '$(buildPlatform)'
configuration: '$(buildConfiguration)'
Run Code Online (Sandbox Code Playgroud)
Python管道脚本:
- task: DownloadPipelineArtifact@2
inputs:
buildType: 'current'
artifactName: …Run Code Online (Sandbox Code Playgroud) azure-pipelines ×10
azure-devops ×8
azure ×2
git ×2
azure-repos ×1
devops ×1
git-lfs ×1
gitversion ×1
msbuild ×1
powershell ×1