Skip to content

feat(appjail): roll back, pin and change one service's version - #139

Merged
ahze merged 1 commit into
mainfrom
appjail-pins
Oct 18, 2026
Merged

ahze merged 1 commit into
mainfrom
appjail-pins

Conversation

@ahze

@ahze ahze commented Oct 18, 2026

Copy link
Copy Markdown
Member

AppJail stacks could update one service but not undo it: rollback, a service's own Version... and pins all sat behind PinServices, false for AppJail because director never reads the compose. Now the director follows the compose for the services a pin or a version touches: a service naming its own from: gets the image there, one built from the Makejail gets the tag argument its OPTION from=:${tag} reads, digest included ('2.0@sha256:...' builds that digest). A director project with no compose is written directly, and so is Version... on a service the compose names differently (bundles call a sidecar authelia-redis where the compose says redis). The update check reads a director-only service's image from the director, so a pinned one says pinned.

Addresses need nothing: a rebuilt jail keeps its address on its own (DHCP: its epair keeps its name, so its generated MAC and lease; virtualnet: its reservation). KeepsAddresses says so, and fjord's pinning skips it.

Saving a stack no longer rewrites an unchanged Makejail: director rebuilds every service built from it when the file is newer than its last run, so rolling back one sidecar restarted the app.

test/ui/appjail-update now rolls sync back from its row and checks the jail runs the image it had, pinned, while web keeps its jid throughout.

AppJail stacks could update one service but not undo it: rollback, a
service's own Version... and pins all sat behind PinServices, false for
AppJail because director never reads the compose. Now the director follows
the compose for the services a pin or a version touches: a service naming
its own from: gets the image there, one built from the Makejail gets the
tag argument its OPTION from=<repo>:${tag} reads, digest included
('2.0@sha256:...' builds that digest). A director project with no compose
is written directly, and so is Version... on a service the compose names
differently (bundles call a sidecar authelia-redis where the compose says
redis). The update check reads a director-only service's image
from the director, so a pinned one says pinned.

Addresses need nothing: a rebuilt jail keeps its address on its own (DHCP:
its epair keeps its name, so its generated MAC and lease; virtualnet: its
reservation). KeepsAddresses says so, and fjord's pinning skips it.

Saving a stack no longer rewrites an unchanged Makejail: director rebuilds
every service built from it when the file is newer than its last run, so
rolling back one sidecar restarted the app.

test/ui/appjail-update now rolls sync back from its row and checks the jail
runs the image it had, pinned, while web keeps its jid throughout.
@ahze
ahze merged commit b1d8c52 into main Oct 18, 2026
4 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant