-
Notifications
You must be signed in to change notification settings - Fork 0
feat: add deployer host installer (#22) #69
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Open
Nickfost
wants to merge
101
commits into
main
Choose a base branch
from
feat/issue-22-deployer-host-installer
base: main
Could not load branches
Branch not found: {{ refName }}
Loading
Could not load tags
Nothing to show
Loading
Are you sure you want to change the base?
Some commits from the old base branch may be removed from the timeline,
and old review comments may become outdated.
Open
Changes from all commits
Commits
Show all changes
101 commits
Select commit
Hold shift + click to select a range
3b1a2fa
feat: add deployer host installer
66ae3b6
fix: address deployer safety review findings
dc0fb58
fix: harden deployer retained-state validation
6ff8022
fix: retain deployed safety evidence
d9493a8
fix: close deployer runtime recovery gaps
dd72947
test: normalize deployer drain marker mode
295ffa8
fix: serialize runtime policy and recovery state
342c8dc
fix: fail closed across deployer recovery paths
665a18d
fix: preserve validated deployer boundaries
2fb0823
fix: pin deployer transaction inputs atomically
ba12459
fix: close deployer recovery and audit review gaps
0271082
fix: harden deployer runtime and rollback recovery review gaps
a93dfc8
fix: close deployer isolation and rollback recovery review gaps
5ad3be8
fix: harden deployer transactions, credentials, and audit identity
fc3f4aa
fix: track deployed pointer and validate state across recovery paths
e6cb243
fix: validate deployer identity, isolation, and boundaries end to end
0040d3e
fix: preserve deployer recovery invariants across lifecycle paths
a616cc2
fix: close deployer publication, rollback, and uninstall safety gaps
f78b40b
test: make drifted-unit uninstall check shellcheck-clean
ce502c0
fix: revalidate trust boundaries before every deployer adapter call
10da688
fix: fail closed across deployer recovery, signals, and read-only checks
46ace94
fix: harden deployer publication, recovery manifests, and convergence
295352b
fix: close deployer recovery, snapshot, inhibition, and checkout race…
7cda395
fix: drop redundant checkout ownership probe rejected on CI checkouts
d4ee34b
fix: harden checkout pinning, promotion, and convergence validation
d301861
test: expect credential-reference failure before cross-validation ord…
5a2dc30
test: rotate credential fixture identity in deployed-pair drift regre…
f0767f6
test: match candidate-first credential failure on upgrade path
6b3a573
test: exercise deployed-pair credential drift through the policy refe…
c5221a8
test: clear recovered rollback state after credential drift regression
de41be5
test: substituted live checkout now fails closed at the hash pin
af9ae9d
test: clear drain fixture before final convergence check
6ec12f5
test: drop invalid trailing convergence check after approval rotation
78057d3
fix: close checkout baseline, pointer, audit, uninstall, and recovery…
ae8ed96
fix: stop timers before removing the activation pointer on uninstall
9d0a1b0
fix: validate systemd boundary and finalize dependencies before recov…
04f0f24
test: drifted adapter is caught at candidate validation before recovery
203fd0b
test: tolerate absent retained pair in drifted-finalize regression
e93c3cf
test: tolerate absent retained pair in deployed-pair drift regressions
f8ac2cd
test: order deployed-pair drift regressions before finalize recovery
2c670d6
test: rebuild retained rollback pair after finalize recovery fixture
8e62d88
fix: replace-immune checkout pins, marker type checks, idempotent uni…
61de653
fix: propagate tree-read failures, tolerate absent timers, fsync cons…
ed6008b
fix: writability guard before backups, durable commit marker, stale-m…
3f7dbf9
fix: recovery boundary guards, durable journals, honest availability
7240c04
test: install-root symlink is caught by the existing symlink guard
be89b1e
test: availability regression uses a drifted retained policy digest
2bbe10d
fix: hook-free checkout validation, backup guards, durable state tran…
254b1a1
test: rebuild retained rollback pair before digest/credential drift f…
e75bd12
test: align rollback fixtures with publish-over-unusable-incumbent se…
1fa1efe
fix: durable rollback publication, boundary-ordered recovery, exact c…
be14f40
test: round-ten regressions for durability, boundaries, and checkout …
d71aa7b
fix: durable journal retirement, boundary sync before finalize, hones…
dd97590
test: marker-committed rollback reports change; regression coverage
8e19efe
fix: durable restore retirement, failed-deploy audit, capability bind…
8b195ac
test: capability cross-installation rejection, reload-failure uninsta…
53ed42f
fix: recovery without deployed dependencies, durable uninstall, key p…
81f557d
test: uninstall without configuration directory removes the deploymen…
d60747d
fix: fail-closed durability for journals, drain markers, consumption,…
64accb0
fix: rollback core durable before commit marker, audit inode restore,…
cefee9a
test: audit-inode restore, drifted-timer uninstall stop, deployed-bou…
6effd4c
fix: production gate, drift-unit role rejection, snapshot and availab…
60409d9
test: round-fifteen regressions; state-snapshot helper for recovery f…
a29f746
fix: reject ordinary-CI timers, timer-aware uninstall no-op, document…
53b9a97
test: ordinary-CI drift timer rejection fixture
268f1e6
fix: fail-closed mixed-role helper in runtime, policy snapshot remove…
5da0d9c
fix: timer enablement scope, Docker pull-in for scheduled services, r…
dfc46a0
test: repair replaces a damaged active release from the validated che…
e86b746
fix: marker after boundary durability, active-marker sync, timer prob…
80a6040
fix: inhibited adapter call, durable marker clearing, honest uninstal…
a809bef
fix: last-known-good validation before deploy, production rollback ga…
a0f9bd3
test: marker-deleting adapter cannot replay; regressions pass
bbbee85
fix: full retained-pair validation before deploy, audit prefix integr…
426be7c
test: rollback baseline gate, consumption-marker replay guard, audit-…
f899dc1
fix: directory-level marker restore, full release validation, availab…
0d621c8
test: directory-level consumption restore, regressions for round twen…
1ad2dfa
fix: pointer restore ordering, full release predicate, audit prefix r…
0336c34
fix: retire incumbent snapshot only after the durable success audit
3d5012f
fix: post-publication pointer truth, success-path marker preservation…
b811d62
fix: incumbent-based retirement, controller-side deployer guard, boun…
1f18809
test: controller installer rejects a deployer host
b27134f
fix: controller rollback guard, incumbent content restore, audit orde…
2d81a2f
fix: shared role-admission lock, maintenance Docker sanitization, per…
3dad253
fix: incumbent metadata restore, audit metadata repair, retained-pair…
989a96d
fix: restore recovery metadata after adapter drift
0069b8f
test: separate recovery metadata fixture paths
b75c73a
fix: preserve deployer rollback across adapter updates
3c3cc53
fix: retain completed deployment rollback marker
927187c
fix: accept canonical Debian os-release symlink
a07990f
test: exercise os-release symlink during install
421d3d9
fix: validate completed deployment marker
Nickfost bc689be
fix: protect deployer operation lock
Nickfost 024614b
fix: pin candidate policy through validation
Nickfost 87a2d2e
fix: protect deployer recovery boundaries
Nickfost dc1dd37
fix: restore runtime state after adapter cleanup
Nickfost f363698
test: expect audit integrity failure precedence
Nickfost a4fd48c
fix: keep adapter recovery state in memory
Nickfost 08e8904
fix: make deployment exit recovery nonfatal
Nickfost c4d0bfb
fix: recover adapter-corrupted deployer state
Nickfost a4104f9
fix: harden deployer recovery boundaries
Nickfost 48ddebe
fix: harden deployer adapter failure recovery
Nickfost File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
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
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,19 @@ | ||
| [Unit] | ||
| Description=Run application-owned scoped deployer cleanup | ||
| After=docker.service | ||
| Wants=docker.service | ||
|
|
||
| [Service] | ||
| Type=oneshot | ||
| User=root | ||
| ExecStart=/opt/ci-fleet-deployer/current/scripts/deployer-runtime.sh cleanup | ||
| Environment=CI_FLEET_DEPLOYER_CONFIG=/var/lib/ci-fleet-deployer/active-policy.conf | ||
| TimeoutStartSec=15min | ||
| UMask=0077 | ||
| NoNewPrivileges=yes | ||
| PrivateTmp=yes | ||
| ProtectHome=yes | ||
| ProtectSystem=strict | ||
| ReadOnlyPaths=/etc/ci-fleet-deployer /opt/ci-fleet-deployer | ||
| ReadWritePaths=/var/lib/ci-fleet-deployer /var/log/ci-fleet-deployer /run/docker.sock | ||
| RestrictSUIDSGID=yes | ||
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
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,11 @@ | ||
| [Unit] | ||
| Description=Run scoped ci-fleet deployer cleanup daily | ||
|
|
||
| [Timer] | ||
| OnCalendar=daily | ||
| RandomizedDelaySec=15min | ||
| Persistent=true | ||
| Unit=ci-fleet-deployer-cleanup.service | ||
|
|
||
| [Install] | ||
| WantedBy=timers.target |
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
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,17 @@ | ||
| [Unit] | ||
| Description=Drain the ci-fleet deployer before maintenance | ||
|
|
||
| [Service] | ||
| Type=oneshot | ||
| User=root | ||
| ExecStart=/opt/ci-fleet-deployer/current/scripts/deployer-runtime.sh drain | ||
| Environment=CI_FLEET_DEPLOYER_CONFIG=/var/lib/ci-fleet-deployer/active-policy.conf | ||
| TimeoutStartSec=2min | ||
| UMask=0077 | ||
| NoNewPrivileges=yes | ||
| PrivateTmp=yes | ||
| ProtectHome=yes | ||
| ProtectSystem=strict | ||
| ReadOnlyPaths=/etc/ci-fleet-deployer /opt/ci-fleet-deployer | ||
| ReadWritePaths=/var/lib/ci-fleet-deployer /var/log/ci-fleet-deployer | ||
| RestrictSUIDSGID=yes |
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
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,19 @@ | ||
| [Unit] | ||
| Description=Check ci-fleet deployer health | ||
| After=docker.service | ||
| Wants=docker.service | ||
|
|
||
| [Service] | ||
| Type=oneshot | ||
| User=root | ||
| ExecStart=/opt/ci-fleet-deployer/current/scripts/deployer-runtime.sh health | ||
| Environment=CI_FLEET_DEPLOYER_CONFIG=/var/lib/ci-fleet-deployer/active-policy.conf | ||
| TimeoutStartSec=2min | ||
| UMask=0077 | ||
| NoNewPrivileges=yes | ||
| PrivateTmp=yes | ||
| ProtectHome=yes | ||
| ProtectSystem=strict | ||
| ReadOnlyPaths=/etc/ci-fleet-deployer /opt/ci-fleet-deployer | ||
| ReadWritePaths=/var/lib/ci-fleet-deployer /var/log/ci-fleet-deployer /run/docker.sock | ||
| RestrictSUIDSGID=yes |
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
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,12 @@ | ||
| [Unit] | ||
| Description=Check ci-fleet deployer health every five minutes | ||
|
|
||
| [Timer] | ||
| OnActiveSec=2min | ||
| OnUnitActiveSec=5min | ||
| RandomizedDelaySec=30s | ||
| Persistent=true | ||
| Unit=ci-fleet-deployer-health.service | ||
|
|
||
| [Install] | ||
| WantedBy=timers.target |
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
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,25 @@ | ||
| [Unit] | ||
| Description=Run one approved ci-fleet deployment | ||
| After=docker.service network-online.target | ||
| Wants=docker.service network-online.target | ||
|
|
||
|
Nickfost marked this conversation as resolved.
|
||
| [Service] | ||
| Type=oneshot | ||
| User=root | ||
| Group=root | ||
| ExecStart=/opt/ci-fleet-deployer/current/scripts/deployer-runtime.sh deploy | ||
|
Nickfost marked this conversation as resolved.
|
||
| Environment=CI_FLEET_DEPLOYER_CONFIG=/var/lib/ci-fleet-deployer/active-policy.conf | ||
| Environment=CI_FLEET_DEPLOYER_REQUEST=/var/lib/ci-fleet-deployer/request.conf | ||
| TimeoutStartSec=45min | ||
| # A hung adapter must not hold the lock or inhibitor beyond the documented | ||
| # 45-minute deployment bound; stop quickly after TERM and let KILL follow. | ||
| TimeoutStopSec=30s | ||
| UMask=0077 | ||
| NoNewPrivileges=yes | ||
| PrivateTmp=yes | ||
| ProtectHome=yes | ||
| ProtectSystem=strict | ||
| ReadOnlyPaths=/etc/ci-fleet-deployer /opt/ci-fleet-deployer | ||
| ReadWritePaths=/var/lib/ci-fleet-deployer /var/log/ci-fleet-deployer /run/docker.sock | ||
| RestrictSUIDSGID=yes | ||
| LockPersonality=yes | ||
Large diffs are not rendered by default.
Oops, something went wrong.
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
Oops, something went wrong.
Oops, something went wrong.
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.
Uh oh!
There was an error while loading. Please reload this page.