From 4adf31691913931101a18df87103f24b02c6b0da Mon Sep 17 00:00:00 2001 From: Andrei Stepanov Date: Mar 15 2019 10:41:10 +0000 Subject: Merge #314 `support to fetch_only flag on source role` --- diff --git a/roles/standard-test-source/README.md b/roles/standard-test-source/README.md index 2b8e9a3..44d79dc 100644 --- a/roles/standard-test-source/README.md +++ b/roles/standard-test-source/README.md @@ -12,3 +12,64 @@ You can redefine the following variables: to {{ playbook_dir }}/source/ * flatten: Strip one level of path prefix in source tree. This defaults to True + * fetch_only: If True the role will only fetch the source and will skip rpmbuild --bp part. + Set to True if spec file %prep section requires packages that are not available on test runner. + This defaults to False + +Example usage: + + --- + - hosts: localhost + tags: + - classic + roles: + - role: standard-test-source + + - role: standard-test-basic + required_packages: + - make + tests: + - smoke: + dir: ./source + run: make check + + +Example usage with fetch_only = True: + + --- + - hosts: localhost + tags: + - classic + vars: + # standard-test-basic directory for tests are relative to {{ env_workdir }} + env_workdir: /var/test + pre_tasks: + - import_role: + name: standard-test-source + vars: + fetch_only: True + + - name: Copy files including source to test environment + synchronize: + src: "{{ playbook_dir }}/.." + dest: "{{ env_workdir }}" + mode: push + ssh_args: "-o UserKnownHostsFile=/dev/null" + + roles: + - role: standard-test-basic + required_packages: + - autoconf + - automake + - make + - rpm-build + tests: + - prepare-source: + dir: ./ + run: rpmbuild -bp {{env_workdir}}/*.spec --nodeps --define "_sourcedir {{env_workdir}}" --define "_builddir {{env_workdir}}/source" + - flatten-source: + dir: ./ + run: shopt -s dotglob; mv {{env_workdir}}/source/*/* {{env_workdir}}/source + - smoke: + dir: ./source + run: make check diff --git a/roles/standard-test-source/tasks/main.yml b/roles/standard-test-source/tasks/main.yml index b9aa322..c41cf26 100644 --- a/roles/standard-test-source/tasks/main.yml +++ b/roles/standard-test-source/tasks/main.yml @@ -29,15 +29,28 @@ sources: "{{pkgdir}}/sources" target: "{{pkgdir}}/" + - name: Install basic package dependencies + package: name={{ item }} state=present + register: result + with_items: + - rpm-build + retries: 5 + delay: 10 + until: result is succeeded + when: not fetch_only + - name: Extract and setup the sources shell: | rm -rf "{{srcdir}}" rpmbuild -bp {{pkgdir}}/*.spec --nodeps --define "_sourcedir {{pkgdir}}/" --define "_builddir {{srcdir}}" args: warn: false + when: not fetch_only - name: Flatten sources shell: | shopt -s dotglob mv {{ srcdir }}/*/* {{ srcdir }} - when: flatten + when: + - flatten + - not fetch_only diff --git a/roles/standard-test-source/vars/main.yml b/roles/standard-test-source/vars/main.yml index 6ba1825..1efdc86 100644 --- a/roles/standard-test-source/vars/main.yml +++ b/roles/standard-test-source/vars/main.yml @@ -2,3 +2,4 @@ pkgdir: "{{ playbook_dir }}/.." srcdir: "{{ playbook_dir }}/source" flatten: True +fetch_only: False