Once normal CI exists (see the GitHub Actions test/lint workflow issue), the next step is automating the release-tarball build + GitHub release creation on tag push.
Today the release flow is:
- Bump
appinfo/info.xml version, update CHANGELOG.md, commit, merge, tag.
- Run
scripts/build-release-tarball.sh locally.
gh release create v<version> dist/etherpad_nextcloud-<version>.tar.gz ... manually.
Steps 2-3 should fire automatically on push of a v* tag.
Proposed workflow
.github/workflows/release.yml triggered on push: tags: [v*]:
- Check out the tagged ref.
composer install --no-dev to fetch any runtime deps (currently empty, but defensive).
npm ci && npm run build to make sure js/ is up to date with the source.
- Run
scripts/build-release-tarball.sh dist.
- Extract the matching CHANGELOG section as release notes.
gh release create $TAG dist/*.tar.gz --notes-file ... --prerelease (prerelease flag based on whether the tag has -alpha/-beta/-rc).
Out of scope
- Code-signing for App Store submission — that step still requires the private key, which lives outside CI. Tracked separately.
Acceptance
Once normal CI exists (see the GitHub Actions test/lint workflow issue), the next step is automating the release-tarball build + GitHub release creation on tag push.
Today the release flow is:
appinfo/info.xmlversion, updateCHANGELOG.md, commit, merge, tag.scripts/build-release-tarball.shlocally.gh release create v<version> dist/etherpad_nextcloud-<version>.tar.gz ...manually.Steps 2-3 should fire automatically on push of a
v*tag.Proposed workflow
.github/workflows/release.ymltriggered onpush: tags: [v*]:composer install --no-devto fetch any runtime deps (currently empty, but defensive).npm ci && npm run buildto make surejs/is up to date with the source.scripts/build-release-tarball.sh dist.gh release create $TAG dist/*.tar.gz --notes-file ... --prerelease(prerelease flag based on whether the tag has-alpha/-beta/-rc).Out of scope
Acceptance
v1.x.ytag produces a GitHub release with the tarball attached, no manual steps required.*-alpha.*,*-beta.*,*-rc.*) auto-mark the release as pre-release.