标签: azure-pipelines

Azure DevOps:如何从发布管道中的 PowerShell 脚本构建 Azure 管道中检索构建工件?

我已经发布了一个构建工件,发布到 $(Build.ArtifactStagingDirectory)/drop,工件名称为“some_sidebar”,工件发布位置是 Azure Pipeline。

如果发布任务中只有 PowerShell Skript,如何在发布管道中检索该工件?

这是代码特定部分:

$path = ".\_some_sidebar\drop"
#$path = $(Build.Repository.LocalPath)
$SPFolderName = "Style Library/_some_sidebar";

# Upload template list
$status = "Uploading template list to Location: " + $SPFolderName
Write-Host $status
$te = Add-PnPFile -Path $path"\some_sidebar.js" -Folder $SPFolderName -Checkout
Set-PnPFileCheckedIn -Url $te.ServerRelativeUrl
Run Code Online (Sandbox Code Playgroud)

我收到以下错误:

 Uploading template list to Location: Style Library/_some_sidebar
2020-01-16T09:51:20.5062033Z Add-PnPFile : Local file was not found.
2020-01-16T09:51:20.5062546Z At D:\_work\_temp\6d682160-e8a7-4c56-ab30-7ff8c40f2958.ps1:51 char:7
2020-01-16T09:51:20.5062832Z + $te = Add-PnPFile -Path $path"\some_sidebar.js" -Folder $SPFolderName  ...
Run Code Online (Sandbox Code Playgroud)

我假设 azure 管道中的构建工件路径是虚拟机中的某个路径...但我不知道如何在 shell 脚本内指定该路径,或者该路径是什么...?

powershell release azure artifact azure-pipelines

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

Azure Pipelines 将 xUnit InlineData 视为一项测试而不是多项测试

在我们的 Azure Pipelines 管道中,我们有采用 InlineData 参数的 .NET Core xUnit 测试方法。测试运行程序运行所有测试方法,并在其控制台输出中正确报告每个 InlineData 实例作为测试运行。但是,Azure Pipelines 报告的测试计数较低,因为它将 [Theory] ​​测试计为一项测试(而不是对每个 InlineData 实例进行一项测试)。

如何使 Azure Pipelines 将 InlineData 的所有实例报告为测试?

作为示例,这是一个作业输出。

测试作业报告 9 个测试。9 个测试包括两个 [Theory] ​​方法,每个方法都有两个 InlineData:

在此输入图像描述

Azure Pipelines 仅报告 7 个测试,而不是预期的 9 个测试:

在此输入图像描述

xunit .net-core azure-pipelines

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

Azure DevOps Yaml 管道中使用的 YAML 文件中的双大括号“{{}}”意味着什么?

最近正在研究 Azure DevOps 模板。并遇到了这种双花括号语法。只是想知道如何在 Azure DevOps 中使用双花括号。

看过一些关于相同内容的帖子。

  1. 将条件值分配给 Azure DevOps 中的变量

  2. Yaml 文件中的大括号

  3. 如果是在 Azure DevOps 中

  4. Azure DevOps 中的条件变量赋值

可以说,我在组中定义了一个变量,如下所示。

在 Azure DevOps 中定义变量组

我们还可以在 yaml 文件中定义变量,如下所示。

variables:
- name: BuildConfiguration
  value: 'Release'

- name: finalBuildArtifactName
  value: 'TempFolderName'
Run Code Online (Sandbox Code Playgroud)

什么时候应该使用双大括号语法?

我有关于并使用以下方法来引用变量的想法。

  1. 变量['MyVar']
  2. 变量.MyVar

与上述两个相比,我们可以用双花括号完成什么?

让 yaml 管道中的东西正常工作非常困难。进行更改、签入、运行管道、查看结果并再次返回。这非常耗时,而且至少可以说并不顺利。

azure-devops azure-pipelines azure-pipelines-yaml

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

当构建部分成功时,Azure DevOps 在提交历史记录下显示“失败”状态(应显示“警告”或类似内容)

在我的管道中,我有一项任务(除其他外)要么成功,要么成功但存在问题,由以下因素控制:

if (-Not $packagesAreUpToDate) {Write-Host "##vso[task.complete result=SucceededWithIssues;]"}
Run Code Online (Sandbox Code Playgroud)

此任务使整个作业(包含其他任务)具有“警告”状态,这是所期望的。

例子

问题是在观察提交历史记录时,管道看起来好像失败了(当它们应该具有“警告”或类似状态时)。

例子

有没有办法解决这个问题,或者这是 Azure DevOps 尚未添加的错误或功能?

azure-powershell azure-devops azure-pipelines

7
推荐指数
0
解决办法
645
查看次数

更新自托管代理的 PAT

从其 PAT 配置了自托管代理的用户即将离开组织。一旦用户离开组织,他的帐户将从 Azure AD 中删除,因此他的 PAT 将过期。应如何接管自托管代理或使用其他用户帐户更新 PAT?

我无法看到任何有关 PAT 更新的 MSFT 文档。在这种情况下,卸载并重新安装是唯一的选择吗?

azure-devops azure-pipelines

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

Linux 代理上的 AzureFileCopy@3 等效项

我正在windowAzure Pipeline 中使用基于代理。其中一项任务是将项目复制到 Azure Blob 存储。

- task: AzureFileCopy@3
  displayName: 'Upload to Azure'
  inputs:
     sourcePath: '$(Pipeline.Workspace)/dist'
     azureSubscription: 'My Subscription'
     destination: 'AzureBlob'
     storage: $(featureStorageName)
     containerName: '$web'
Run Code Online (Sandbox Code Playgroud)

微软建议az storage blob使用task: AzureCLI@2

此任务是用 PowerShell 编写的,因此仅在 Windows 代理上运行时才有效。如果管道需要 Linux 代理并且需要将文件复制到 Azure 存储帐户,请考虑在 Azure CLI 任务中运行 az storage blob 命令作为替代方案。

问题

我可以在Linux代理上运行的等效命令是什么?

我认为骨架会这样开始:

task: AzureCLI@2
inputs:
    azureSubscription: 'My Subscription'
    scriptType: 'pscore'
    scriptLocation: 'inlineScript'
    inlineScript: |
    az ...
Run Code Online (Sandbox Code Playgroud)

azure-pipelines

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

在 Azure Devops 中按顺序运行作业

stages:
- stage: A
     jobs:
     - job: A1
     pool: CloneX
     displayname: My Job A
     - job: A2
     pool: CloneX
     displayname: My Job B
Run Code Online (Sandbox Code Playgroud)

这是我的 Azure Devops yaml。

我注意到 2 个代理(作为 Windows 服务)在同一台池机器 CloneX 上运行。它是一台内部机器。

作业 A1 和作业 A2 必须按顺序运行。

然而,A1 和 A2 都是并行安排的。

如何解决这个问题?

将作业 A2 移至阶段 B?或者

在 CloneX 池上仅保留 1 个代理?

yaml azure-devops azure-pipelines

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

Android、Azure Devops 在运行管道时出现错误##[错误]错误:进程“/Users/runner/work/1/s/gradlew”失败,退出代码为 1

Android、Azure Devops 在运行管道时出现错误##[错误]错误:进程“/Users/runner/work/1/s/gradlew”失败,退出代码为 1

在语言环境系统中,生成了所有工作 apk,但在 azure devops 上运行管道时,它显示错误

FAILURE: Build failed with an exception.

* Where: Build file '/Users/runner/work/1/s/app/build.gradle' line: 2

* What went wrong: An exception occurred applying plugin request [id: 
'com.android.application']
 > Failed to apply plugin 'com.android.internal.application'.
   > Android Gradle plugin requires Java 11 to run. You are currently using Java 1.8.
Run Code Online (Sandbox Code Playgroud)

我已经在使用 Java 11

我搜索了相同的内容但没有得到任何解决方案。

version-control android azure-devops azure-pipelines cicd

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

如何在 Azure 构建管道中有效缓存 Cargo/Rust 项目

我有一组 Azure 构建管道,用于编译 rust 项目,并且当前使用 blob 存储将.cargotarget文件夹存储为缓存。

在本地编译时,一旦第一次编译了二进制文件,后续的cargo build就不会再次编译依赖库/板条箱,而只是本地二进制文件,但是使用我当前的管道系统,在下载缓存并使用正确的目标文件夹后构建后,管道仍然下载并构建 crates。

这是我用于缓存和任何管道构建的 config.toml。

[build]
target-dir = "./target"
dep-info-basedir = "."
incremental = true
Run Code Online (Sandbox Code Playgroud)

在某些情况下,它减少了编译时间,但远没有我预期的那么多。我可以缓存更多文件夹以提高速度吗?是否存在货物正在检查并污染缓存的某些缓存标识符?

管道运行一个自定义的 xtask 二进制文件,该二进制文件执行许多任务,包括运行,cargo build --release这是否会导致问题?

caching rust rust-cargo azure-blob-storage azure-pipelines

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

在 Ubuntu 18.04 上安装 Nodejs v18

我们使用 Azure Pipelines 和使用 Ubuntu 18.04 作为操作系统的构建代理。

\n

我目前正在尝试将管道中的 Nodejs 版本从 16 更新到 18。通过使用Azure Pipelines 中的 NodeTool 任务versionSpec: "18.x".

\n

然而,在使用 Nodejs 之后,它提示我缺少依赖项:\nnode: /lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.28\' not found (required by node)\\

\n

我什至可以使用 docker 按照以下说明复制此行为

\n
docker pull ubuntu:18.04\ndocker run -it {IMAGE-ID}\n\n# console switches to TTY session for running container\xe2\x80\xa6\n\napt update\napt install curl\ncurl -fsSL https://deb.nodesource.com/setup_18.x | bash\napt-get install -y nodejs\n\n# checking the node version generates the error above\n\nnode -v\n
Run Code Online (Sandbox Code Playgroud)\n

这里的问题可能有点过分了,但我不习惯使用linux系统。

\n

我可以轻松解决 Nodejs 的这种依赖关系吗?\n或者这里安装缺少的依赖关系的一般方法是什么? …

ubuntu node.js azure-pipelines

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