标签: azure-pipelines

如何将 Git LFS 与 Azure 存储库和管道一起使用

我有一个在 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)

git git-lfs azure-pipelines azure-repos

15
推荐指数
1
解决办法
6205
查看次数

构建 Wix 安装程序时构建挂起

我有一个构建设置,最后会构建一个 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)

msbuild azure-devops azure-pipelines

15
推荐指数
1
解决办法
1668
查看次数

致命:无法读取“https://OrganizationName@dev.azure.com”的密码:终端提示已禁用

使用 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

14
推荐指数
2
解决办法
2万
查看次数

Azure 管道模板 - 参数上的 toLower

我有一个由多个管道使用的构建模板,我需要使用 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 转换参数并在特定步骤中使用它,我有点惊讶我在这里问这个。

azure-devops azure-pipelines

14
推荐指数
1
解决办法
3万
查看次数

如何在 Azure Pipelines PowerShell 任务中编写内联多行 powershell 脚本?

Powershell 任务的 yaml 架构允许您选择 targetType: 'inline' 并在 script: input 中定义一个脚本。

但是编写多行脚本的正确格式是什么?

文档没有指定如何,并且在第一行使用管道(就像为命令行任务指定的那样)不起作用。

powershell azure-pipelines

14
推荐指数
2
解决办法
8758
查看次数

在完成时从 Azure Devops Build Pipeline 设置 Git 标签

我正在尝试使用由 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 上动态创建或设置一个变量,并使用我想在此处标记的值。

我真的很感激对此的任何想法。

gitversion azure-devops azure-pipelines

14
推荐指数
2
解决办法
1万
查看次数

无法在 Azure DevOps Build Pipeline 中使用 .NET SDK 代理

我有一个 ASP.NET Core 2.1 并添加了 Microsoft.WindowsAzure.Storage 的 nuget 包,但是在将代码推送到 repo 后,构建管道在运行构建代理时发生包错误,是否有必要在构建中添加任何其他代理除 BUILD、RESTORE、TEST 和 PUBLISH 之外的管道。

[错误] 错误:进程 'C:\hostedtoolcache\windows\dotnet\dotnet.exe' 失败,退出代码为 1

信息:Azure Pipelines 托管代理已更新为包含 .Net Core 3.x SDK/Runtime 以及 2.2 和 2.1。除非您已锁定项目的 SDK 版本,否则可能会选择 3.x SDK,与以前的版本相比,它可能具有破坏性行为。

这是它在运行管道时显示的错误。

azure-devops azure-pipelines

14
推荐指数
2
解决办法
1万
查看次数

azure-pipelines.yml 中的多个单独触发器

我目前有一个在子目录中提供服务的 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)

azure azure-devops azure-pipelines

14
推荐指数
2
解决办法
6804
查看次数

Azure DevOps 项目管道无法从不同项目中的工件源访问 NuGet 包

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。当我查看权限时,我看到以下条目:

  • {我}:(所有者)
  • [OurCompany]\Project Collection Adminstrators : (所有者)
  • [RED]\项目管理员:(所有者)
  • RED 构建服务(我们的公司):(贡献者)
  • 项目集合构建服务(OurCompany):(贡献者)
  • [RED]\贡献者(贡献者)

公司的

因此,回到 Corporate,我们将 NuGet 包源添加到我们的 Visual Studio,然后它可以从 Azure 中提取 NuGet 包。

绿色和蓝色

在这里,我们有我们的产品。我们创建了一个构建管道,并添加了一个 NuGet …

nuget-package-restore devops azure-devops azure-pipelines azure-artifacts

14
推荐指数
2
解决办法
5853
查看次数

从另一个管道 Azure 下载管道工件

我对这个管道非常陌生,我正在尝试构建一种自动化的方法来.msi为我的应用程序构建安装程序文件。

我有 2 个项目.Net CorePython所以我创建了 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 azure-devops azure-pipelines azure-artifacts

14
推荐指数
1
解决办法
2万
查看次数