64 lines
2.8 KiB
Markdown
64 lines
2.8 KiB
Markdown
> **WARNING:** This document describes only the change applied in this PR.
|
|
> It may already be outdated once the next PR is merged.
|
|
> Historic PR-documentation is not maintained along with new PRs — treat it as a snapshot, not as current documentation.
|
|
|
|
## The Problem
|
|
|
|
A branch could describe its tests but could not build downloadable samples after they passed.
|
|
All follow-up triggers were pinned, even when the follow-up inherited the same sandbox as the tests.
|
|
Deployment authority and ordinary build dependencies need different rules.
|
|
|
|
## Non-Goals
|
|
|
|
This change does not install Keluna's desktop build environment or enable ARM64 compilation.
|
|
It does not change sandbox policies, credential access or follow-up scheduling semantics.
|
|
|
|
## The Scenarios
|
|
|
|
### Feature: Branch-owned sandboxed follow-ups
|
|
|
|
#### Scenario#74.01: Build samples after successful tests
|
|
|
|
- **Given** a host-enforced Docker or Werkdock sandbox
|
|
- **When** a branch defines a sample build after its test build
|
|
- **Then** the sample build inherits the sandbox and runs at the successful test's commit
|
|
- **And** the branch can change an existing ordinary follow-up's predecessor and selectors
|
|
|
|
##### Verified by
|
|
|
|
- [ConfigLoaderTest](../../src/test/kotlin/de/hoennig/werkator/config/ConfigLoaderTest.kt)
|
|
- [FollowUpTriggerTest](../../src/test/kotlin/de/hoennig/werkator/watcher/FollowUpTriggerTest.kt)
|
|
|
|
#### Scenario#74.02: Keep deployments under host control
|
|
|
|
- **Given** an explicit host trigger or a follow-up with host execution, Docker socket access or instance restart
|
|
- **When** a branch tries to add or override its dependency
|
|
- **Then** the host policy remains in effect
|
|
- **And** sandboxed deployment triggers explicitly configured on the host stay pinned too
|
|
|
|
##### Verified by
|
|
|
|
- [ConfigLoaderTest](../../src/test/kotlin/de/hoennig/werkator/config/ConfigLoaderTest.kt)
|
|
|
|
#### Scenario#74.03: Reject cyclic dependencies
|
|
|
|
- **Given** a branch defining sandboxed follow-ups
|
|
- **When** their dependencies form a cycle
|
|
- **Then** configuration validation refuses that branch configuration
|
|
|
|
##### Verified by
|
|
|
|
- [ConfigLoaderTest](../../src/test/kotlin/de/hoennig/werkator/config/ConfigLoaderTest.kt)
|
|
|
|
## The Solution
|
|
|
|
Keep track of trigger blocks explicitly authored in instance defaults, the applied fragment and the repository's machine configuration.
|
|
Pin these blocks regardless of the sandbox.
|
|
Allow branch-owned follow-up dependencies only under the primary configuration's inherited sandbox policy, without Docker socket access or instance restart.
|
|
Preserve default sandbox flags even when a named build overrides only an environment variable and the branch removes its default definition.
|
|
Existing cycle validation and follow-up execution at the predecessor's commit remain in place.
|
|
|
|
## Additional Changes
|
|
|
|
Version 1.19.0 documents the new behavior in the release notes, configuration reference and init template.
|