如何使用Ansible从Jenkins下载编号的构建工件?

时间:2016-09-13 06:53:30

标签: jenkins ansible artifactory devops

我有一台Jenkins服务器,我想从中下载构建工件。问题是作业的设置方式,构建工件包括作业号,例如NightlyBuild-346.tar.bz2。我们喜欢工作号码,因为它们可以让您轻松了解特定构建的年龄。

这有问题,因为我不知道我下载的文件的确切名称 - 我只知道我想要最后一次成功构建。我可以这样做:

- name: download build from CI
  get_url:
    url: "https://ci.contoso.com/job/NightlyBuild/lastSuccessfulBuild/artifact/NightlyBuild-345.tar.bz2"
    dest: /tmp/NightlyBuild-345.tar.bz2

...但是在Jenkins完成下一个夜间构建之后,这将会中断,因为该工件将变为NightlyBuild-346.tar.bz2。我想我有几个选择:

  • 尝试在get_url模块中使用通配符(不太确定)
  • 将作业中的所有工件(有几个)作为单个archive.zip下载,并使用命令行和正则表达式魔法来查找我关心的实际构建工件。 (潜在的热得难以发现的混乱)
  • 使用REST API获取上次成功作业的作业编号,并形成完整的URL。 (不确定Ansible是否允许我像这样设置变量)。

这些是我的选择吗?有没有更好的方法来解决这个问题?我想最终发布到Jenkins的Artifactory存储库,如果这是正确的做法,我也很欣赏这方面的一些指示。

2 个答案:

答案 0 :(得分:1)

由于02d2d159. Record Number: 00000000.abcdefghijklmnopqrstuvwxyz X f362711e. Record Number: 00000001.abcdefghijklmnopqrstuvwxyz X ba957dff. Record Number: 00000002.abcdefghijklmnopqrstuvwxyz X maven_artifact module可用。该模块通过Ansible 2.0参数支持maven版本坐标。像这样使用它:

version

答案 1 :(得分:1)

您可以使用uri模块查询Jenkins的内部版本号:

- uri:
    url: http://ci/job/NightlyBuild/lastSuccessfulBuild/buildNumber
    return_content: yes
  register: build_number_resp

- debug: msg="URL with build number http://ci/job/NightlyBuild/lastSuccessfulBuild/artifact/NightlyBuild-{{ build_number_resp.content }}.tar.bz2"