Simplify the Seriatim role
This commit is contained in:
113
tasks/main.yml
113
tasks/main.yml
@@ -1,12 +1,109 @@
|
||||
---
|
||||
- name: Validate Seriatim role inputs
|
||||
ansible.builtin.import_tasks: validate.yml
|
||||
- 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: Manage Seriatim build dependencies
|
||||
ansible.builtin.import_tasks: dependencies.yml
|
||||
- name: Install Git
|
||||
ansible.builtin.apt:
|
||||
name: git
|
||||
state: present
|
||||
update_cache: true
|
||||
when: seriatim_manage_build_dependencies
|
||||
|
||||
- name: Manage Seriatim source checkout
|
||||
ansible.builtin.import_tasks: source.yml
|
||||
- name: Install Go
|
||||
community.general.snap:
|
||||
name: go
|
||||
channel: "{{ seriatim_go_snap_channel }}"
|
||||
classic: true
|
||||
state: present
|
||||
when: seriatim_manage_build_dependencies
|
||||
|
||||
- name: Build and install Seriatim
|
||||
ansible.builtin.import_tasks: build.yml
|
||||
- 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
|
||||
|
||||
Reference in New Issue
Block a user