feat: manage Seriatim source prerequisites
This commit is contained in:
66
tasks/dependencies.yml
Normal file
66
tasks/dependencies.yml
Normal file
@@ -0,0 +1,66 @@
|
||||
---
|
||||
- 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') }}.
|
||||
Reference in New Issue
Block a user