-
Notifications
You must be signed in to change notification settings - Fork 13.2k
feat(ci): revive bundling and unleash 16-core test speed #25426
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Open
mattKorwel
wants to merge
94
commits into
main
Choose a base branch
from
feat/ci-bundling-revamp
base: main
Could not load branches
Branch not found: {{ refName }}
Loading
Could not load tags
Nothing to show
Loading
Are you sure you want to change the base?
Some commits from the old base branch may be removed from the timeline,
and old review comments may become outdated.
Open
Changes from 8 commits
Commits
Show all changes
94 commits
Select commit
Hold shift + click to select a range
dae7361
feat(ci): add trial bundling workflow and setup action
mattKorwel 340f241
fix(ci): use valid SHA for download-artifact action
mattKorwel c850a72
feat(ci): switch trial to integration tests
mattKorwel 5517dba
feat(ci): integrate PR #12389 build improvements and tsbuildinfo
mattKorwel 518f0b0
feat(ci): unleash 16-core speed and suppress zombie tests
mattKorwel a438c24
feat(ci): switch trial to optimized unit tests
mattKorwel a4730c3
feat(ci): target CLI unit tests specifically in trial
mattKorwel de2dfd7
feat(ci): refine trial to measure both unit speed and bundle integrity
mattKorwel 8ad9efd
feat(ci): implement 'build once, test many' shared artifact architecture
mattKorwel 36e509b
fix(build): update test-utils lib to ES2023 to support modern JS feat…
mattKorwel 73ecb68
feat(ci): simplify trial to balance reliability and speed
mattKorwel 7621c42
fix(ci): ensure core is built for integration test environment
mattKorwel 9e4c153
feat(ci): build full cross-platform matrix on high-power runners
mattKorwel 54a5818
fix(test): use explicit project paths in root vitest config
mattKorwel 34703c2
docs: update project status with cross-platform trial details
mattKorwel ae4b563
fix(ci): fix infrastructure startup errors and restore sandbox depend…
mattKorwel a0a3e0c
feat(ci): unleash 16-core speed, fix act noise, and eliminate 1s rend…
mattKorwel 78c8ace
perf(test): optimize test suite speed and stability
mattKorwel 618bfee
perf(test): fix eslint issues in test-setup.ts
mattKorwel 4d9d652
WIP
mattKorwel de34488
test(cli): stabilize test suite and unblock build by deferring flaky …
mattKorwel c455853
test(cli): ensure all identified problematic tests are skipped
mattKorwel 2b0007a
test(cli): fix missing exports in terminalUtils mock for InputPrompt …
mattKorwel f31d959
test: fix resolution paths for acpClient, topic-policy, and update go…
mattKorwel cb66f06
test(cli): fix flaky LoginWithGoogleRestartDialog assertions and prun…
mattKorwel c1985b1
test(cli): wrap intermediate buffer states for MultiFolderTrustDialog…
mattKorwel ddfb6f0
test(cli): mock useKeypress to strictly trigger alert dismissal for N…
mattKorwel 08c5d5f
fix(cli): enforce exact return key sequences in settings inline edit …
mattKorwel ff8c7a6
test(cli): update remaining InputPrompt snapshots
mattKorwel cb0e101
test(cli): resolve React Context mocking discrepancies and stabilize …
mattKorwel 2212eb1
test(cli): expand E2E layout sync poll limits to buffer extreme runne…
mattKorwel aaebeac
test(cli): mark TextInput tests as sequential to isolate Ink frames i…
mattKorwel bc04e59
fix(cli): resolve lint errors preventing pipeline extraction
mattKorwel ae3f3b6
ci: remove mac job and improve CI polling logic
mattKorwel 9a34744
fix(cli): resolve race conditions in test utils and streamline CI wor…
mattKorwel 844bb44
ci: remove windows and bundle jobs to focus on linux
mattKorwel e71a05c
test(cli): mark problematic tests as sequential to stabilize CI
mattKorwel 32d9de8
ci: add job for suspect tests
mattKorwel 7aedb06
test(cli): update remaining snapshots and fix tests
mattKorwel a19222f
ci: add concurrency group to cancel in-progress runs
mattKorwel 58f4414
ci: exclude suspect tests from main linux job
mattKorwel 51e20fd
test(cli): increase waitUntilReady timeout to 10s for CI
mattKorwel 1e092a4
ci: use forks pool for suspect tests
mattKorwel f4a5647
ci: make sandbox deps optional in setup action
mattKorwel 6c69b51
ci: run only render.test.tsx in suspect job
mattKorwel 9148016
ci: remove test_linux job to isolate suspect test
mattKorwel ca9002e
test(cli): add debug logs to render utils
mattKorwel 761ba4b
test(cli): reduce polling frequency in waitUntilReady to avoid starva…
mattKorwel 682affa
test(cli): remove act from polling loop in waitUntilReady
mattKorwel 6a7e7cc
test(cli): increase waitUntilReady timeout to 30s to check for slowness
mattKorwel 2ec8a9c
test(cli): increase initial wait in waitUntilReady to 500ms
mattKorwel 1489581
test(cli): add act and setImmediate to polling loop in waitUntilReady
mattKorwel e831f6a
test(cli): wrap check in act() in waitUntilReady to flush effects
mattKorwel f3120cd
refactor(core): move diag.setLogger inside initializeTelemetry
mattKorwel 42f9b28
test(cli): add act and process.nextTick to polling loop in waitUntilR…
mattKorwel 4af34de
test(cli): use fake timers in render.test.tsx
mattKorwel bf973df
test(cli): add test with fixed sleep to check if Ink renders at all
mattKorwel 60184b7
test(cli): force write to terminal in onRender of XtermStdout
mattKorwel f4d5b42
test(cli): clean up diagnostic logs and tests after fixing render
mattKorwel 7a63c68
test(cli): use dummy stdout for Ink to prevent double writes and fix …
mattKorwel 0804145
ci: run all tests in packages/cli to verify fix
mattKorwel 140b10d
ci: run only the 3 specific suspect tests
mattKorwel 1292eb0
test(cli): update snapshots and revert sequential in tests
mattKorwel b77d861
ci: run all sequential tests to verify fix
mattKorwel c9da5e6
test(cli): update snapshots and fix terminal height in SettingsDialog…
mattKorwel e226725
test(cli): enable fake timers in SettingsDialog tests for 50% speedup
mattKorwel 8780cbb
test(cli): fix hangs in renderHook by skipping wait for empty frames
mattKorwel fd2875d
ci: run only SettingsDialog.test.tsx to verify speed
mattKorwel bcc9c72
ci: run all sequential tests again after fixes
mattKorwel 40e7d69
test(cli): fix App tests and run only App.test.tsx in CI
mattKorwel dc72fc9
ci: run all sequential tests again after stabilizing App test
mattKorwel dbee067
test(cli): update SettingsDialog snapshots and run only it in CI
mattKorwel 38abb65
ci: run all sequential tests again after stabilizing SettingsDialog
mattKorwel 12f5360
test(cli): fix ToolResultDisplay tests and run only it in CI
mattKorwel 346cc84
ci: run all sequential tests again after stabilizing ToolResultDisplay
mattKorwel 40ce84a
test(cli): update UserMessage snapshots and run only it in CI
mattKorwel d87634c
ci: run all sequential tests again after stabilizing UserMessage
mattKorwel 52d94f7
test(cli): fix TextInput timeouts and run only it in CI
mattKorwel ffb67ec
ci: run all sequential tests again after stabilizing TextInput
mattKorwel ed94bad
test(cli): fix ThinkingMessage timeouts and run only it in CI
mattKorwel 6ef2bf5
ci: run all sequential tests again after stabilizing ThinkingMessage
mattKorwel 6b4f774
ci: run all suspect tests again after skipping AppRig
mattKorwel 74f7a72
ci: run suspect tests with threads in CI and improve AppRig fake time…
mattKorwel edd0c51
ci: update verified tests list and fix 4 more files
mattKorwel 8c68ee3
ci: update verified tests list and fix all remaining bad tests
mattKorwel 6f169e6
ci: push updated snapshots for ThemeDialog and ShellToolMessage
mattKorwel 6f5c02c
test(cli): stabilize useSelectionList tests and update CI
mattKorwel 0e76819
ci: add batch 1 tests as a separate job
mattKorwel 010b2ec
ci: add batch 2 tests as a separate job
mattKorwel 38fe709
ci: add batch 3 tests as a separate job
mattKorwel 18369c0
Fix AppContainer tests and TypeScript errors
mattKorwel a1d4604
Fixed TypeScript and ESLint errors properly without any or ignores
mattKorwel 57ea3ac
Fixed final duplicate imports and exports
mattKorwel 6bf4f46
Fixed generated files issue by adding declarationDir, and completed t…
mattKorwel File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
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
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,45 @@ | ||
| name: 'Setup Gemini CLI' | ||
| description: 'Sets up the environment and either builds from source or uses a pre-built bundle.' | ||
|
|
||
| inputs: | ||
| mode: | ||
| description: 'Setup mode: "source" (build from scratch) or "bundle" (use pre-built artifact)' | ||
| required: true | ||
| default: 'source' | ||
| bundle-artifact: | ||
| description: 'The name of the bundle artifact to download if mode is "bundle"' | ||
| required: false | ||
|
|
||
| runs: | ||
| using: 'composite' | ||
| steps: | ||
| - name: 'Set up Node.js' | ||
| uses: 'actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020' | ||
| with: | ||
| node-version-file: '.nvmrc' | ||
| cache: 'npm' | ||
|
|
||
| - name: 'Install dependencies' | ||
| run: 'npm ci' | ||
| shell: 'bash' | ||
|
|
||
| - name: 'Build from source' | ||
| if: "${{ inputs.mode == 'source' }}" | ||
| run: 'npm run build' | ||
| shell: 'bash' | ||
|
|
||
| - name: 'Download Bundle Artifact' | ||
| if: "${{ inputs.mode == 'bundle' }}" | ||
| uses: 'actions/download-artifact@cc203385981b70ca67e1cc392babf9cc229d5806' # v4 | ||
| with: | ||
| name: '${{ inputs.bundle-artifact }}' | ||
| path: 'bundle' | ||
|
|
||
| - name: 'Post-bundle setup' | ||
| if: "${{ inputs.mode == 'bundle' }}" | ||
| run: | | ||
| # Ensure the bundle is ready for use | ||
| # In a real install, we might symlink bin/gemini to bundle/gemini.js | ||
| # For now, we just list it to verify it exists | ||
| ls -R bundle | ||
| shell: 'bash' |
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
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,65 @@ | ||
| name: 'Bundling Trial CI' | ||
|
|
||
| on: | ||
| push: | ||
| branches: | ||
| - 'feat/ci-bundling-revamp' | ||
|
|
||
| jobs: | ||
| build_bundle: | ||
| name: 'Build Bundle' | ||
| runs-on: 'gemini-cli-ubuntu-16-core' | ||
| steps: | ||
| - name: 'Checkout' | ||
| uses: 'actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8' | ||
|
|
||
| - name: 'Set up Node' | ||
| uses: 'actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020' | ||
| with: | ||
| node-version-file: '.nvmrc' | ||
| cache: 'npm' | ||
|
|
||
| - name: 'Install & Build' | ||
| run: | | ||
| npm ci | ||
| npm run bundle | ||
|
|
||
| - name: 'Upload Bundle' | ||
| uses: 'actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02' # v4 | ||
| with: | ||
| name: 'gemini-bundle' | ||
| path: 'bundle/' | ||
|
|
||
| test_cli_unit: | ||
| name: 'Test (Linux) - CLI Unit Tests' | ||
| runs-on: 'gemini-cli-ubuntu-16-core' | ||
| steps: | ||
| - name: 'Checkout' | ||
| uses: 'actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8' | ||
|
|
||
| - name: 'Setup Source' | ||
| uses: './.github/actions/setup-gemini' | ||
| with: | ||
| mode: 'source' | ||
|
|
||
| - name: 'Run CLI Unit Tests' | ||
| run: 'npx vitest run packages/cli' | ||
| shell: 'bash' | ||
|
|
||
| test_with_bundle: | ||
| name: 'Test (Linux) - Bundled Integration' | ||
| needs: 'build_bundle' | ||
| runs-on: 'gemini-cli-ubuntu-16-core' | ||
| steps: | ||
| - name: 'Checkout' | ||
| uses: 'actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8' | ||
|
|
||
| - name: 'Setup with Bundle' | ||
| uses: './.github/actions/setup-gemini' | ||
| with: | ||
| mode: 'bundle' | ||
| bundle-artifact: 'gemini-bundle' | ||
|
|
||
| - name: 'Run Integration Tests' | ||
| run: 'npm run test:integration:sandbox:none' | ||
| shell: 'bash' |
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
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -28,6 +28,8 @@ bower_components | |
| .DS_Store | ||
| Thumbs.db | ||
|
|
||
| .cache/ | ||
|
|
||
| # TypeScript build info files | ||
| *.tsbuildinfo | ||
|
|
||
|
|
||
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
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
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
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
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
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
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
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
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
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
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
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
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
Oops, something went wrong.
Oops, something went wrong.
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.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This
excludeblock creates a duplicate key in thetestconfiguration object, which overrides the existingexcludedefinition at line 20. This causes the**/cypress/**exclusion to be lost, potentially leading to unintended files being processed as tests. To avoid accidental overwrites and maintain a single source of truth, merge these exclusions into the existing block or use a merge operation as per repository standards.References