问题标签 [azure-devops-self-hosted-agent]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
504 浏览

azure-devops - 我们可以为多个组织设置一个自托管代理吗?

是否可以创建一个自托管代理并将其分配给 azure devops 上的多个组织?

谢谢

0 投票
1 回答
1071 浏览

azure-devops - 如何向代理添加新的动态可发现功能?

更新

我将在这里提出一个功能提供者作为我帖子的更新。如果您需要更多详细信息,请告诉我。

我们目前在代理源代码中有一堆交付的能力提供者:

https://github.com/microsoft/azure-pipelines-agent/tree/master/src/Microsoft.VisualStudio.Services.Agent/Capabilities

  • 代理人
  • 环境
  • 尼克斯
  • 电源外壳

正在提议的是一个名为ExecutableCapabilitiesProvider.

这个新的 ExecutableCapabilitiesProvider 可能会有一个可以在代理机器上编辑的配置文件。该文件的格式可能是:

作为自托管池的维护者,我将使用适合我的条目配置此文件,并让代理在启动时运行它。这样我就不会为我的能力硬编码任何值,而是在启动时确定这些值。

我会更进一步,添加一个新的 API 调用来添加比当前要求名称/值更灵活的功能。例如,将参数更改为Name, Provider, Params

原帖

我想让我的代理报告新功能,这些功能不是静态的,而是命令或类似的结果?我怎样才能做到这一点?我们的代理在 linux 机器上运行。具体来说,我想调用一个新功能pip-packages,其值是pip freeze在 shell 上执行的命令的结果。

0 投票
1 回答
1366 浏览

azure - 如何以非 root 用户身份在自托管构建代理上执行管道

我已经构建了在 docker 中运行的自托管 ubuntu 代理。

一切正常,构建代理正在工作等。

除了管道步骤中的所有内容都以 root 而不是非 root 用户身份执行。

例如,当我尝试执行“npm ci”并查看我的构建代理日志时:

; node bin location = /usr/bin/node ; cwd = /azp/agent/_work/1/s/Core ; HOME = /root

vs 来自 Microsoft 托管的构建代理的日志:

; node bin location = /usr/local/bin/node ; cwd = /home/vsts/work/1/s/Core ; HOME = /home/vsts

这给我带来了很多阶段的问题,因为以 root 身份运行一些命令需要不同的设置等。有谁知道如何从 ROOT 更改它?

我在dockerfile和Microsoft 提供的start.sh脚本中进行了尝试,但没有奏效。如果我以 docker 用户而不是 root 身份执行 start.sh,则构建代理根本不会启动。有什么线索吗?想法?

0 投票
0 回答
104 浏览

azure-devops - Azure DevOps 计划和手动之间的不同行为

Agent.Version = 2.144.2我可以观察到,当手动触发或调度构建管道时,我的自托管代理 ( ) 会获得不同的结果。

1. 观察失败(安排每晚凌晨 3 点构建)

在此处输入图像描述

2. 观察失败(安排在凌晨 3 点进行夜间构建)

在此处输入图像描述

成功观察(手动构建)

在此处输入图像描述

可悲的是,我还可以通过运行完全正常的相同任务来观察 Schedule nightly builds。


错误

调度的构建失败导致代理达到 1 小时的最大执行时间。原因是 devenv.ps1 任务需要比通常更长的时间。

Task: devenv.ps1是一项自制任务,在不了解此任务的详细信息的情况下,无法说出这里发生了什么。这是一项基于 powershell 脚本的自定义任务,用于执行git cleannuget restore、 一些个人prebuild events,最后是devenv rebuild.

在日志中我找不到这种行为的提示。


问题

手动任务与计划任务有不同的行为是否有任何原因?有没有人观察到类似的行为?

编辑#1

我从自定义 devenv 任务切换到了官方的Visual Studio-Build任务。不幸的是,结果没有改变:

在此处输入图像描述

在这个版本中,2 小时的超时时间也不够。


编辑#2

我设置了一个测试系列,现在我可以说:一天中的第一个计划构建似乎超时了。只是为什么不清楚。

在此处输入图像描述

屏幕截图显示了一系列 shedueld 构建。所有构建的任务都是相同的。

我之前也做过类似的观察,但我可以完美地放在一张截图中。这怎么可能?

0 投票
1 回答
2185 浏览

powershell - Azure Devops 交互式代理

为了运行我们的 UI 测试,我们使用了“Visual Studio 测试代理部署”任务,该任务现在已被弃用。所以我已将任务移至使用“Visual Studio 测试”任务。

这需要将代理配置为交互式进程而不是服务。因此,我创建了一个新的构建服务器,其中包含以管理员权限用户运行的交互式进程代理。

对于签名或代码,我们使用安装在构建服务器上的签名证书。但是由于某种原因,这个新的构建服务器似乎在每次管道运行时都会丢失证书凭据。

我试图运行一个 ps1 文件来重新安装证书,但没有成功。下面是我用于重新安装证书的代码,我正在使用任务“目标机器上的 PowerShell”来运行脚本。运行此脚本的用户是机器上的管理员,是否有其他方法可以让 ps1 文件始终以管理员身份运行?

任何帮助将不胜感激。

0 投票
1 回答
668 浏览

azure-devops - Azure Devops - Azure powershell 任务查找发布/部署目录

我正在运行 Azure devops,我有一个管道和一个版本(在自托管代理上运行),并且该版本设置为发送到一个 azure 应用程序服务。部署工作正常,唯一的问题是我还希望能够(基于我的一些发布变量)在站点的 web.config 已经部署到 azure 网站之后对其进行编辑。

我正在使用 Azure Powershell 任务(https://docs.microsoft.com/en-us/azure/devops/pipelines/tasks/deploy/azure-powershell?view=azure-devops),但我找不到发布变量 ( https://docs.microsoft.com/en-us/azure/devops/pipelines/release/variables?view=azure-devops&tabs=batch ) 中显示站点所在目录的任何位置。浏览 Kudu,它非常基本,例如 d:\home\site\wwwroot\ ,但使用它根本不起作用。

我正在寻找的这个帖子配置是不是真的不可能,还是我应该以不同的方式接近它?

0 投票
1 回答
413 浏览

azure-devops - 仅在特定作业成功时如何限制代理作业运行

我在 Azure Devops Release Pipeline 中有 3 个工作:

  • 代理工作1
  • 代理工作2
  • 代理工作3

我想以这样一种方式配置代理作业2,即使代理作业 1失败,它也应该运行。

为此,我已将Run this job的Agent job2属性设置为even if the previous job failed

现在,我想配置代理 job3,使其仅在代理 job2成功时才运行

在此处输入图像描述

我需要在代理 Job3 中进行什么配置以使其依赖于代理 Job2

0 投票
1 回答
1596 浏览

azure-devops - 自托管代理 Azure PowerShell(核心)- 未找到模块

我在 Azure DevOps 中运行自托管 Windows 代理。我已经安装了 PowerShell Core 6.2.3,并且作为管理员安装了 Az 模块,以便所有用户都可以使用它。

当我使用 Azure PowerShell 任务 (V4) 运行构建时 - 标记为“使用 PowerShell 核心”和 Azure PowerShell 的“最新版本”,我收到以下消息:

如果我在托管代理上运行脚本,它工作正常。我无法弄清楚它为什么会失败。我认为它在构建代理运行的配置文件或环境中有所不同 - 但我不确定如何检查这一点。

如果我打开 PSCore 窗口并运行,则在构建代理上:

它正确地找到了模块。

0 投票
1 回答
259 浏览

continuous-integration - 运行带有对话框的应用程序的 Azure DevOps 代理

我正在尝试使用 Python 脚本在 Azure DevOps 中运行 National Instruments TestStand序列分析器作为构建的一部分。代理作为服务运行。

当我手动运行它时它可以工作,但是当代理尝试运行它时它会失败:

我尝试先使用 cmd 运行它,但取决于代理服务用户,它要么卡住,要么抛出错误 -532462766 (0xE0434352) 并将类似的条目写入事件日志。

不需要用户交互:通常对话框在分析完成时打开和关闭。我在寻找它创建的退出代码和报告文件。有没有办法让它工作?

0 投票
1 回答
264 浏览

azure - 远程创建 azure devops windows 自托管代理

需要以编程方式创建 azure devops windows 自托管代理(需要为现有 VM 远程安装)。

我有 PS 脚本,如果我在虚拟机中运行它(以管理员身份)并且代理安装成功,它运行良好。但我想在不登录的情况下为现有 VM 创建此代理(远程我需要安装代理),因为我只需要在 Azure devops 管道中添加 ARM 模板,并且应该为现有 VM 创建代理。

由于这需要远程安全地安装,由于某些限制,我不应该使用自定义脚本。如果我们可以在没有自定义脚本并使用任何其他自动化方式的情况下远程实现此安装,那就太好了。

任何信息都会有所帮助,谢谢。