Skip to content

chore: remove AI analysis, workflow logs, test results, release management, Sentry and Maven starter - #1229

Open
krusche wants to merge 5 commits into
stagingfrom
worktree-maintenance-cuts-analysis
Open

krusche wants to merge 5 commits into
stagingfrom
worktree-maintenance-cuts-analysis

Conversation

@krusche

@krusche krusche commented Nov 3, 2026 •

Copy link
Copy Markdown
Member

Motivation

Helios has become too expensive to maintain. This PR focuses it on its core, a UI for GitHub Actions and deployments to test servers, by removing features that are secondary or that only work in a narrow setup.

Description

Removed (server, client, config, CI and docs):

  • AI test-failure analysis (ai/**, the OpenAI/spring-ai dependencies and helios.ai.* config)
  • Workflow log storage and viewer (workflow/logs/**, the logs endpoint and page). Users follow the existing "Open on GitHub" links instead.
  • Test-result ingestion and flaky tests (tests/**, test types, flaky-tests page, test results in the pipeline view, WorkflowRun.testProcessingStatus, the keep-N cleanup policies)
  • Release management (releaseinfo/**, release candidates, GitHub release sync, release UI, release tags in the UI)
  • Sentry (client, server, release-sentry.yml) and canvas-confetti
  • helios-status-spring-starter (Maven module) and release-maven.yml
  • CI clutter: removed the fail/mock deployment fixtures (only deployment-helios.yml remains), renovate.yml (the hosted Renovate app is used), the stale bot, the PR labeler, assign-author and ready-for-review workflows
  • Docs and ops: removed TESTING_PLAYBOOK.md and the Artemis test-display runbook; updated README and docs

Database: new migration V60__drop_removed_features.sql drops the test, flakiness, test-failure-analysis and release tables, workflow_run.test_processing_status and repository_settings.package_name. No existing migration was changed.

Also removed as follow-up cleanup: the workflow-label (NONE/TEST) selector in project settings, the unused latest-release tag on repositories (V60 also drops repository.latest_release_tag_name, saving one GitHub API call per repo sync), orphaned repository finders, production/staging source maps that only served Sentry, and stale test fixtures. Added tests for the cleanup policy, RepoSecretFilter, routes, navigation bar, environment accordion and the workflow-runs table.

Kept on purpose: the custom Keycloak theme, notifications, NATS/webhook-listener, the pipeline view, deployment approvals, and the server-side Workflow.Label.TEST API.

Not done: merging nginx.prod.conf/nginx.staging.conf (copied to the hosts by hand) and application-prod.yml/application-staging.yml (a shared file would need a new per-environment variable). flyway-validate.yml and validate-openapi.yml stay separate because they are reused via workflow_call.

Behaviour changes to be aware of:

  • Cleanup of workflow runs is now a max-age cap (CLEANUP_WORKFLOW_RUN_MAX_AGE_DAYS) plus the optional orphan-branch sweep. Default branches are no longer exempt from keep-N pruning because that pruning is gone.
  • Runs on non-default branches are now kept until the 90-day cap or the orphan-branch sweep (they used to be pruned to the newest few).

Testing Instructions

Prerequisites:

  • Staging deployment with a copy of the production database (V60 is destructive)

Flow:

  1. Start the app and confirm Flyway applies V60 and the server boots (Hibernate validation passes).
  2. Open CI/CD, a PR, a branch and a workflow run: no test-result, release or log UI appears and nothing errors.
  3. Lock, deploy to and unlock an environment.
  4. Open project settings and confirm the workflow groups and lock thresholds still save.

Verification run locally: server compile and tests (358 tests, 0 failures, 2 pre-existing skips, including the Testcontainers integration tests); client production build, eslint, prettier and unit tests (361 tests). Checkstyle was not run locally (CI only).

Checklist

General

  • PR description explains the purpose and changes.
  • Changes have been tested locally.

Deployment follow-ups (after merge)

  • Remove the now unused GitHub environment variables and secrets: SENTRY_DSN, HELIOS_AI_*, OPENAI_*, plus the Sentry release secrets and the publish-maven environment.
  • Back up the production DB before the first deploy with V60.
  • The Maven artifact on Maven Central and GitHub Packages stays available but will not receive new releases.

Note: renumbered from V59 to V60 after the GitHub token-refresh migration (V59, #1199) landed in staging.

…elease management, Sentry and the Maven starter

Focus Helios on its core (GitHub Actions UI and deployments to test servers) to
minimise maintenance. Adds migration V59 to drop the unused tables and columns.
Copilot AI balanced review requested due to automatic review settings November 3, 2026 15:33
@krusche
krusche requested a review from a team as a code owner November 3, 2026 15:33

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot was unable to review this pull request because the user who requested the review has insufficient remaining quota. Try requesting a review at a lower effort level.

An organization owner can choose the repository organization as the billing source for reviews requested by members with a paid Copilot license. Learn about Copilot code review billing.

@codacy-production

codacy-production Bot commented Nov 3, 2026 •

Copy link
Copy Markdown

Not up to standards ⛔

🟢 Issues 0 issues

Results:
0 new issues

View in Codacy

🔴 Coverage ∅ diff coverage · -1.33% coverage variation

Metric Results
Coverage variation ❌ -1.33% coverage variation (-1.00%)
Diff coverage ∅ diff coverage

View coverage diff in Codacy

Coverage variation details
Coverable lines Covered lines Coverage
Common ancestor commit (172e4eb) 16324 10064 61.65%
Head commit (4e4960a) 11964 (-4360) 7217 (-2847) 60.32% (-1.33%)

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 (#1229) 0 0 ∅ (not applicable)

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.

@Claudia-Anthropica Claudia-Anthropica left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@krusche I found one navigation regression: deployed tags now open a branch page that can't load them. Apply labels failed on GitHub's 20,000-line diff limit in the existing workflow this PR removes. Server tests, Java/Kotlin CodeQL, and generated-client validation were still unfinished.

tooltipPosition="top"
(click)="$event.stopPropagation()"
[routerLink]="isRelease(deployment) ? null : getBranchLink()"
[routerLink]="getBranchLink()"

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@krusche [medium] For an environment deployed from a tag such as v1.2.3, this now opens /ci-cd/branch/v1.2.3. Tags aren't stored as branches: GitHubCreateMessageHandler only syncs branch refs, and BranchController returns 404 when the branch lookup fails. The destination consequently stays on loading skeletons without deployment controls or history. Please retain tag detection, keep tag refs non-navigable, and restore regression coverage for this case.

🤖 Prompt for AI agents

In client/src/app/components/environments/environment-accordion/environment-accordion.component.html, deployed tags are routed to a branch page whose API cannot resolve them. Retain tag detection and set the routerLink to null for tag refs while preserving branch navigation, with a regression test.

Remove orphaned repository finders, the workflow-label selector and the unused
latest-release tag, drop production/staging source maps that only served Sentry,
fix docs, and add tests for the cleanup policy, security filter, routes, nav bar
and environment accordion.

private static final String TOKEN = "repo-7-" + "a".repeat(43);

private final GitRepoSettingsRepository settingsRepository = mock(GitRepoSettingsRepository.class);

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🚫 [checkstyle] <com.puppycrawl.tools.checkstyle.checks.sizes.LineLengthCheck> reported by reviewdog 🐶
Line is longer than 100 characters (found 101).

@Claudia-Anthropica Claudia-Anthropica left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@krusche Thanks, the restored version-tag guard and regression coverage fix the earlier navigation issue. I found no further issues in the full diff. Apply labels failed on GitHub's 20,000-line diff limit in the existing workflow this PR removes; this doesn't indicate an application defect. Server and client tests, OpenAPI validation, migration validation, and Java/Kotlin CodeQL were still running.

Resolve conflicts with the token-refresh work (#1199): drop the release/AI-handler code that this PR removes, keep the ResponseStatusException handler and the token encryption test key, and renumber the cleanup migration from V59 to V60.
@@ -160,7 +138,7 @@ public ResponseEntity<ApiError> handleResponseStatusException(
error.setTimestamp(Instant.now());

// These are deliberate, handled outcomes (auth, conflicts, upstream rejections), so keep them
// out of Sentry; log server-side faults (5xx) at WARN for visibility, client faults at DEBUG.
// out of error reporting; log server-side faults (5xx) at WARN for visibility, client faults at DEBUG.

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🚫 [checkstyle] <com.puppycrawl.tools.checkstyle.checks.sizes.LineLengthCheck> reported by reviewdog 🐶
Line is longer than 100 characters (found 107).

@Claudia-Anthropica Claudia-Anthropica left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@krusche The tag-navigation fix still holds, and I found no further issues in the full diff. Apply labels failed on GitHub's 20,000-line diff limit in the existing workflow this PR removes; this doesn't indicate an application defect. Server/client tests, client build, generated-client validation, migration validation, Actions and Java/Kotlin CodeQL, Keycloakify linting, branch checks and PR-title validation were still unfinished.

Resolve conflicts with the dependency update (#1231): keep renovate.yml, Sentry and confetti removed, take the new client versions and regenerate the client lockfile.

@Claudia-Anthropica Claudia-Anthropica left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@krusche The tag-navigation fix still holds, but I found a database performance regression I missed in the earlier review: V60 removes the index still needed by branch pipeline lookups. Please preserve a branch/repository index when dropping the test-status column. Apply labels failed on GitHub's 20,000-line diff limit in the existing workflow this PR removes; this doesn't indicate an application defect. Server/client tests, client build, OpenAPI and migration validation, Java/Kotlin CodeQL, linting, and branch checks are still unfinished.


-- Test-processing status on workflow runs (also drops idx_workflow_run_branch_repo_status and the
-- workflow_run_test_processing_status_check constraint)
ALTER TABLE public.workflow_run DROP COLUMN IF EXISTS test_processing_status;

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@krusche [medium] Dropping this column also drops idx_workflow_run_branch_repo_status, whose (head_branch, repository_id) prefix still supports the head-run and previous-commit queries in getPipelineRunContextForBranch. The remaining schema has no supporting index for these filters, so branch pipelines polled every 15 seconds require full workflow_run scans on large CI histories. Please create a replacement index on (head_branch, repository_id) in this migration.

🤖 Prompt for AI agents

In server/application-server/src/main/resources/db/migration/V60__drop_removed_features.sql, dropping test_processing_status also removes the only branch/repository index used by retained branch pipeline queries. Add a replacement index on public.workflow_run (head_branch, repository_id) in this migration.

This branch has not been deployed

No deployments
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