Repository navigation
ci(ci): upload Playwright results to GCS instead of GitHub artifacts - #36
Merged
Merged
Conversation
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.
Why
GitHub Actions artifact storage counts against the org's GitHub quota and billing limits. The springdotnew org is moving artifact and package storage to GCP project
spring-452820. This PR moves echoform's only artifact upload, the Playwright results on failure, togs://spring-452820-gha-artifacts.What changed
.github/workflows/ci.yml, jobbuild-and-test(GitHub-hostedubuntu-latest):permissionsblock withcontents: read(allactions/checkoutneeds) andid-token: write. The workflow had no permissions block before, so the job now gets only these two scopes. None of its steps use anything else.google-github-actions/auth@7c6bc770dae815cd3e89ee6cdf493a5fab2cc093 # v3withif: failure(). It uses direct Workload Identity Federation throughprojects/59831676433/locations/global/workloadIdentityPools/github/providers/springdotnew, with no service account. The bucket grants objectAdmin onartifacts/echoform/toprincipalSet …/attribute.repository/springdotnew/echoform.actions/upload-artifact@v4(playwright-results, 7-day retention) is replaced by agcloud storage cp -rstep, still underif: failure().demo/<app>/test-resultsanddemo/<app>/playwright-reportgoes togs://spring-452820-gha-artifacts/artifacts/echoform/<run_id>/playwright-results/<app>/.--custom-time= now + 7 days. The bucket deletes them one day after customTime.cp -r demo/*/test-results/ …would copy every app's folder to the sametest-results/prefix, and the apps would overwrite each other. Copying per demo keeps each app's results separate, the same layout the old artifact had.if-no-files-found: warn.https://console.cloud.google.com/storage/browser/spring-452820-gha-artifacts/artifacts/echoform/<run_id>/playwright-resultsto the job summary.setup-gcloudstep. The Google Cloud CLI is preinstalled onubuntu-latest.Nothing reads these artifacts. No other workflow uploads or downloads artifacts (
release.ymlanddeploy-wmux-client.ymlhave none).How it was verified (locally; echoform's hosted CI runs rarely)
bun install --frozen-lockfilepassed. No git hooks are configured in this repo.bun run lintpassed (0 errors; the 8 warnings are already on master).bun run typecheckpassed.bun run buildand thepackages/wmux-clientbuild both passed.packages/echoformbun run testpassed, 8/8.todo-app: 6/6 passed.file-editor: 5/5 passed.dev-server: 2/4 passed. The cold first-page tests (should render xterm terminal,late-joining client receives terminal history) hit their 15swaitForSelectortimeout in a heavily loaded shared dev pod. This PR changes only.github/workflows/ci.yml, so the demo code is identical to master, and master's hosted CI is green (run 35001053255). This PR's own CI run is the authoritative check.bash -ewith a stubgcloud:gcloudfails, the step fails.copy_task_iterator.py) that a destination ending in/keeps the source folder name.The upload path runs only when an earlier step fails, so a green CI run does not exercise it.
Dependencies
springdotnew, and objectAdmin onartifacts/echoform/forprincipalSet …/attribute.repository/springdotnew/echoform. The coordinator applied all three in O1 on 2026-10-11.Part of the springdotnew GCP storage migration (lane A3).