Files
ansible-role-seriatim/tasks/dependencies.yml

67 lines
2.0 KiB
YAML

---
- 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') }}.