--- - name: Install Git build dependency ansible.builtin.apt: name: git state: present update_cache: true cache_valid_time: 3600 when: seriatim_manage_build_dependencies - name: Install Go build dependency community.general.snap: name: go state: present classic: true channel: "{{ seriatim_go_snap_channel }}" when: seriatim_manage_build_dependencies - name: Resolve Git executable ansible.builtin.command: argv: - /usr/bin/which - git register: seriatim_git_path_result changed_when: false failed_when: seriatim_git_path_result.rc != 0 - name: Verify configured Go executable exists ansible.builtin.stat: path: "{{ seriatim_go_binary }}" follow: true register: seriatim_go_binary_stat - name: Require configured Go executable ansible.builtin.assert: that: - seriatim_go_binary_stat.stat.exists - seriatim_go_binary_stat.stat.isreg - seriatim_go_binary_stat.stat.executable fail_msg: "Configured Go executable is unavailable: {{ seriatim_go_binary }}" - name: Read Go compiler version ansible.builtin.command: argv: - "{{ seriatim_go_binary }}" - version register: seriatim_go_version_result changed_when: false - name: Extract Go compiler version components ansible.builtin.set_fact: seriatim_go_version_parts: >- {{ seriatim_go_version_result.stdout | regex_findall('go([0-9]+)\.([0-9]+)') | first | default([]) }} - name: Require supported Go compiler version ansible.builtin.assert: that: - seriatim_go_version_result.stdout is regex('^go version go[0-9]+\.[0-9]+(?:\.[0-9]+)? ') - seriatim_go_version_parts | length == 2 - (seriatim_go_version_parts[0] | int > 1) or (seriatim_go_version_parts[0] | int == 1 and seriatim_go_version_parts[1] | int >= 25) fail_msg: >- Seriatim requires Go 1.25 or newer; detected {{ seriatim_go_version_result.stdout | default('no usable version output') }}.