Releasing OpenBuild
Version + changelog
- Bump
<version>inappinfo/info.xml(immutable-cache-bust: any bundle-affecting change must bump the version, else clients keep the old bytes). - Add a dated section to
CHANGELOG.mdfollowing Keep a Changelog + SemVer. - Tag and let the standard release workflow build the appstore artifact.
Refreshing the embedded template snapshot
The exporter ships a checked-in copy of nextcloud-app-template/ under
lib/Resources/template/, snapshotted at OpenBuild's build time (Decision 1). The
exporter never clones or fetches the template at export time — this guarantees
reproducibility and removes any network dependency from the ZIP path.
When nextcloud-app-template ships a meaningful update (new CI workflow, toolchain
bump, Tier-4 consumer-pattern change), refresh the snapshot:
-
Copy the upstream tree into the snapshot, excluding vendored / generated dirs:
rsync -a --delete \
--exclude node_modules --exclude vendor --exclude .git \
../nextcloud-app-template/ lib/Resources/template/Do not scripted-edit individual files inside the snapshot — copy the whole tree.
-
Confirm every placeholder token is still present in the files the exporter populates:
{{appId}},{{appNamespace}},{{appName}},{{appDescription}},{{appVersion}},{{authorName}},{{authorEmail}},{{license}}. -
Regenerate the path manifest and snapshot metadata:
( cd lib/Resources/template && \
find . -type f ! -name .path-manifest.txt ! -name .snapshot-meta.json \
| sed 's|^\./||' | LC_ALL=C sort > .path-manifest.txt )Update
lib/Resources/template/.snapshot-meta.jsonwith the upstream source commit SHA and an ISO timestamp. -
Bump the OpenBuild minor version and add a
CHANGELOG.mdentry noting the template refresh. -
Run the exporter unit + integration tests and confirm a freshly exported
hello-worldapp still passescomposer check:strict.
CI drift check
A CI job diffs lib/Resources/template/ against apps-extra/nextcloud-app-template/
and warns (does not fail) when the snapshot is more than 90 days behind upstream.