我的基于 YAML 的 Azure DevOps 管道包含多个任务,其中continueOnError: true
. 我故意这样做,以便即使其中一些测试套件失败(每个任务运行不同的测试套件),我也可以运行所有测试套件。目前,如果这些任务中的任何一个失败,构建将被标记为“部分成功”。现在我如何强制将构建标记为“失败”?
我可以通过在每个任务失败时设置构建变量来手动执行此操作,然后在最后一步中检查该变量的值。但是,如果管道中的任何先前步骤失败,那么强制构建失败的最简单方法是什么?
azure-devops azure-pipelines azure-pipelines-tasks azure-pipelines-yaml
我在构建管道中有一个 Azure DevOps 2020.1.1 的本地实例 我有一个构建解决方案任务,在构建 .NET6 项目时,该任务将 Visual Studio 版本设置为“最新”,这失败了,当然不支持 .NET6因为它似乎识别的最新版本是 2019,所以 2022 甚至没有列在 Visual Studio Verios 下拉列表中。
我已在服务器上安装了 Visual Studio 2022,构建代理可以看到它(它们已更新到最新的代理版本)。
如何让最新的 Visual Studio 版本在构建解决方案任务中显示为 2022?据我所知,微软还没有为此发布任何本地服务器的更新,有没有办法添加它或让它找到它?
azure-devops azure-pipelines azure-pipelines-tasks visual-studio-2022
我想查看预定义变量的路径值,就像$(System.DefaultWorkingDirectory)
我想查看其中存储的值一样。我无法找到这个变量值,所以我在 Azure DevOps 中哪里可以找到它。
简而言之,我如何检查该特定发布管道中使用的 Build.SourcesDirectory 或 Build.Repository.LocalPath 是什么?
azure azure-devops azure-pipelines azure-devops-self-hosted-agent azure-pipelines-tasks
我正在尝试根据我发布到的每个环境在我的 Web.config 上进行文件转换。大多数情况下,在我部署到发布管道上的 UAT 阶段之前,一切看起来都很好。
在我的构建管道中,这是我正在使用的 YAML 文件:
# ASP.NET
# Build and test ASP.NET projects.
# Add steps that publish symbols, save build artifacts, deploy, and more:
# https://learn.microsoft.com/azure/devops/pipelines/apps/aspnet/build-aspnet-4
pool:
vmImage: 'windows-latest'
variables:
solution: 'SubmissionService.sln'
buildPlatform: 'Any CPU'
buildConfiguration: 'Release'
steps:
- task: NuGetToolInstaller@1
displayName: 'Install Newer Version on NuGet'
inputs:
checkLatest: true
- task: NuGetCommand@2
displayName: 'Restore NuGet Packages for Solution'
inputs:
command: 'restore'
restoreSolution: '$(solution)'
feedsToUse: config
nugetConfigPath: ./Nuget.config
- task: VSBuild@1
displayName: 'Create Artifact For Solution' …
Run Code Online (Sandbox Code Playgroud) azure-pipelines-build-task azure-pipelines azure-pipelines-release-pipeline azure-pipelines-release-task azure-pipelines-tasks
我有以下管道结构:
Job A --> Generate build files
Parallel:
Job B --> Uses the build files
Job C --> Uses the build files
Job D --> Publishes the build files
Job E --> Release
On finish, I want to delete the build files completely
Run Code Online (Sandbox Code Playgroud)
我不相信使用工件(因为上传/下载所花费的时间),但我似乎需要使用它才能跨作业使用文件
在管道结束时,我实际上不需要保留构建文件(又名工件),那么我如何在管道完成时简单地删除它们呢?
我正在使用azure-pipelines.yml。
azure-devops azure-pipelines azure-pipelines-tasks azure-pipelines-yaml
我认为对 ##vso[task.complete result=Failed;] 的调用应该使调用它的脚本步骤立即失败,但我现在在我的管道中看到了一种情况,但情况并非如此。
我的假设是错误的还是Azure管道脚本任务中存在错误?
我的构建代理正在 Ubuntu 容器中运行任务,并且代理本身是 Linux 代理。
我在多阶段管道中有一个矩阵,它生成作业并签出到不同的 git 存储库并进行提交。
该矩阵将存储库名称作为值,我想在checkout
任务期间引用它。但是,由于在运行时评估变量,我不断收到错误。
即矩阵
matrix:
repo_foo:
repo: foo
repo_bar:
repo: bar
Run Code Online (Sandbox Code Playgroud)
我想做一些类似的事情
steps:
- checkout: $[ variables['repo'] ]
Run Code Online (Sandbox Code Playgroud)
但这些不会被评估并在管道启动之前抛出错误。同样,使用${{ variables['repo'] }}
也会失败,因为它在编译时进行评估,从而变成空字符串。
我已将潜在的存储库定义为管道 yaml 中的资源,并尝试将完整的 git 路径作为变量值传递。
我还有其他方法可以做到这一点吗?
azure azure-devops azure-pipelines azure-pipelines-tasks azure-pipelines-yaml
在数据库项目构建和发布管道中使用 Azure DevOps YAML
这段代码正确地获取了我的四个 dacpac 文件,我可以看到这些文件被复制到控制台中
- task: CopyFiles@2
displayName: Copy build output to artifacts staging
inputs:
SourceFolder: "$(Build.SourcesDirectory)"
flattenFolders: true
Contents: '**\bin\**\*.dacpac'
TargetFolder: "$(Build.ArtifactStagingDirectory)"
Run Code Online (Sandbox Code Playgroud)
这段代码正确地获取了我的发布文件,我可以看到这些文件正在控制台中复制
- task: CopyFiles@2
displayName: Copy build output to artifacts staging
inputs:
SourceFolder: "$(Build.SourcesDirectory)"
flattenFolders: true
Contents: '**\PublishProfile\*.publish.xml'
TargetFolder: "$(Build.ArtifactStagingDirectory)"
Run Code Online (Sandbox Code Playgroud)
这段代码报告“找到零个文件”
- task: CopyFiles@2
displayName: Copy build output to artifacts staging
inputs:
SourceFolder: "$(Build.SourcesDirectory)"
flattenFolders: true
Contents: |
'**\bin\**\*.dacpac'
'**\PublishProfile\*.publish.xml'
TargetFolder: "$(Build.ArtifactStagingDirectory)"
Run Code Online (Sandbox Code Playgroud)
我还使用 Get-ChildItem 来双重确认这些文件是否存在。
好像| / 多行不能按描述工作。
我正在 Linux 服务上使用 Web App 并使用 DevOps 发布管道来部署 python Web 应用程序。我正在使用的管道任务称为AzureRmWebAppDeployment@4
。
在部署之间,容器中的文件不会被删除,这会导致问题。
我注意到我是否使用不同类型的应用程序服务(即 Windows 上的 Web 应用程序)以及部署方法是否设置为存在Web Deploy
选项Remove additional files at destination
(参见屏幕截图)。然而,我们正在使用一种Zip Deploy
方法,并且更喜欢使用 Linux 服务。如果没有应用程序服务和部署方法的组合,这个选项对我来说不可用。
有人可以建议一种在部署时删除容器内容的替代方法吗?另外,您是否了解为什么在使用 Zip Deploy 和 Linux 时无法通过管道任务使用此选项?
预先感谢您提供的任何帮助。
kudu azure-web-app-service azure-devops azure-pipelines azure-pipelines-tasks
所以我正在研究一堆管道,并且我已经使用 yml 模板设置了所有内容。然而,我很难在模板步骤中扩展受保护的变量。我尝试通过正常方式传递受保护的变量,但它们似乎没有得到扩展。然后我尝试使用变量组,据说我可以直接在模板内部引用它。我说据说是因为微软在他们的网站上这么说https://learn.microsoft.com/en-us/azure/devops/pipelines/library/variable-groups?view=azure-devops&tabs=yaml:
“您还可以在模板中引用变量组。在模板variables.yml中,引用了my-variable-group组。变量组中包含一个名为myhello的变量。”
variables:
- group: my-variable-group
Run Code Online (Sandbox Code Playgroud)
但是,每当我variables
在模板代码中包含一个部分时,Azure DevOps 会在运行管道之前解析 yml 时立即抱怨它。它会输出以下消息:
/ymls/my-template@my-repo(行:1,列:1):意外值“变量”
我不坚持使用变量组,我只是想在我的 yml 模板中扩展受保护的变量。有人知道该怎么做吗???
非常感谢任何帮助!
azure-devops azure-pipelines azure-pipelines-tasks azure-pipelines-yaml