2014-04-11 5 views
20

Mam program C++ hostowany w repozytorium git Bitbucket, które kompiluję z CMake. Aktualną grę można zobaczyć poniżej. Działa dobrze z wyjątkiem build -task jest uruchamiany za każdym razem, gdy gra jest uruchamiana. Zamiast tego chciałbym, aby build -task uruchomić tylko wtedy, gdy nowa wersja oprogramowania jest ciągnięta przez moduł git -module. Jak mogę stwierdzić w build -zadanie, jeśli clone -zadanie znalazłem nową wersję?Uruchom zadanie kompilacji tylko wtedy, gdy zmiany zostały pobrane z repozytorium git.

--- 
# tasks of role: foo 

- name: clone repository 
    git: [email protected]: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 

Odpowiedz

33

Można zarejestrować zmienną z wyjściem clone zadania i wywoływać build zadanie, gdy stan clone zadania zostanie zmieniony

Na przykład:

--- 
# tasks of role: foo 

- name: clone repository 
    git: [email protected]: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 
+0

działa jak marzenie! Właściwie używam zmiennych 'register' do zapisywania danych wyjściowych kilku' poleceń', ale nie zdawałem sobie sprawy, że mogę go użyć do przechwycenia rekordu wyjściowego dowolnego modułu (używam '-vv' więc łatwo widzę, co jest dostępne). – user272735

+0

Czekaj, to będzie utrzymywać stan między biegami? – Mxx

+2

Nie, to jest otrzymywanie 'powiadomienia' gdy git będzie otrzymywać aktualizacje ze zdalnego repozytorium. Nie można zapisać stanu – ghloogh