puppet-openstack-guide/doc/source/contributor/ci.rst

5.4 KiB

Continuous Integration

This is a list of the CI jobs that are running against most of the Puppet OpenStack modules: The code that configures Jenkins jobs is hosted by project-config.

CI Jobs in puppet-openstack
Job name Description Voting What to do in case of failure
puppet-openstack-lint-platform It makes sure the code follows recommended Puppet style guidelines Yes Read the job logs to see where the code does not follow the Puppet lint style.
puppet-openstack-syntax-N-platform Syntax checks for Puppet manifests, templates, and Hiera YAML. The jobs run on the specif Puppet version represented by N. Yes Read the job logs to see where the code does not follow the Puppet syntax style.
puppet-openstack-unit-N-platform RSpec tests for Puppet manifests. N represents version of Puppet used in the test. Yes Read the job logs to see where the tests are failing. More documentation about RSpec
puppet-openstack-unit-latest-platform RSpec tests for Puppet manifests. The jobs run on the latest version of Puppet. It aims to be experimental to track any work to do in the module to be compatible with the latest release of Puppet. No Read the job logs to see where the tests are failing. Even though the job is non-voting, please raise a bug in Launchpad to make sure someone has a look and maybe update the module to work with latest version of Puppet.
puppet-openstack-beaker-N-platform Beaker jobs to do functional testing. It will prepare the Puppet environment on 2 different systems (CentOS and Ubuntu), run Puppet to configure the module resources and run some tests with serverspec. Yes Read the job logs. Sometimes, the job fails because of packaging issues or mirrors downtime. Please report a bug for this so we can find workarounds. Otherwise, make sure your patch is supposed to work with current tests or you'll have to adapt the tests to change the expected behavior. More documentation about Beaker
puppet-openstack-litmus-N-platform Litmus jobs to do functional testing. It will prepare the Puppet environment on 2 different systems (CentOS and Ubuntu), run Puppet to configure the module resources and run some tests with serverspec. Litmus has replaced Beaker since Victoria release. Yes Read the job logs. Sometimes, the job fails because of packaging issues or mirrors downtime. Please report a bug for this so we can find workarounds. Otherwise, make sure your patch is supposed to work with current tests or you'll have to adapt the tests to change the expected behavior. More documentation about Litmus
puppet-openstack-integration-N-scenarioX-tempest-platform Functional testing jobs that will deploy OpenStack run tempest smoke to validate OpenStack is actually working. N represents the Puppet version used in the test. More details here Yes Read the job logs. Sometimes, the job fails because of packaging issues or mirrors downtime. Please report a bug for this so we can find workarounds. It can also be a problem in Tempest, a new test that is failing or a new parameter which is missing. To find some more tips to troubleshoot failures of these jobs, check the below section.

Definition of base jobs is maintained in puppet-openstack-integration. From Rocky release, the job definition is described in the yaml files under the zuul.d directry. Each module has its own .zuul.yaml file and define a list of jobs executed against any change in that repo.

Troubleshooting Integration Tests

When any integration jon fails, the following items in zuul build log help you identify the cause of failures.

  • Log files for each service is stored in the logs/<service name> directory.
  • Output of some diagnostic commands like ps is also stoed in the logs directory.
  • Configuration files are stored under the logs/etc directory. You can check each configuration file to see how parameters are set.
  • Output of puppet execution is recorded in logs/puppet*.txt. Because we execute puppet 2 times to ensure idempotency, two files are created unless the first run fails.
  • Tempest output is logged in job-outputs.txt. The report file is created as logs/testr_results.html .

The copy_logs.sh script is used to capture log files during CI tests. Please propose any additional items you think are useful.