因此,我尝试创建一个下游项目,尝试使用存储在天蓝色管道工件中的工件进行构建。我正在使用任务 DownloadPipelineArtifact@0
它谈到了对 pipelineId 的需求,但不太确定在哪里可以找到我的其他管道的 id。有什么简单的方法吗?根据文档,它应该是一个 ~4 位数字。
谢谢
我的情况如下:我创建了一个带有管道变量的 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 获取整个构建定义,然后将其放回更改的变量值。
这个问题还有其他解决办法吗?
我使用 CocoaPods 在项目中包含了一个新库,每次在 Azure DevOps 代理上构建时,都会出现以下错误:
\n\n\n\n\n目标“MyApp”和“MyLib”之间的依赖关系循环;构建可能会产生不可靠的结果。这通常可以通过将目标的标头构建阶段移到编译源之前来解决。
\n
循环路径:Pods-MyApp \xe2\x86\x92 MyLib \xe2\x86\x92 Pods-MyApp
\n\n我尝试过pod deintegrate,然后pod install它确实解决了问题,但每次我尝试构建时,都会出现相同的错误,\n在本地构建完美,但不在构建代理上构建。
我正在尝试针对包含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
最近,我的工作场所已从 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) 我的开发团队正在使用 Azure Devops 的 Microsoft 托管构建代理,但希望拥有性能更高的构建代理。目前我们的构建时间有时会超过 5 分钟,这是不可取的。
我们不想走自托管路线,因为那样我们将需要管理我们自己的构建代理的任务。现阶段我们根本没有资源来完成这样的任务。
是否可以在 Azure DevOps 上升级到性能更高的 Microsoft 托管构建代理?
可能只是我们需要优化构建构建的方式,然后缩短构建时间 - 但想知道这样的选项是否可用。
谢谢你!
我正在尝试根据条件在特定池上执行 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)
有任何想法吗 ?
阶段 A->B->C->D。
C 失败并出现错误,暗示阶段 B 的输出存在问题,尽管它成功了。作为失败的阶段,我可以重新运行 C,如果成功,D 将运行(在本例中它仍然失败)。我可以重新运行 B,它再次成功,但是 C 和 D 被“跳过”,我找不到(重新)运行它们的方法。
我如何重新运行 B 以便 C 和 D 能够成功?
是否可以在模板 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 …
我有以下管道结构:
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
azure-devops ×10
azure-pipelines ×10
azure ×4
build-agent ×1
circleci ×1
devops ×1
docker ×1
electron ×1
msbuild ×1
nuget ×1
upgrade ×1
variables ×1
xcode ×1