rpm-ostree/tests/tests.yml

107 lines
3.6 KiB
YAML
Raw Normal View History

---
- hosts: localhost
vars:
artifacts: "{{ lookup('env', 'TEST_ARTIFACTS')|default('./artifacts', true) }}"
subjects: "{{ lookup('env', 'TEST_SUBJECTS')}}"
tags:
- atomic
tasks:
# XXX: move to standard-test-roles, e.g. standard-test-get-source
- name: install koji
package: name={{item}} state=present # XXX: state=latest
with_items:
- koji
- rpm-build
- dnf-plugins-core
- name: provision VM
qemu_provision:
subjects: "{{subjects}}"
log: "{{artifacts}}/machine.log"
register: qemu
- set_fact:
vmssh: ssh -F {{qemu.statedir}}/ssh-config vmcheck
- block:
- name: get source rpm from environment
command: "{{vmssh}} rpm -q rpm-ostree --qf '%{SOURCERPM}'"
register: srpm
- name: create temporary source dir
tempfile: state=directory
register: tmpd
# XXX: this approach is probably going to break apart once we start
# running tests per dist-git PR (since they'll probably not be built in
# koji anymore)
- name: download source rpm
command: koji download-build --rpm {{srpm.stdout}}
args:
chdir: "{{tmpd.path}}"
- set_fact:
srpmpath: "{{tmpd.path}}/{{srpm.stdout}}"
- name: install build dependencies
command: dnf builddep -y {{srpmpath}}
- name: extract source rpm
command: >
rpmbuild --define "_srcrpmdir {{tmpd.path}}"
--define "_buildrootdir {{tmpd.path}}"
--define "_rpmdir {{tmpd.path}}"
--define "_specdir {{tmpd.path}}"
--define "_sourcedir {{tmpd.path}}"
--define "_builddir {{tmpd.path}}"
-rp {{srpmpath}}
# XXX: this should be made a param to the role and kept in sync with %setup
# -n $DIR. here we just assume the default name in case -n is not used
- name: construct buildsubdir from rpmdb
command: rpm -qp {{srpmpath}} --qf '{{tmpd.path}}/%{NAME}-%{VERSION}'
register: buildsubdir
- name: import ssh-config
command: cp {{qemu.statedir}}/ssh-config {{buildsubdir.stdout}}
# XXX: need to upstream this
- name: create and rebase onto vmcheck
command: "{{vmssh}} rpm-ostree status --json"
register: status
- set_fact:
status_json: "{{ status.stdout | from_json }}"
- command: "{{vmssh}} ostree refs {{ status_json['deployments'][0]['origin'] }} --create vmcheck"
- command: "{{vmssh}} rpm-ostree rebase :vmcheck"
# XXX: use ans_reboot.yml from a-h-t
- shell: "{{vmssh}} shutdown -r now"
ignore_errors: true
- name: run vmcheck
command: tests/vmcheck/multitest.py vmcheck
# XXX: consider making vmcheck become an installed test
environment:
VMTESTS: 1
SKIP_VMOVERLAY: 1
TESTS: basic layering-basic
topsrcdir: "{{buildsubdir.stdout}}"
commondir: "{{buildsubdir.stdout}}/tests/common"
args:
chdir: "{{buildsubdir.stdout}}"
always:
- name: teardown VM
qemu_teardown:
statedir: "{{qemu.statedir}}"
- name: fetch vmcheck results
synchronize:
src: "{{buildsubdir.stdout}}/vmcheck/"
dest: "{{artifacts}}/vmcheck"
mode: pull
delete: yes
- name: delete temporary dir
file: path="{{tmpd.path}}" state=absent