如何使用Ansible查看最新的git标签?

Mat*_* V. 4 tags git deployment ansible

是否有一种简单的方法让Ansible检查特定git分支上的最新标记,而无需指定或传入标记?也就是说,Ansible可以在分支上检测或派生最新的标签,还是需要使用shell模块或其他东西单独完成的事情?

Bre*_*ret 7

Ansible没有检出最新标签作为内置功能.它确实具有updategit模块的参数,这将确保特定的repo与其远程的HEAD完全一致.

---
- git:
repo=git@github.com:username/reponame.git
dest={{ path }}
update=yes
force=no
Run Code Online (Sandbox Code Playgroud)

Force将检出最新版本的存储库,覆盖未提交的更改,如果设置为false,则会失败,并且存在未提交的更改.

有关此模块的更多选项,请参见http://docs.ansible.com/git_module.html.

此时你可以做两件事:

1)在其上放​​置一个带有标签的单独分支,并使用update参数保持不变.

2)您还可以使用shell模块并实现类似于:Git Checkout Latest Tag的内容

---
- name: get new tags from remote
  shell: "git fetch --tags"
  args:
    chdir: "{{ path }}"

- name: get latest tag name
  shell: "git describe --tags `git rev-list --tags --max-count=1`"
  args:
    chdir: "{{ path }}"
  register: latest_tag
Run Code Online (Sandbox Code Playgroud)

然后将该结果用作refspecgit模块

- git:
repo=git@github.com:username/reponame.git
dest={{ path }}
version: latest_tag.stdout
Run Code Online (Sandbox Code Playgroud)