标签: azure-pipelines

如何识别 ADO Pipelines 中管道的 AzureDevOps ID?

因此,我尝试创建一个下游项目,尝试使用存储在天蓝色管道工件中的工件进行构建。我正在使用任务 DownloadPipelineArtifact@0

https://learn.microsoft.com/en-us/azure/devops/pipelines/tasks/utility/download-pipeline-artifact?view=azure-devops

它谈到了对 pipelineId 的需求,但不太确定在哪里可以找到我的其他管道的 id。有什么简单的方法吗?根据文档,它应该是一个 ~4 位数字。

谢谢

azure azure-devops azure-pipelines

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

如何更改管道变量以供在 Azure DevOps 的下一个构建中使用

我的情况如下:我创建了一个带有管道变量的 Azure DevOps 管道,假设为“变量 A”。“变量 A”的值为 1。在构建过程中,我将“变量 A”的值更改为 2。

当构建第二次运行时,我想要这些“变量 A”的值,但这又回到了 1,但我希望该值为 2,因为在上一次构建中我将“变量 A”的值设置为 2。

这些是我尝试过但没有成功的方法:

方法一:

Write-Host "##vso[task.setvariable variable=A;]2"
Run Code Online (Sandbox Code Playgroud)

方法二:

$env:A = 2
Run Code Online (Sandbox Code Playgroud)

唯一有效但我不认为这是可行的方法是通过其余 api 获取整个构建定义,然后将其放回更改的变量值。

这个问题还有其他解决办法吗?

variables azure devops azure-devops azure-pipelines

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

目标“MyApp”和“MyLib”之间的依赖关系循环

我使用 CocoaPods 在项目中包含了一个新库,每次在 Azure DevOps 代理上构建时,都会出现以下错误:

\n\n
\n

目标“MyApp”和“MyLib”之间的依赖关系循环;构建可能会产生不可靠的结果。这通常可以通过将目标的标头构建阶段移到编译源之前来解决。

\n
\n\n

循环路径:Pods-MyApp \xe2\x86\x92 MyLib \xe2\x86\x92 Pods-MyApp

\n\n

我尝试过pod deintegrate,然后pod install它确实解决了问题,但每次我尝试构建时,都会出现相同的错误,\n在本地构建完美,但不在构建代理上构建。

\n

xcode azure-devops azure-pipelines

8
推荐指数
0
解决办法
1995
查看次数

忽略 Azure Pipelines 中 .vdproj 项目的 NuGet 包还原

我正在尝试针对包含Visual Studio Installer Project的 .NET Framework 4.7.2 解决方案设置 Azure DevOps 构建管道。我已在 Windows Server 2019 VM 上设置了自托管代理,该 VM 安装了 Visual Studio 2019 Community。构建管道包含 NuGet 安装程序任务,后跟 NuGet 任务,设置用于恢复引用的 NuGet 包。下面是 YAML 片段:

- task: NuGetCommand@2
  inputs:
    command: 'restore'
    restoreSolution: '$(solution)'
Run Code Online (Sandbox Code Playgroud)

但是,使用此配置运行构建会导致构建日志中出现以下错误:

[错误]nuget 命令失败,退出代码(1) 和错误(C:\##############.vdproj(1,1): 错误 MSB4025: 项目文件无法已加载。根级别的数据无效。第 1 行,位置 1。)

这似乎是由于新版本的 nuget.exe 中的性能增强所致。基于GitHub 问题的建议是使用 MSBuild 设置跳过不存在的包目标RestoreUseSkipNonexistentTargets

GitHub问题提到使用NUGET_RESTORE_MSBUILD_ARGS NuGet CLI环境变量来设置此属性,但我不知道如何通过NuGet构建任务来实现这一点。

false由于 NuGet 现在已与 MSBuild 集成,因此我尝试通过 NuGet 任务上的命令行参数设置此属性。我修改了 YAML,将命令设置为custom以便传递参数。我的语法基于MSBuild 恢复文档。现在看起来如下:

- task: …
Run Code Online (Sandbox Code Playgroud)

msbuild nuget nuget-package-restore azure-devops azure-pipelines

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

在 Azure Pipelines 中的 Docker 映像中运行 apt-get

最近,我的工作场所已从 CircleCI 过渡到 Azure Pipelines,因此我们一直在迁移所有 CI。虽然大多数都比较简单,但这个特定的管道需要在 docker 镜像内运行我们的 Linux 作业。这是 CircleCI 中的内容:

build:
    docker:
      - image: electronuserland/builder:wine-03.18
      
    steps:
      - run: apt-get update
      - run: apt-get install -y libgnome-keyring-dev icnsutils graphicsmagick xz-utils rpm bsdtar
      - run: yarn install

      # run tests!
      - run: yarn test -- -u
      - run: yarn test -- --maxWorkers 2

      # Build the React app and the Electron app
      - run:
          name: yarn run electron-pack
            VERSION=$(node -p "var ipVer = require('./package.json').version; \
                                             var semVer = require('semver'); \ …
Run Code Online (Sandbox Code Playgroud)

docker circleci electron azure-devops azure-pipelines

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

是否可以在 Azure DevOps 上升级到性能更高的 Microsoft 托管构建代理?

我的开发团队正在使用 Azure Devops 的 Microsoft 托管构建代理,但希望拥有性能更高的构建代理。目前我们的构建时间有时会超过 5 分钟,这是不可取的。

我们不想走自托管路线,因为那样我们将需要管理我们自己的构建代理的任务。现阶段我们根本没有资源来完成这样的任务。

是否可以在 Azure DevOps 上升级到性能更高的 Microsoft 托管构建代理?

可能只是我们需要优化构建构建的方式,然后缩短构建时间 - 但想知道这样的选项是否可用。

谢谢你!

upgrade azure build-agent azure-devops azure-pipelines

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

根据条件参数在池上执行 Azure Devops 作业

我正在尝试根据条件在特定池上执行 Azure DevOps 作业。目标是在自托管代理和微软代理之间切换。这是配置:

parameters:
  custom_agent: true

jobs:
  - job: Test
    displayName: Test job
  - ${{ if eq(parameters.custom_agent, true) }}:
    - pool:
      name: mypool
      demands:
        - agent.os -equals Linux
  - ${{ if eq(parameters.custom_agent, false) }}:
    - pool:
        vmImage: 'ubuntu-latest'
    steps:
      - task: npmAuthenticate@0
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

有任何想法吗 ?

azure-devops azure-pipelines azure-pipelines-yaml

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

如何重新运行成功的 azure devops YAML 管道阶段以及后续的任何阶段?

阶段 A->B->C->D。

C 失败并出现错误,暗示阶段 B 的输出存在问题,尽管它成功了。作为失败的阶段,我可以重新运行 C,如果成功,D 将运行(在本例中它仍然失败)。我可以重新运行 B,它再次成功,但是 C 和 D 被“跳过”,我找不到(重新)运行它们的方法。

我如何重新运行 B 以便 C 和 D 能够成功?

azure azure-devops azure-pipelines

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

参数可以在一个 YAML 文件中定义并在另一个 YAML 文件中重用吗?

长话短说

是否可以在模板 YAML 中包含参数及其值,并在准备运行管道时让主 YAML 读取列表并将它们显示在下拉列表中?

与“变量重用”的 MS 示例非常相似,如下所示

# File: vars.yml
variables:
  favoriteVeggie: 'brussels sprouts'
Run Code Online (Sandbox Code Playgroud)
# File: azure-pipelines.yml

variables:
- template: vars.yml  # Template reference

steps:
- script: echo My favorite vegetable is ${{ variables.favoriteVeggie }}.
Run Code Online (Sandbox Code Playgroud)

细节

我有一个大约 50 个值的列表,这些值每周都在增长。当运维人员运行我的管道时,我希望他们从下拉列表中选择一个值。

这可以简单地通过在管道 YAML 文件中指定参数块来实现azure-pipeline.yml

parameters:
- name: subscription
  displayName: Subscription Name
  type: string
  default: sub A
  values:
  - sub A
  - sub B
  - sub C
  - sub D
Run Code Online (Sandbox Code Playgroud)

这给了我 UI 中的下拉菜单:

运行管道下拉菜单

在上面的示例中,只有 4 个值,但是,我们有超过 50 …

azure-devops azure-pipelines azure-pipelines-yaml

8
推荐指数
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
查看次数