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

110 lines
2.9 KiB
YAML

---
- name: Validate the supported platform
ansible.builtin.assert:
that:
- ansible_facts.distribution == "Ubuntu"
- ansible_facts.distribution_version == "26.04"
- ansible_facts.architecture in ["x86_64", "aarch64"]
fail_msg: Seriatim supports Ubuntu 26.04 on x86_64 or aarch64.
- name: Install Git
ansible.builtin.apt:
name: git
state: present
update_cache: true
when: seriatim_manage_build_dependencies
- name: Install Go
community.general.snap:
name: go
channel: "{{ seriatim_go_snap_channel }}"
classic: true
state: present
when: seriatim_manage_build_dependencies
- name: Create installation parent directories
ansible.builtin.file:
path: "{{ item }}"
state: directory
owner: root
group: root
mode: "0755"
loop:
- "{{ seriatim_source_dir | dirname }}"
- "{{ seriatim_binary_path | dirname }}"
- name: Check out Seriatim source
ansible.builtin.git:
repo: "{{ seriatim_repository_url }}"
dest: "{{ seriatim_source_dir }}"
version: "{{ seriatim_version }}"
force: true
register: seriatim_checkout
- name: Inspect the installed binary
ansible.builtin.stat:
path: "{{ seriatim_binary_path }}"
register: seriatim_binary
- name: Read the installed Seriatim version
ansible.builtin.command:
argv:
- "{{ seriatim_binary_path }}"
- --version
register: seriatim_installed_version
changed_when: false
failed_when: false
when: seriatim_binary.stat.exists
- name: Build Seriatim
ansible.builtin.command:
argv:
- /snap/bin/go
- build
- -trimpath
- -ldflags
- "-s -w -X gitea.maximumdirect.net/eric/seriatim/internal/buildinfo.Version={{ seriatim_version }}"
- -o
- "{{ seriatim_binary_path }}"
- ./cmd/seriatim
chdir: "{{ seriatim_source_dir }}"
environment:
CGO_ENABLED: "0"
GOTOOLCHAIN: local
GOWORK: "off"
register: seriatim_build
changed_when: true
when: >-
seriatim_checkout.changed or
not seriatim_binary.stat.exists or
seriatim_installed_version.rc | default(1) != 0 or
seriatim_installed_version.stdout | default('') != 'seriatim version ' ~ seriatim_version
- name: Converge installed metadata
ansible.builtin.file:
path: "{{ item.path }}"
state: "{{ item.state }}"
owner: root
group: root
mode: "{{ item.mode | default(omit) }}"
recurse: "{{ item.recurse | default(omit) }}"
loop:
- path: "{{ seriatim_source_dir }}"
state: directory
recurse: true
- path: "{{ seriatim_binary_path }}"
state: file
mode: "0755"
- name: Validate the built Seriatim version # noqa no-handler
ansible.builtin.command:
argv:
- "{{ seriatim_binary_path }}"
- --version
register: seriatim_built_version
changed_when: false
failed_when: >-
seriatim_built_version.rc != 0 or
seriatim_built_version.stdout != 'seriatim version ' ~ seriatim_version
when: seriatim_build.changed