仅在从git存储库中提取更改时运行构建任务

时间:2014-04-11 13:56:56

标签: git ansible

我在Bitbucket git存储库中托管了一个C ++程序,我正在使用CMake进行编译。目前的比赛可以在下面看到。它工作正常,除了build - 每次运行游戏时都会运行任务。相反,我希望build - 只有在git模块提取新软件版本时才能运行任务。我如何在build - 如果clone - 任务找到新版本?

的任务中告诉我
---
# tasks of role: foo

- name: clone repository
  git: repo=git@bitbucket.org:foo/foo.git
       dest={{ foo.dir }}
       accept_hostkey=yes

- name: create build dir
  file: state=directory path={{ foo.build_dir }}

- name: build
  command: "{{ item }} chdir={{ foo.build_dir }}"
  with_items:
    - cmake ..
    - make

1 个答案:

答案 0 :(得分:36)

您可以在clone任务的输出中注册变量,并在build任务的状态发生变化时调用clone任务

例如:

---
# tasks of role: foo

- name: clone repository
  git: repo=git@bitbucket.org:foo/foo.git
       dest={{ foo.dir }}
       accept_hostkey=yes
  register: gitclone

- name: create build dir
  file: state=directory path={{ foo.build_dir }}

- name: build
  command: "{{ item }} chdir={{ foo.build_dir }}"
  with_items:
    - cmake ..
    - make
  when: gitclone.changed