test: split github_ghe job into 3 parallel chunks#2517
test: split github_ghe job into 3 parallel chunks#2517theakshaypant merged 1 commit intotektoncd:mainfrom
Conversation
Split the single github_ghe CI matrix entry into github_ghe_1, github_ghe_2, and github_ghe_3 to run GHE E2E tests in parallel, matching the existing gitea chunking pattern. The old github_ghe target is kept as a backward compat alias. Signed-off-by: Zaki Shaikh <zashaikh@redhat.com> Assisted-by: Claude Opus 4.6 (via Claude Code)
Summary of ChangesHello, I'm Gemini Code Assist1! I'm currently reviewing this pull request and will post my feedback shortly. In the meantime, here's a summary to help you and other reviewers quickly get up to speed! This pull request significantly enhances the efficiency of the CI pipeline by introducing parallel execution for GitHub Enterprise end-to-end tests. By dividing the previously monolithic 'github_ghe' job into three concurrent segments, the overall feedback loop for GHE-related changes will be substantially reduced, leading to faster development cycles and improved resource utilization within the CI system. Highlights
Changelog
Ignored Files
Activity
Using Gemini Code AssistThe full guide for Gemini Code Assist can be found on our documentation page, here are some quick tips. Invoking Gemini You can request assistance from Gemini at any point by creating a comment using either
Customization To customize Gemini Code Assist for GitHub experience, repository maintainers can create a configuration file and/or provide a custom code review style guide (such as PEP-8 for Python) by creating and adding files to a Limitations & Feedback Gemini Code Assist may make mistakes. Please leave feedback on any instances where its feedback is incorrect or counter productive. You can react with 👍 and 👎 on @gemini-code-assist comments. If you're interested in giving your feedback about your experience with Gemini Code Assist for Github and other Google products, sign up here. You can also get AI-powered code generation, chat, as well as code reviews directly in the IDE at no cost with the Gemini Code Assist IDE Extension. Footnotes
|
🔍 PR Lint Feedback
|
There was a problem hiding this comment.
Code Review
This pull request splits the github_ghe E2E tests into three parallel chunks, which is a good improvement for CI performance. The implementation follows the existing pattern for gitea tests. I've left a few comments with suggestions to improve consistency and fix a potential bug related to how test lists are generated. Overall, the changes look good.
|
|
||
| local -a ghe_tests=() | ||
| if [[ "${target}" == github_ghe* ]]; then | ||
| mapfile -t ghe_tests < <(echo "${all_tests}" | grep -iP 'GithubGHE' 2>/dev/null | grep -ivP 'Concurrency' 2>/dev/null | sort 2>/dev/null) |
There was a problem hiding this comment.
With set -o pipefail active, this line will cause the script to exit if grep doesn't find any matching tests, because grep will exit with status 1. You should handle this case to avoid unexpected script failures. Appending || true after the grep pipeline is a common way to solve this.
This issue is pre-existing and also affects the creation of gitea_tests and github_tests.
| mapfile -t ghe_tests < <(echo "${all_tests}" | grep -iP 'GithubGHE' 2>/dev/null | grep -ivP 'Concurrency' 2>/dev/null | sort 2>/dev/null) | |
| mapfile -t ghe_tests < <(echo "${all_tests}" | grep -iP 'GithubGHE' 2>/dev/null | grep -ivP 'Concurrency' 2>/dev/null || true | sort 2>/dev/null) |
| fi | ||
|
|
||
| local -a ghe_tests=() | ||
| if [[ "${target}" == github_ghe* ]]; then |
There was a problem hiding this comment.
The ghe_tests array should also be populated for the github_second_controller target, as it's an alias for running GHE tests. This will allow you to reuse the ghe_tests array for the alias case, improving consistency and avoiding redundant computations. See my other comment on how to use this.
| if [[ "${target}" == github_ghe* ]]; then | |
| if [[ "${target}" == github_ghe* || "${target}" == "github_second_controller" ]]; then |
| # pull_request_target runs the workflow YAML from main which still sends old | ||
| # target names. | ||
| github_second_controller | github_ghe) | ||
| printf '%s\n' "${all_tests}" | grep -iP 'GithubGHE' | grep -ivP 'Concurrency' |
There was a problem hiding this comment.
After modifying the condition to populate ghe_tests for github_second_controller (as per my other suggestion), you can simplify this to use the ghe_tests array directly. This avoids re-running grep and ensures the output is sorted, which is consistent with the new chunked targets.
| printf '%s\n' "${all_tests}" | grep -iP 'GithubGHE' | grep -ivP 'Concurrency' | |
| printf '%s\n' "${ghe_tests[@]}" |
Split the single github_ghe CI matrix entry into github_ghe_1, github_ghe_2, and github_ghe_3 to run GHE E2E tests in parallel, matching the existing gitea chunking pattern. The old github_ghe target is kept as a backward compat alias.
Assisted-by: Claude Opus 4.6 (via Claude Code)
📝 Description of the Change
👨🏻 Linked Jira
🔗 Linked GitHub Issue
Fixes #
🚀 Type of Change
fix:)feat:)feat!:,fix!:)docs:)chore:)refactor:)enhance:)deps:)🧪 Testing Strategy
🤖 AI Assistance
If you have used AI assistance, please provide the following details:
Which LLM was used?
Extent of AI Assistance:
Important
If the majority of the code in this PR was generated by an AI, please add a
Co-authored-bytrailer to your commit message.For example:
Co-authored-by: Gemini gemini@google.com
Co-authored-by: ChatGPT noreply@chatgpt.com
Co-authored-by: Claude noreply@anthropic.com
Co-authored-by: Cursor noreply@cursor.com
Co-authored-by: Copilot Copilot@users.noreply.github.com
**💡You can use the script
./hack/add-llm-coauthor.shto automatically addthese co-author trailers to your commits.
✅ Submitter Checklist
fix:,feat:) matches the "Type of Change" I selected above.make testandmake lintlocally to check for and fix anyissues. For an efficient workflow, I have considered installing
pre-commit and running
pre-commit installtoautomate these checks.