feat: parallelize deploy-and-test pipeline#1191
Open
decko wants to merge 1 commit into
Open
Conversation
The integration test pipeline ran ~1 hour with all tasks in a strict sequential chain. This change splits the monolithic functional test task into 3 parallel groups and decouples the API schema upload, reducing wall-clock time by an estimated 15-25 minutes. Changes: - Split pulp-functional-tests into 3 parallel Tekton tasks: - functional-tests-rpm (RPM parallel + serial) - functional-tests-core-service (pulpcore + pulp_service) - functional-tests-npm-maven (Maven + NPM) - Decouple push-api-json-files-to-pulp from test results (real dependency is install-bindings, not test output) - Move test dependency installation into install-bindings task to avoid duplicating setup across parallel tasks - Fix JUnit XML overwriting (unique filenames per test group) - Use unique pytest cache_dir per task to prevent corruption - Reduce wait-for-api-schema retry interval from 15s to 5s Assisted-by: Claude Code <noreply@anthropic.com> Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Contributor
Reviewer's GuideParallelizes the Tekton deploy-and-test pipeline by splitting the monolithic pulp-functional-tests task into three focused tasks that run after install-bindings, centralizes test dependency installation into a shared install step, shortens the API schema polling interval, and hardens pytest execution with isolated cache directories and unique JUnit XML outputs. File-Level Changes
Tips and commandsInteracting with Sourcery
Customizing Your ExperienceAccess your dashboard to:
Getting Help
|
Contributor
There was a problem hiding this comment.
Hey - I've left some high level feedback:
- The three new functional test tasks duplicate a lot of setup logic (login.sh, namespace detection, PASSWORD extraction, cmd_prefix, debug_and_fail); consider moving this into a shared script or helper so future changes only need to be made in one place.
- debug_and_fail relies on
oc_wrapper get pod | grep -oE 'pulp-(api|content|worker)\S*', which can match multiple pods; using label selectors or otherwise disambiguating the target pods would make log collection more robust as the deployment topology evolves. - The hard-coded route
https://env-${NS}.apps.crc-eph.r9lp.p1.openshiftapps.com/...is repeated in multiple tasks and ties the pipeline to a specific cluster domain; consider deriving the route dynamically (e.g., fromoc_wrapper get route) or making it a parameter.
Prompt for AI Agents
Please address the comments from this code review:
## Overall Comments
- The three new functional test tasks duplicate a lot of setup logic (login.sh, namespace detection, PASSWORD extraction, cmd_prefix, debug_and_fail); consider moving this into a shared script or helper so future changes only need to be made in one place.
- debug_and_fail relies on `oc_wrapper get pod | grep -oE 'pulp-(api|content|worker)\S*'`, which can match multiple pods; using label selectors or otherwise disambiguating the target pods would make log collection more robust as the deployment topology evolves.
- The hard-coded route `https://env-${NS}.apps.crc-eph.r9lp.p1.openshiftapps.com/...` is repeated in multiple tasks and ties the pipeline to a specific cluster domain; consider deriving the route dynamically (e.g., from `oc_wrapper get route`) or making it a parameter.Help me be more useful! Please click 👍 or 👎 on each comment and I'll use the feedback to improve your reviews.
Member
Author
|
/retest |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
pulp-functional-teststask into 3 parallel Tekton tasks (functional-tests-rpm,functional-tests-core-service,functional-tests-npm-maven)push-api-json-files-to-pulpfrom test results — its real dependency isinstall-bindings, not test outputpytest,gnupg, requirements) intoinstall-bindingsto avoid duplicating setup across parallel taskspytest cache_dirper task to prevent concurrent cache corruptionwait-for-api-schemaretry interval from 15s to 5s (same 900s max)Before (fully sequential)
After (parallel fan-out)
Estimated time savings: 15-25 minutes (pipeline currently takes ~1 hour).
Test plan
Risks
-n 8) may exceed pod memory limits sized for serial execution. Mitigation: monitor first run, increase limits or reduce-n 8to-n 4if OOM occurs.🤖 Generated with Claude Code
Summary by Sourcery
Parallelize the Tekton deploy-and-test pipeline and adjust related test execution setup.
CI: