Files
radicle-ci-broker/ansible/roles/radicle-ci-node/tasks/main.yml
T

171 lines
4.0 KiB
YAML

- name: "is radicle-archive-keyring package installed already?"
shell: |
dpkg -l radicle-archive-keyring | grep '^ii '
register: radicle_archive_keyring
ignore_errors: true
- name: "install tools to install radicle-archive-keyring package"
when: radicle_archive_keyring.rc != 0
apt:
update_cache: true
name:
- curl
- gpg
state: present
- name: "download radicle-arcive-keying and install it"
when: radicle_archive_keyring.rc != 0
shell: |
set -x
tmp="$(mktemp -d)"
trap 'rm -rf "$tmp"' EXIT
cd "$tmp"
curl -O -sL https://radicle.xyz/apt/radicle-archive-keyring.deb
dpkg -i radicle-archive-keyring.deb
- name: "add Radicle APT repository to APT sources lists"
apt_repository:
repo: deb [signed-by=/usr/share/radicle/radicle-archive-keyring.asc] https://radicle.xyz/apt release main
- name: "install software for Radicle CI"
apt:
name:
- radicle
- radicle-ci-broker
- radicle-ci-ambient
- ambient-ci
- caddy
- xz-utils
- psmisc
- name: "create user 'ci'"
user:
name: ci
comment: Radicle CI
shell: /bin/bash
groups:
- kvm
- name: "create ~ci/.config/ambient"
file:
state: directory
path: /home/ci/.config/ambient
owner: ci
group: ci
- name: "configure Ambient"
copy:
src: ambient-config.yaml
dest: /home/ci/.config/ambient/config.yaml
- name: "configure caddy"
copy:
src: Caddyfile
dest: /etc/caddy/Caddyfile
- name: "create directory CI broker reports and Ambient run logs on the web"
file:
state: directory
path: /srv/http
owner: ci
group: ci
- name: "configure CI broker"
copy:
src: ci.yaml
dest: /home/ci/ci.yaml
- name: "configure Ambient adapter"
copy:
src: radicle-ci-ambient.yaml
dest: /home/ci/radicle-ci-ambient.yaml
- name: "create directory for Ambient adapter admin logs"
file:
state: directory
path: /home/ci/adapter-logs
owner: ci
group: ci
- name: "download a virtual machine image for Ambient"
uri:
url: https://files.liw.fi/ambient/ambient.qcow2.xz
creates: /home/ci/ambient.qcow2.xz
dest: /home/ci/ambient.qcow2.xz
owner: ci
group: ci
- name: "uncompress Ambient VM image, if there's a new one"
shell: |
x=/home/ci/ambient.qcow2
if [ ! "$x" ] || [ "$x.xz" -nt "$x" ]; then
unxz --keep --force "$x.xz"
fi
- name: "create ~ci/.radicle/keys"
when: radicle_ci_node_key is defined
file:
state: directory
path: /home/ci/.radicle/keys
owner: ci
group: ci
- name: "change Radicle node to use predefined key"
when: radicle_ci_node_key is defined
copy:
content: |
{{ radicle_ci_node_key }}
dest: /home/ci/.radicle/keys/radicle
- name: "change Radicle node to use predefined public key"
when: radicle_ci_node_key_pub is defined
copy:
content: |
{{ radicle_ci_node_key_pub }}
dest: /home/ci/.radicle/keys/radicle.pub
- name: "set up Radicle node configuration"
when: radicle_ci_node_key is defined
shell: |
if [ ! -e /home/ci/.radicle/config.json ]; then
sudo -i -u ci rad config init --alias "ci-{{ inventory_hostname }}"
fi
- name: "set up Radicle node with new key"
when: radicle_ci_node_key is undefined
shell: |
sudo -i -u ci rad auth --alias "ci-{{ inventory_hostname }}" --stdin </dev/null
- name: "create systemd service for Radicle node"
copy:
src: radicle-node.service
dest: /etc/systemd/system/radicle-node.service
- name: "create systemd service for CI broker"
copy:
src: radicle-ci-broker.service
dest: /etc/systemd/system/radicle-ci-broker.service
- name: "reload systemd daemon"
systemd:
daemon_reload: true
- name: "restart Caddy"
systemd:
name: caddy
state: restarted
- name: "restart Radicle node"
systemd:
name: radicle-node
enabled: true
state: restarted
- name: "restart CI broker"
systemd:
name: radicle-ci-broker
enabled: true
state: restarted