标签: azure-pipelines-tasks

如果之前的任务失败,如何强制 Azure DevOps 管道失败?

我的基于 YAML 的 Azure DevOps 管道包含多个任务,其中continueOnError: true. 我故意这样做,以便即使其中一些测试套件失败(每个任务运行不同的测试套件),我也可以运行所有测试套件。目前,如果这些任务中的任何一个失败,构建将被标记为“部分成功”。现在我如何强制将构建标记为“失败”?

我可以通过在每个任务失败时设置构建变量来手动执行此操作,然后在最后一步中检查该变量的值。但是,如果管道中的任何先前步骤失败,那么强制构建失败的最简单方法是什么?

azure-devops azure-pipelines azure-pipelines-tasks azure-pipelines-yaml

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

Visual Studio 2022 未列在 DevOps 构建解决方案管道任务中

我在构建管道中有一个 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

13
推荐指数
3
解决办法
8725
查看次数

如何查看 Azure Devops 中的预定义变量

我想查看预定义变量的路径值,就像$(System.DefaultWorkingDirectory)我想查看其中存储的值一样。我无法找到这个变量值,所以我在 Azure DevOps 中哪里可以找到它。

简而言之,我如何检查该特定发布管道中使用的 Build.SourcesDirectory 或 Build.Repository.LocalPath 是什么?

azure azure-devops azure-pipelines azure-devops-self-hosted-agent azure-pipelines-tasks

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

如何在 Azure Pipelines 上正确执行文件转换

我正在尝试根据我发布到的每个环境在我的 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

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

如何在完成后删除Azure管道工件?

我有以下管道结构:

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

8
推荐指数
1
解决办法
9506
查看次数

##vso[task.complete result=Failed;] 未使脚本步骤失败

我认为对 ##vso[task.complete result=Failed;] 的调用应该使调用它的脚本步骤立即失败,但我现在在我的管道中看到了一种情况,但情况并非如此。

我的假设是错误的还是Azure管道脚本任务中存在错误?

我的构建代理正在 Ubuntu 容器中运行任务,并且代理本身是 Linux 代理。

azure-pipelines azure-pipelines-tasks

8
推荐指数
2
解决办法
5338
查看次数

在 Azure Pipelines 中结帐时使用运行时变量作为存储库名称

我在多阶段管道中有一个矩阵,它生成作业并签出到不同的 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

7
推荐指数
1
解决办法
5992
查看次数

CopyFiles 任务未拾取文件

在数据库项目构建和发布管道中使用 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)

此管道多行语法遍布示例 https://learn.microsoft.com/en-us/azure/devops/pipelines/tasks/utility/copy-files?view=azure-devops&tabs=yaml#examples

我还使用 Get-ChildItem 来双重确认这些文件是否存在。

好像| / 多行不能按描述工作。

azure-devops azure-pipelines-tasks azure-pipelines-yaml

7
推荐指数
1
解决办法
6354
查看次数

Azure 应用服务部署任务选项,用于在部署时删除容器中的文件

我正在 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

6
推荐指数
1
解决办法
7980
查看次数

如何在 Azure Pipelines yml 模板中使用变量组?

所以我正在研究一堆管道,并且我已经使用 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

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