zcash-gitian/roles/gitian/tasks/main.yml

185 lines
4.3 KiB
YAML

---
- name: Check that custom git variables are defined.
assert:
that:
- "gpg_key_name is defined"
- "gpg_key_name != ''"
- "git_name is defined"
- "git_name != ''"
- "git_email is defined"
- "git_email != ''"
msg: Please set your gpg_key_name, git_name and git_email in gitian.yml.
- name: Install Gitian dependencies.
apt:
name:
- bridge-utils
- curl
- debootstrap
- git-core
- gnupg2
- kpartx
- lintian
- lxc
- make
- python3-cheetah
- qemu-utils
- ruby
- sudo
state: present
update_cache: yes
- name: Install more recent version of apt-cacher-ng
apt:
name: apt-cacher-ng
state: latest
update_cache: yes
default_release: bullseye-backports
- name: Install ruamel.yaml
pip:
name: "ruamel.yaml>=0.15.0,<0.16.0"
- name: Set up the Gitian build user with sudo.
user:
name: "{{ gitian_user }}"
shell: /bin/bash
groups: sudo
state: present
- name: Install /etc/rc.local.
template:
src: rc.local
dest: /etc/rc.local
owner: root
group: root
mode: "0755"
- name: Enable IP forwarding, etc.
sysctl:
name: "{{ item }}"
value: 1
sysctl_set: yes
state: present
reload: yes
with_items:
- net.ipv4.ip_forward
- kernel.unprivileged_userns_clone
- name: Enable cgroup clone_children.
command: "echo 1 > /sys/fs/cgroup/cpuset/cgroup.clone_children"
- name: Add cgroup fs for LXC.
lineinfile:
dest: /etc/fstab
regexp: '^cgroup'
line: 'cgroup /sys/fs/cgroup cgroup defaults 0 0'
state: present
- name: Install profile with environment variables.
template:
src: profile
dest: "/home/{{ gitian_user }}/.profile"
owner: "{{ gitian_user }}"
group: "{{ gitian_user }}"
mode: "0644"
- name: Install sudoers file for LXC.
template:
src: gitian-lxc
dest: /etc/sudoers.d/gitian-lxc
owner: root
group: root
mode: "0644"
- name: Install lxc-net configuration.
template:
src: lxc-net
dest: /etc/default/lxc-net
owner: root
group: root
mode: "0644"
- name: Clone git repository for Gitian builder.
git:
repo: "{{ gitian_builder_url }}"
dest: "/home/{{ gitian_user }}/gitian-builder"
version: "{{ gitian_builder_version }}"
force: yes
become_user: "{{ gitian_user }}"
- include_tasks: keys.yml
tags: keys
- name: Clone git repository for Zcash.
git:
repo: "{{ zcash_git_repo_url }}"
dest: "/home/{{ gitian_user }}/zcash"
version: "{{ zcash_version }}"
force: yes
become_user: "{{ gitian_user }}"
- name: Clone git repository for Gitian signatures.
git:
repo: "{{ zcash_gitian_sigs_repo }}"
dest: "/home/{{ gitian_user }}/gitian.sigs"
version: master
force: yes
become_user: "{{ gitian_user }}"
- name: Set Git username.
command: "git config --global user.name \"{{ git_name }}\""
become_user: "{{ gitian_user }}"
- name: Set Git email address.
command: "git config --global user.email '{{ git_email }}'"
become_user: "{{ gitian_user }}"
- name: Create bin directory under gitian_user home directory
file:
state: directory
dest: "/home/{{ gitian_user }}/bin"
mode: "0755"
- name: Copy explode_yaml_file.py
copy:
src: explode_yaml_file.py
dest: "/home/{{ gitian_user }}/bin/explode_yaml_file.py"
owner: "{{ gitian_user }}"
group: "{{ gitian_user }}"
mode: "0755"
- name: Copy Gitian build script.
template:
src: gitian-build.sh
dest: "/home/{{ gitian_user }}/gitian-build.sh"
owner: "{{ gitian_user }}"
group: "{{ gitian_user }}"
mode: "0755"
tags: script
- name: Copy Parallel Gitian build script.
template:
src: gitian-parallel-build.sh
dest: "/home/{{ gitian_user }}/gitian-parallel-build.sh"
owner: "{{ gitian_user }}"
group: "{{ gitian_user }}"
mode: "0755"
tags: script
- name: Clean the apt cache to free up space.
apt:
autoclean: yes
- include_tasks: gpg.yml
tags: gpg
when: gpg_key_id is defined and gpg_key_id != ''
- name: Display help message.
debug:
msg: >-
Finished bootstrapping the Gitian host VM!
To enter the environment, run `vagrant ssh zcash-build`
and then use `./gitian-build.sh` to kick off a build.
For parallelism, use `./gitian-parallel-build.sh`.