# Исходники hackrf-scanner с управляющей машины (scanner_src) на узлы и сборка # на месте. Интернет не нужен, зависимости ставит playbook.yml (тег base). # Что уехало, видно в ~/hackrf-scanner/DEPLOYED (git describe). - name: Код hackrf-scanner на узлы и сборка hosts: all gather_facts: false tasks: - name: Ревизия исходников на управляющей машине delegate_to: localhost run_once: true ansible.builtin.command: git -C {{ scanner_src }} describe --always --dirty register: rev changed_when: false - name: Исходники на узле (без .git и build), лишние файлы удаляются ansible.posix.synchronize: src: "{{ scanner_src }}/" dest: "{{ scanner_dir }}/" delete: true rsync_opts: - "--exclude=.git" - "--exclude=build*" - "--exclude=.cache" - "--exclude=__pycache__" - "--exclude=DEPLOYED" - name: След клона прежнего провижнинга не нужен ansible.builtin.file: path: "{{ scanner_dir }}/.git" state: absent - name: Метка ревизии ansible.builtin.copy: content: "{{ rev.stdout }}\n" dest: "{{ scanner_dir }}/DEPLOYED" mode: "0644" - name: Сборка ansible.builtin.shell: | cmake -B build -DCMAKE_BUILD_TYPE=RelWithDebInfo >/dev/null cmake --build build -j"$(nproc)" args: chdir: "{{ scanner_dir }}" register: build changed_when: "'Building CXX' in build.stdout or 'Linking' in build.stdout" - name: Бинарники на месте ansible.builtin.stat: path: "{{ scanner_dir }}/build/{{ item }}" register: bins failed_when: not bins.stat.exists loop: [peleng, scan] - name: Итог по узлу ansible.builtin.debug: msg: "[+] {{ inventory_hostname }}: {{ rev.stdout }} собран"