From Fedora Project Wiki

< CI
Revision as of 12:37, 26 February 2018 by Psss (talk | contribs) (Always use the latest Fedora.)

🔗 Introduction

Are you eager to try out how the Fedora CI tests work? Do you want to get a quick hands-on experience without having to read too much documentation? This quick introduction for the impatient will show you a minimal set of steps to execute existing tests as well as provide useful links to resources where you can learn more.

🔗 First Steps

Install the following essential packages on your system:

sudo dnf install fedpkg libselinux-python standard-test-roles

Use fedpkg to clone the package git repository. See the Package Maintenance Guide for more info about the tool.

fedpkg clone -a bash

Tests are defined according to the Standard Test Interface in the tests directory:

cd bash/tests/

Test coverage to be executed together with the basic set of metadata is described in the tests.yml playbook. Use ansible-playbook to run all available tests for the classic environment on the local host:

ansible-playbook --tags=classic tests.yml

From the ansible output you can directly see an overall summary of the testing. If you see failed=0 at the end of the log then all tests passed:

localhost: ok=29 changed=11 unreachable=0 failed=0

For more detailed test results check the test.log and other files in the artifacts directory:

vim artifacts/test.log

That's it! You just executed test coverage for the Bash.

🔗 Test Subjects

To execute tests against different test subjects we need to prepare the environment. Let's store the detailed test results in /tmp/artifacts, use dynamic inventory as defined by the Standard Test Roles and download the latest Atomic Host image.

export TEST_ARTIFACTS=/tmp/artifacts
export ANSIBLE_INVENTORY=/usr/share/ansible/inventory
curl -Lo /tmp/atomic.qcow2 https://getfedora.org/atomic_qcow2_latest

Now let's try to run tests against all supported test subjects.

🔗 Classic

Run tests against classic rpms installed on the system:

export TEST_SUBJECTS=
ansible-playbook --tags=classic tests.yml

🔗 Container

Run tests in a docker container:

export TEST_SUBJECTS=docker:docker.io/library/fedora:latest
ansible-playbook --tags=container tests.yml

🔗 Atomic

Run tests against the Atomic Host:

export TEST_SUBJECTS=/tmp/atomic.qcow2
ansible-playbook --tags=atomic tests.yml