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

How can I download a numbered build artifact from Jenkins using Ansible?

我有一个 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。我想我在这里有几个选择:

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

因为 Ansible 2.0 maven_artifact module 可用。该模块通过 version 参数支持 Maven 版本坐标。像这样使用它:

- maven_artifact:
    group_id: junit
    artifact_id: junit
    dest: /tmp/junit-latest.jar
    version: latest
    repository_url: htttp://your-artifactory

您可以使用 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"