Skip to content

feat: add environment deployment websocket updates#1043

Draft
mertilginoglu wants to merge 21 commits into
stagingfrom
codex/environment-websocket-only
Draft

feat: add environment deployment websocket updates#1043
mertilginoglu wants to merge 21 commits into
stagingfrom
codex/environment-websocket-only

Conversation

@mertilginoglu

Copy link
Copy Markdown
Contributor

Motivation

Environment deployment status and timer updates should refresh seamlessly without relying on workflow-run-detail websocket subscriptions. The previous websocket branch was reverted, and this PR restores only the environment deployment websocket path while leaving workflow run details on the regular query flow.

Description

  • Add repository-scoped environment deployment websocket infrastructure with token/repository handshake validation.
  • Add a client environment deployment websocket service that invalidates environment queries and disables polling while connected.
  • Publish environment invalidations after deployment, lock, scheduler, workflow run, and workflow job timing changes so deployment timers can transition from pre-deployment to deployment in the environment view.
  • Keep workflow-run detail websocket functionality out of this PR.

Testing Instructions

Prerequisites:

  • GitHub account with access to a Helios repository.
  • A repository with at least one configured environment and deployment workflow.

Flow:

  1. Log in to Helios and open the environment page for the repository.
  2. Trigger a deployment from Helios.
  3. Keep the environment page open while the deployment workflow progresses.
  4. Verify that the deployment status and timer update without manually refreshing the page.
  5. Verify that the timer changes from pre-deployment to deployment when the configured deploy job starts.
  6. Open a workflow run details page and verify it still loads run and job data without websocket-specific behavior.

Checklist

General

Server

  • Code is performant and follows best practices

Client

  • I translated all newly inserted strings into English and German.

renovate Bot and others added 19 commits May 5, 2026 12:30
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: meryemefe <meryemefe.cs@gmail.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
…fication, and helios-status-spring-starter (#1021)

chore(deps): upgrade to Spring Boot 4.0.6 in application-server, notification, and helios-status-spring-starter
fix(aop): update pointcut expression for SessionBuilder in RepositoryFilterAspect
chore(deps): update helios-status-spring-starter to version 1.1.1
…eployment blocking logic during environment unlock (#1028)
- add filter bar support for author, assignee, label, review state, and requested reviewer, sort
- extend backend pull request query filtering and filter-options endpoint support
… limits, and confirmation UX (#977)

- implement AI-based test failure analysis flow
- persist AI test failure analyses and add scheduled cleanup
- enforce per-user rate limits for analysis requests
- show AI usage limits and confirmation modal before running analysis
…iosDeploymentWorkflowJobTimingMeta projection and improved caching logic (#1038)
@codacy-production

codacy-production Bot commented May 14, 2026

Copy link
Copy Markdown

Not up to standards ⛔

🟢 Issues 0 issues

Results:
0 new issues

View in Codacy

🔴 Metrics 104 complexity

Metric Results
Complexity ⚠️ 104 (≤ 20 complexity)

View in Codacy

🟢 Coverage 9.22% diff coverage · -0.38% coverage variation

Metric Results
Coverage variation -0.38% coverage variation (-1.00%)
Diff coverage 9.22% diff coverage

View coverage diff in Codacy

Coverage variation details
Coverable lines Covered lines Coverage
Common ancestor commit (aef5d83) 8429 3961 46.99%
Head commit (a916dc5) 8635 (+206) 4025 (+64) 46.61% (-0.38%)

Coverage variation is the difference between the coverage for the head and common ancestor commits of the pull request branch: <coverage of head commit> - <coverage of common ancestor commit>

Diff coverage details
Coverable lines Covered lines Diff coverage
Pull request (#1043) 206 19 9.22%

Diff coverage is the percentage of lines that are covered by tests out of the coverable lines that the pull request added or modified: <covered lines added or modified>/<coverable lines added or modified> * 100%

NEW Get contextual insights on your PRs based on Codacy's metrics, along with PR and Jira context, without leaving GitHub. Enable AI reviewer
TIP This summary will be updated as you push new changes.

@github-actions

Copy link
Copy Markdown

There hasn't been any activity on this pull request recently. Therefore, this pull request has been automatically marked as stale and will be closed if no further activity occurs within seven days. Thank you for your contributions.

@github-actions github-actions Bot added the stale label May 25, 2026
…websocket-only

# Conflicts:
#	.github/workflows/pullrequest_linting.yml
#	.github/workflows/test.yml
#	client/.nvmrc
#	client/Dockerfile
#	client/Dockerfile.dev
#	client/package.json
#	client/src/app/components/pipeline/test-results/pipeline-test-results.component.spec.ts
#	client/src/app/components/pipeline/test-results/pipeline-test-results.component.ts
#	client/src/app/core/modules/openapi/client/types.gen.ts
#	client/yarn.lock
#	server/application-server/build.gradle
#	server/application-server/src/main/java/de/tum/cit/aet/helios/workflow/github/GitHubWorkflowJobTimingService.java
#	server/application-server/src/test/java/de/tum/cit/aet/helios/workflow/github/GitHubWorkflowJobTimingServiceTest.java
#	server/helios-status-spring-starter/pom.xml
#	server/notification/build.gradle
@krusche

krusche commented May 28, 2026

Copy link
Copy Markdown
Member

Rebased on current staging. 15 conflicts: mostly the same mechanical churn (pnpm migration, CI workflow updates, Spring Boot 4 + spring-ai 2.0.0-M8 + dep bumps) plus two genuine logic conflicts that needed actual merging.

Mechanical (take staging): yarn.lock dropped; client/package.json, Dockerfiles, .nvmrc, both workflow YAMLs, pom.xml, notification/build.gradle, client/types.gen.ts. Regenerated openapi.yaml from the merged server and ran pnpm generate:openapi.

build.gradle — manual union: kept this PR's spring-boot-starter-websocket (the only dep staging doesn't already have for the websocket feature); took staging's values for everything else — spring-ai-bom 2.0.0-M8 (was M6), jnats 2.25.3, sentry 8.43, +spring-boot-starter-data-jpa-test.

GitHubWorkflowJobTimingService + its test — kept this PR's side: all three hunks were one-sided additive (this PR added the EnvironmentDeploymentWebSocketPublisher field/import and the publishAfterCommit(heliosDeployment) call; staging side empty). Preserved by union, not overwriting any staging change.

pipeline-test-results.component.ts + spec — kept staging's side: one-sided additive in the other direction (staging's test-failure-analysis PR added the aiAnalysisEnabled environment gate; this PR's side empty for those hunks). Both features now coexist.

Silent auto-merge bug caught + fixed in EnvironmentServiceTest.java: the file auto-merged "cleanly" but both sides had added the same 5-method block (testLockOwnerCanNotUnlockWithActiveDeployment and four neighbours) — git concatenated them, producing 5 duplicate-method definitions that broke compileTestJava. Deleted the second identical copy.

Local verification: server compiles + test compiles, EnvironmentServiceTest + GitHubWorkflowJobTimingServiceTest pass, client builds + lints clean. Mergeable; left as draft because this is a non-trivial websocket+token-handshake change that needs human review.

@github-actions

Copy link
Copy Markdown

🚨 Client Code Validation Failed 🚨

The client code in /client/src/app/core/modules/openapi is not up-to-date.
Please regenerate the client code by running:

cd ./client
pnpm generate:openapi

Commit and push the updated files.

@github-actions github-actions Bot removed the stale label May 28, 2026
@github-actions

github-actions Bot commented Jun 5, 2026

Copy link
Copy Markdown

There hasn't been any activity on this pull request recently. Therefore, this pull request has been automatically marked as stale and will be closed if no further activity occurs within seven days. Thank you for your contributions.

@github-actions github-actions Bot added the stale label Jun 5, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants