2014-04-11 13 views
20

Tôi có chương trình C++ được lưu trữ trong kho lưu trữ Bitbucket git mà tôi đang biên dịch bằng CMake. Các vở kịch hiện tại có thể được nhìn thấy dưới đây. Nó hoạt động tốt trừ build -task được chạy mỗi lần chạy. Thay vào đó, tôi muốn build chỉ hoạt động khi phiên bản phần mềm mới được kéo bởi git -module. Làm cách nào tôi có thể biết trong build -ký liệu nếu clone tìm thấy phiên bản mới?Chỉ chạy tác vụ xây dựng khi các thay đổi đã được lấy từ kho 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 

Trả lời

33

Bạn có thể đăng ký biến với sản lượng của clone nhiệm vụ và gọi build nhiệm vụ khi tình trạng clone nhiệm vụ được thay đổi

Ví dụ:

--- 
# 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

trình như một say mê! Trong thực tế, tôi đã sử dụng 'register'-variables để ghi lại kết quả đầu ra của' lệnh', nhưng tôi không nhận ra rằng tôi có thể sử dụng nó để ghi lại bản ghi đầu ra của bất kỳ mô-đun nào (tôi đang sử dụng '-vv' vì vậy tôi dễ dàng xem những gì có sẵn). – user272735

+0

Chờ, điều này sẽ giữ trạng thái giữa các lần chạy? – Mxx

+2

Không, điều này là để nhận được 'thông báo' khi git sẽ nhận được cập nhật từ kho lưu trữ từ xa. Không thể lưu trạng thái – ghloogh

Các vấn đề liên quan