The integration test Jenkins pipeline provides an
additional testing layer for pull requests that target the main
branch.
Unlike other automated tests (such as lint, unit, and e2e tests), this integration test pipeline is not automatically triggered on a new pull request. The main reason for this setup are resource usage and performance considerations. For more details and usage guidelines, please refer to the dedicated section.
Integration tests are MANDATORY for pull requests that modify:
- Core Controller Logic (
internal/controller/changes) - API Definitions (
api/directory changes) - Webhook Implementations (
internal/webhook/changes) - Operator Configuration (
config/directory changes) - Feature Framework (
pkg/feature/changes)
Integration tests are RECOMMENDED for:
- Multi-component feature implementations
- Performance optimizations
- External dependency updates
- Documentation changes affecting workflows
While using integration tests, please respect the following considerations and guidelines:
- Integration tests pipeline consumes significant cluster resources
- Typical execution time: around 60 minutes
- Uses dedicated OpenShift clusters for testing
- RHOAI Platform team owns two pre-configured clusters dedicated to integration testing
- each test pipeline instance will be added to one of those clusters based on their respective availability
- having those running clusters saves significant amount of time, as needing to allocate a new cluster for each pipeline instance would be additionally time-consuming (+60 minutes)
- Batch Related Changes: Group related changes in a single PR to avoid multiple pipeline runs
- Local Testing First: Run unit tests locally before triggering integration tests
- Component-Specific Impact: Consider if your changes truly require full integration testing
- Only one integration test per PR at a time
- Multiple PRs may queue during high activity periods
- Plan accordingly for release deadlines
The general outline of the integration test process is:
- Prow Command:
/label run-integration-testsapplies the label - GitHub Actions: Builds operator, bundle, and catalog images with PR-specific tags
- Image Registry: Pushes to quay.io (e.g.,
quay.io/org/opendatahub-operator-catalog:pr-123) - Jenkins Trigger: GitHub bot automatically comments
/test-integration - OpenShift Testing: Jenkins deploys and tests on dedicated cluster
- Results: Jenkins reports back with test results and artifacts
For precise step-by-step user guide, please refer to the section below.
The user is in control of enabling and disabling the integration tests pipeline on their PR. Once enabled, the test pipeline will trigger on any new commit push into the PR branch. Step-by-step guide for enabling/disabling the test pipeline is provided below.
To enable running the integration tests pipeline on a PR, please follow the steps below:
- Label the PR as ready for integration tests: comment
/label run-integration-testson the PR - Wait for the bot:
openshift-ci botwill add the label to your PR - Trigger the tests: once PR is labeled, any new commit push into the PR branch will trigger the integration tests pipeline
- Monitor the image building process: Keep an eye on the
Build Catalog FBC and run Integration testsGitHub Action. Once this action succeeds,github-actions botwill comment on the PR, which will automatically trigger the Jenkins pipeline- Troubleshooting: please refer to the dedicated troubleshooting section
- Monitor the test process: Once test pipeline starts in Jenkins,
rhods-ci-botwill comment that the tests have started, and provide a link to the Jenkins pipeline run details page- Note: Accessing the Jenkins pipeline run details requires active Red Hat VPN connection
- Troubleshooting: please refer to the dedicated troubleshooting sections
- Review the test pipeline results: Once integration tests pipeline finishes in Jenkins,
rhods-ci-botwill post the summary of test results as a PR comment. This comment includes:- links to the completed Jenkins jobs' details
- Note: requires active Red Hat VPN connection to access
- an overall test pipeline result and test pass rate
- possible pipeline results:
SUCCESS: all executed tests passedUNSTABLE: 80% <= test pass rate < 100%FAILED: test pass rate < 80%
- possible pipeline results:
- passed/failed/errors/skipped test counts
- a link to the full test report
- Note: requires active Red Hat VPN connection to access
- links to the completed Jenkins jobs' details
To disable running integration tests pipeline:
- Remove the integration test PR label: comment
/remove-label run-integration-testson the PR - Wait for the bot:
openshift-ci botwill remove the label from your PR - Integration tests pipeline is now disabled and won't be triggered on future pushes (until re-enabled)
- Ensure the correct version tag was obtained
- The version tag is obtained dynamically via a GitHub API call
- This ensures that the correct latest tag will be used to construct image URLs
- Expected format is
v<X>.<Y>.<Z>-pr-<pr_number>- For example:
v2.32.0-pr-1
- For example:
- The version tag is obtained dynamically via a GitHub API call
- Ensure no conflicting image builds are happening at the same time for the same PR
- Verify
quay.ioregistry permissions and quotas - Check for base image availability and versions
- Ensure PR metadata was uploaded successfully as GitHub artifact
- Verify the
/label run-integration-testscommand was successful - Check that your changes affect monitored paths (
odh-bundle/,rhoai-bundle/,cmd/,config/,internal/,pkg/) - Ensure the GitHub Action
Build Catalog FBC and run Integration testscompleted successfully - Look for the automated
/test-integrationcomment from thegithub-actions bot
- Check Jenkins console logs for specific component failures
- Verify catalog image was built and pushed to
quay.iosuccessfully - Review OpenShift cluster connectivity and permissions