将最新的构建工件从“ LOCAL” Jenkins发布到Azure DevOps发布管道?

时间:2019-03-29 02:41:23

标签: jenkins continuous-integration azure-devops jenkins-pipeline jenkins-plugins

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

到目前为止,我对网络上的教程还没有运气,因为我真的没有指向Jenkins实例的URL,因为它仅在我的本地网络上可用。我无法真正在远程Jenkins服务器上构建这些工件,因此我仅限于使用此解决方案来运行构建。

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

1 个答案:

答案 0 :(得分:0)

因此,由于没有其他人回答这个问题,因此我将详细说明我最终要做的事情(也许不是最好的方法,但它对我的设置有效,欢迎提出建议!)。

要从本地计算机与Azure DevOps平台进行交互,您将需要配置一个自托管代理(基于您的特定OS),该代理将允许您触发生成,将生成工件上载并将其上传到Azure DevOps平台。这样,您也不必轮询SCM的更改(我认为有时这种情况并不那么优雅)。

1。因此,您将需要为本地自托管代理完成以下概述的设置:

注意:我选择在Windows上将代理作为服务运行以进行设置

2。接下来,使用通常的回购访问设置,按照通常的方式设置Jenkins构建工作。请记住以下几点:

  • 在“构建触发器”下,选择“轮询SCM”选项,但是请确保时间表为空,这将确保代理发出的提交后挂钩中的触发器起作用。如下所示的示例设置:

enter image description here

  • 在“构建后操作”下,确保要根据需要存档工件。示例如下所示:

enter image description here

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

enter image description here

注意:您可以尝试执行“验证并保存”,但是它会引发错误,因此可以忽略该错误,或​​者直接执行“保存而不验证”。此外,您将必须针对每个项目执行此操作,这与针对每台计算机的自托管代理设置不同。

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

enter image description here

注意:此处的关键是正确的“作业名称”(该名称应与您在Jenkins构建服务器实例中设置的名称相同)和正确的“ Jenkins服务连接”。

5。剩下的事情就直截了当,因为您现在只需要确保有一个步骤即可“下载工件”(如果您不希望在DevOps平台上使用工件,则不需要)和“发布工件”(这对于在您的jenkins队列作业步骤之后,您可以使用发布管道来查看该构建工件并根据需要触发它。确保设置正确的作业目录,以便从本地自托管代理下载。这两个步骤的示例设置:

enter image description here

enter image description here

注意:如果您在下载和发布路径上遇到麻烦,请参阅以下链接,以获取自托管代理的预定义变量:https://docs.microsoft.com/en-us/azure/devops/pipelines/build/variables?view=azure-devops&tabs=yaml

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

enter image description here

现在,如果您由于某种原因不能使用Microsoft提供的生成代理,您应该可以在Azure DevOps平台上在云中获取本地工件!