因此,由于没有其他人回答此问题,我将详细说明我最终做了什么(也许不是最好的方法,但它适用于我的设置,欢迎提出建议!)。
要从本地计算机与 Azure DevOps 平台交互,您需要配置一个自托管代理(基于您的特定操作系统),这将允许您触发构建、存档并将构建工件上传到 Azure DevOps平台。这样您也不必轮询 SCM 更改(我认为有时这不是那么优雅)。
1.因此,您需要按照此处为您的本地自托管代理进行的设置:
注意:我已选择在 Windows 上将代理作为服务运行以进行设置
2。接下来按照您通常的方式设置您的 Jenkins 构建作业,并使用您通常的 repo 访问设置。需要注意的事项如下:
- 在“构建触发器”下,选择轮询 SCM 选项,但确保计划为空白,这将确保来自代理的提交后挂钩的触发器有效。示例设置如下所示:
- 在“构建后操作”下,确保您正在按要求归档工件。示例如下:
3.现在是时候设置项目的“Jenkins 服务连接”了,可以从 Azure DevOps 中项目视图左下方的“项目设置”选项卡访问。请注意,这基本上可以帮助您自托管代理找到本地运行的 Jenkins 实例(或其他网络可访问位置!)并与之通信。转到 Pipelines -> Service Connections 和 Jenkins 的新服务连接。请注意,这里的技巧是使用本地自托管代理所看到的连接 URL,这意味着它可以是代理可以正常访问的任何 IP(包括本地主机)。用户名和密码与您在 Jenkins 中设置的相同。示例如下:
注意:您可以尝试执行“验证并保存”,但它会引发错误,因此请忽略该错误或直接“保存而不验证”。此外,您还必须为每个项目执行此操作,这与每台机器的自托管代理设置不同。
4.现在您只需配置构建管道,将作业分配给正确的代理并指向正确的服务端点。现在,在您构建管道设置下,使用具有自托管代理的代理池,该代理可以访问您的构建服务器。并选择您刚刚在上述步骤中创建的 Jenkins 连接。其余设置与您通常设置项目的构建管道的方式相同。一个例子如下:
注意:这里的关键是正确的“作业名称”(这应该与您在 Jenkins 构建服务器实例中设置的名称相同)和正确的“Jenkins 服务连接”。
5.剩下的很简单,因为您现在需要确保您有一个步骤来“下载工件”(如果您不希望 DevOps 平台上的工件)和“发布工件”(这对于在您的詹金斯队列作业步骤之后,您的发布管道可以查看该构建工件并触发它)。确保设置正确的作业目录以从本地自托管代理下载。两个步骤的示例设置:
注意:如果您在下载和发布路径方面遇到问题,请参阅此链接以了解自托管代理的预定义变量:https://docs.microsoft.com/en-us/azure/devops/pipelines/build/variables?view=azure-devops&tabs=yaml
6.现在,在您的发布管道中,您应该能够从构建管道中添加工件源。示例如下:
现在您应该可以在 Azure DevOps 平台上获取云中的本地工件,以防您因任何原因无法使用 Microsoft 提供的构建代理!