将来自 "LOCAL" Jenkins 的最新构建项目发布到 Azure DevOps 发布管道?

Publish latest build artifact from "LOCAL" Jenkins to Azure DevOps Release Pipeline?

我的一台备用计算机 (win10) 上有一个本地 Jenkins 服务器 运行。请注意,它不在任何类型的服务器后面,因此仅在我的本地网络中可用。我已经对其进行了设置,以便它从我的远程 git 存储库中连续获取并构建工件并将它们存档以成功构建。我想将这些档案发布到我的 AzureDevops 发布管道。我该怎么做呢? (是的,我已经浏览了所有教程,但他们假设我在云端某处的虚拟机上安装了 Jenkins 运行)。

到目前为止,我还没有在网上找到教程,因为我没有 URL 这个 Jenkins 实例,因为它只能在我的本地网络上使用。我无法真正在远程 Jenkins 服务器上构建这些工件,因此我真的只能将此解决方案用于 运行 构建。

我希望 Jenkins 构建的这些存档在我的 Azure DevOps 发布管道中直接可用,在每次成功构建时。感谢您的帮助!

既然没有其他人回答过这个问题,我将详细说明我最终做了什么(可能不是最好的方法,但它适用于我的设置,欢迎提出建议!)。

要从本地计算机与 Azure DevOps 平台交互,您需要配置一个自托管代理(基于您的特定 OS),这将允许您触发构建、存档和上传将工件构建到 Azure DevOps 平台。这样你也不必轮询 SCM 更改(我认为有时不是那么优雅)。

1.因此,您需要按照此处为您的本地自托管代理完成设置:

注意:我已选择 运行 代理作为 windows 上的服务用于我的设置

2。接下来,使用您通常的回购访问设置,像往常一样设置您的 Jenkins 构建作业。需要注意的事项如下:

  • 在 "Build Triggers"、select 的 Poll SCM 选项下,但要确保计划是空白的,这将确保来自 post-commit 挂钩的触发器来自代理工作。示例设置如下所示:

  • 在 "Post-build Actions" 下,确保您按要求归档工件。示例如下:

3。现在是设置项目 "Jenkins Service Connection" 的时候了,这可以从 Azure DevOps 中项目视图左下角的“项目设置”选项卡访问。请注意,这基本上可以帮助您自托管代理在本地(或其他网络可访问位置!)定位并与 Jenkins 实例 运行ning 通信。转到 Pipelines -> Service Connections 和 Jenkins 的新服务连接。请注意,这里的技巧是使用 URL 作为本地自托管代理所见的连接,这意味着它可以是代理可以正常访问的任何 IP(包括本地主机)。用户名和密码与您在 Jenkins 中设置的相同。示例如下:

注意:您可以尝试执行 "Verify and Save",但它会引发错误,因此请忽略该错误或继续 "Save without verification"。此外,您必须针对每个项目执行此操作,这与针对每台机器的自托管代理设置不同。

4.现在您只需要配置您的构建管道,将作业分配给正确的代理并指向正确的服务端点。现在在您构建管道设置下使用具有可以访问您的构建服务器的自托管代理的代理池。并选择您刚刚在上述步骤中创建的 Jenkins 连接。其余设置与您通常设置项目构建管道的方式相同。示例如下:

注意:此处的关键是正确的 "Job name"(这应该与您在 Jenkins 构建服务器实例中设置的相同)和正确的 "Jenkins service connection".

5.剩下的就很简单了,因为你现在需要确保你有一个步骤 "Download artifacts"(如果你不想在 DevOps 平台上使用工件,则没有必要)和 "Publish Artifacts"(这是您的发布管道需要在您的 jenkins 队列作业步骤之后查看该构建工件并在需要时触发它)。确保设置正确的作业目录以从本地自托管代理下载。这两个步骤的示例设置:

注意:如果您在下载和发布路径方面遇到问题,请参阅此 link 以了解自托管代理的预定义变量:https://docs.microsoft.com/en-us/azure/devops/pipelines/build/variables?view=azure-devops&tabs=yaml

6.现在在您的发布管道中,您应该能够从您的构建管道中添加工件源。示例如下:

现在您应该可以在 Azure DevOps 平台上获取云中的本地工件,以防您因任何原因无法使用 Microsoft 提供的构建代理!