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-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.

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.