chore(release): Helios v1.8.0#1192
Conversation
…eanup (Option B) (#1182) Replace the implicit Hibernate gitRepositoryFilter tenant magic with explicit per-query repository filtering, and remove unnecessary @transactional. Closes latent cross-repository read/write leaks (findById/PK loads were never covered by the filter) and the write-on-GET on settings, converts the accidental Issue.body @lob (PostgreSQL Large Object) to a plain text column (V57), and scopes the workflow-label / deployment-workflow-attach / workflow-group-membership write paths to the current repository. Verified: full server test suite green (470 tests), all CI checks green, staging-deployed and smoke-tested.
…#1187) Persist workflow_job events (WorkflowJob + V58) and render a fixed, config-driven set of canonical pipeline nodes (helios.pipeline) mapped to Artemis CI job names. New /api/pipeline/{branch,pr}; client renders every node always (pending until a job appears). Full server suite + client spec green; config documented in docs/admin/pipeline_configuration.rst.
…7d/30d) (#1188) Stops the ~8h forced re-login: the running helios realm capped sessions at 28800s and --import-realm is a no-op on an existing realm. Adds an isolated, non-blocking one-shot keycloak-config service (prod + dev) that idempotently applies 7d idle / 30d max via kcadm on every deploy. Verified on staging (28800 -> 604800/2592000). Docs: docs/admin/keycloak_sessions.rst.
…ack for others (#1189) The canonical Build/Tests/Quality catalog is Artemis-shaped and global, so other repos (e.g. ls1intum/Helios) showed an all-pending skeleton and lost their group view. Gate the catalog to helios.pipeline.repositories (default ls1intum/Artemis); every other repo falls back to its WorkflowGroup-based pipeline. Guarded by PipelineIT.
Not up to standards ⛔
|
| * another repository into their group. Membership workflows must belong to the path repository: a | ||
| * foreign workflow id is rejected (400) and no membership is created for it. | ||
| */ | ||
| class WorkflowGroupScopingIT extends HeliosIntegrationTest { |
There was a problem hiding this comment.
🚫 [checkstyle] <com.puppycrawl.tools.checkstyle.checks.naming.AbbreviationAsWordInNameCheck> reported by reviewdog 🐶
Abbreviation in name 'WorkflowGroupScopingIT' must contain no more than '1' consecutive capital letters.
| } | ||
|
|
||
| @Test | ||
| void addingAWorkflowFromAnotherRepositoryToAGroupIsRejectedAndCreatesNoMembership() |
There was a problem hiding this comment.
🚫 [checkstyle] <com.puppycrawl.tools.checkstyle.checks.naming.AbbreviationAsWordInNameCheck> reported by reviewdog 🐶
Abbreviation in name 'addingAWorkflowFromAnotherRepositoryToAGroupIsRejectedAndCreatesNoMembership' must contain no more than '1' consecutive capital letters.
| } | ||
|
|
||
| @Test | ||
| void addingAWorkflowFromTheSameRepositoryToAGroupSucceeds() throws Exception { |
There was a problem hiding this comment.
🚫 [checkstyle] <com.puppycrawl.tools.checkstyle.checks.naming.AbbreviationAsWordInNameCheck> reported by reviewdog 🐶
Abbreviation in name 'addingAWorkflowFromTheSameRepositoryToAGroupSucceeds' must contain no more than '1' consecutive capital letters.
| * repository with no settings row it returns transient defaults and persists nothing. Previously a | ||
| * GET INSERTed a row as a side effect, and a plain GET must never write. | ||
| */ | ||
| class GitRepoSettingsIT extends HeliosIntegrationTest { |
There was a problem hiding this comment.
🚫 [checkstyle] <com.puppycrawl.tools.checkstyle.checks.naming.AbbreviationAsWordInNameCheck> reported by reviewdog 🐶
Abbreviation in name 'GitRepoSettingsIT' must contain no more than '1' consecutive capital letters.
| } | ||
|
|
||
| @Test | ||
| void getSettingsReturnsDefaultsAndDoesNotPersistARow() throws Exception { |
There was a problem hiding this comment.
🚫 [checkstyle] <com.puppycrawl.tools.checkstyle.checks.naming.AbbreviationAsWordInNameCheck> reported by reviewdog 🐶
Abbreviation in name 'getSettingsReturnsDefaultsAndDoesNotPersistARow' must contain no more than '1' consecutive capital letters.
| * request or workflow-run id; a foreign id must not surface another repository's test results. The | ||
| * entry lookups are scoped, so cross-repo and no-header (unauthenticated) requests must 404. | ||
| */ | ||
| class TestResultScopingIT extends HeliosIntegrationTest { |
There was a problem hiding this comment.
🚫 [checkstyle] <com.puppycrawl.tools.checkstyle.checks.naming.AbbreviationAsWordInNameCheck> reported by reviewdog 🐶
Abbreviation in name 'TestResultScopingIT' must contain no more than '1' consecutive capital letters.
| import org.springframework.test.web.servlet.MockMvc; | ||
|
|
||
| /** | ||
| * Base class for full-context integration tests. Boots the whole application against a real embedded |
There was a problem hiding this comment.
🚫 [checkstyle] <com.puppycrawl.tools.checkstyle.checks.sizes.LineLengthCheck> reported by reviewdog 🐶
Line is longer than 100 characters (found 101).
| * PostgreSQL (zonky, via Docker) with the real Flyway schema, and exposes {@link MockMvc} so tests | ||
| * drive the actual servlet stack — interceptors, Open-Session-In-View, and the repository layer. | ||
| * | ||
| * <p>This is the harness for the tenant-isolation guard tests: it exercises the same request path that |
There was a problem hiding this comment.
🚫 [checkstyle] <com.puppycrawl.tools.checkstyle.checks.sizes.LineLengthCheck> reported by reviewdog 🐶
Line is longer than 100 characters (found 103).
| * production uses, so a scoping test written here passes both with the legacy Hibernate | ||
| * {@code gitRepositoryFilter} and with explicit per-query filtering after the migration. | ||
| * | ||
| * <p>External integrations that would otherwise reach out on startup are neutralised: NATS is disabled |
There was a problem hiding this comment.
🚫 [checkstyle] <com.puppycrawl.tools.checkstyle.checks.sizes.LineLengthCheck> reported by reviewdog 🐶
Line is longer than 100 characters (found 103).
| * {@code gitRepositoryFilter} and with explicit per-query filtering after the migration. | ||
| * | ||
| * <p>External integrations that would otherwise reach out on startup are neutralised: NATS is disabled | ||
| * ({@code nats.enabled=false}), the schedulers/reconciliation/notifications/AI are turned off, and the |
There was a problem hiding this comment.
🚫 [checkstyle] <com.puppycrawl.tools.checkstyle.checks.sizes.LineLengthCheck> reported by reviewdog 🐶
Line is longer than 100 characters (found 103).
|
Closing in favour of the repo's direct promotion: |
Release v1.8.0 — promotes
stagingtomainfor the production release. Squash-merged to keepmainhistory linear.Ships (since v1.7.2):
See the v1.8.0 release notes for the full, human-readable highlights and the complete changelog (
v1.7.2...v1.8.0).