Skip to content

Pin the build's inputs and tag by Flarum version (closes #2) - #6

Merged
karl-bullock merged 2 commits into
mainfrom
complete-issue-2
Jul 29, 2026
Merged

Pin the build's inputs and tag by Flarum version (closes #2)#6
karl-bullock merged 2 commits into
mainfrom
complete-issue-2

Conversation

@karl-bullock

Copy link
Copy Markdown
Member

The last three items on #2.

Extension Manager is now tested

This is the one behaviour baking Flarum in could plausibly disturb. The volume is still meant to be a writable Composer project — merely seeded from the image rather than resolved from the network — and a wrong owner or mode on the copied tree would leave the forum serving perfectly while silently refusing every extension install. That is not a failure anyone would attribute to this change months later.

roundtrip now installs fof/doorman the same way the Extension Manager does (composer, as www-data, against the volume), enables it, and confirms the forum still serves.

Build inputs pinned

before after
redis (PECL) unpinned 6.3.0
Composer whatever getcomposer.org served, unverified 2.10.2 + signature check
install-php-extensions already pinned unchanged

redis is the one that bit: v1.0.0 needed three attempts while pecl.php.net returned 504s. Pinning doesn't make PECL reliable, but it means a retry produces the same extension rather than whatever is newest by then.

Composer was worse — the installer was piped straight into php, unverified and unversioned, so two builds of the same commit could ship different Composer versions. Now pinned, with the signature check the Composer project publishes for exactly this.

Tags name the forum

flarum-<version>, read from the committed lock, plus image labels. An image tag that only versions the wrapper can't answer the question users actually have — which Flarum is this? — and nothing else in the tag list ever would.

Three things, all closing #2.

Extension Manager is now tested. It is the one behaviour baking Flarum
into the image could plausibly disturb: the volume is still meant to be a
writable Composer project, merely SEEDED from the image instead of
resolved from the network, and a wrong owner or mode on the copied tree
would leave the forum serving perfectly while silently refusing every
extension install. roundtrip now installs fof/doorman the same way the
Extension Manager does — composer, as www-data, against the volume —
enables it, and checks the forum still serves.

Build inputs pinned. redis came from pecl.php.net unpinned, which is why
v1.0.0 needed three attempts while PECL returned 504s; a pin does not
make PECL reliable but it does mean a retry produces the same extension
rather than whatever is newest by then. Composer was worse: the installer
was piped into php unverified and unversioned, so two builds of one
commit could ship different Composers. It is now pinned to 2.10.2 with
the signature check the Composer project publishes for this.

Tags now name the forum. flarum-<version> is read from the committed
lock, so the tag answers the question users actually have — which Flarum
is this — which a wrapper version number never could. Also emitted as
image labels.
The first version of this step used fof/doorman and failed — but not
because the seeded volume was wrong. composer require, extension:enable
and cache:clear all succeeded; the forum then 500'd because doorman's
Flarum 2 release is a beta against an RC core. Note the stable 2.0.0 is
the Flarum 1.3 build, so composer had picked correctly.

That conflated two things: whether the Extension Manager can write into a
volume seeded from the image, and whether some third-party extension
works on 2.0.0-rc.5. Only the first has anything to do with baking Flarum
in, and only the first should be able to fail here.

linkrobins/clipboard declares flarum/core ^2.0, has no dependencies of
its own, and runs on a live 2.0 forum. It is installed, enabled, checked,
then disabled and removed — the restore steps rebuild the volume from the
image, which would not carry a third-party extension the backup's
database still had enabled.
@karl-bullock
karl-bullock merged commit 1d8709f into main Jul 29, 2026
6 checks passed
@karl-bullock
karl-bullock deleted the complete-issue-2 branch July 29, 2026 03:13
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