Mat*_* V. 4 tags git deployment ansible
是否有一种简单的方法让Ansible检查特定git分支上的最新标记,而无需指定或传入标记?也就是说,Ansible可以在分支上检测或派生最新的标签,还是需要使用shell模块或其他东西单独完成的事情?
Ansible没有检出最新标签作为内置功能.它确实具有update其git模块的参数,这将确保特定的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)