Skip to content

feat: add release build workflow with comparison against release script#75

Closed
skjnldsv wants to merge 1 commit into
mainfrom
feature/release-build-workflow
Closed

feat: add release build workflow with comparison against release script#75
skjnldsv wants to merge 1 commit into
mainfrom
feature/release-build-workflow

Conversation

@skjnldsv
Copy link
Copy Markdown
Contributor

Summary

Adds a GitHub Actions workflow that builds Nextcloud release archives independently and compares the output against the release script's assets, on the same release.

This runs in parallel with the existing changelog workflow. Once the output matches the release script consistently, the release script can be retired and this workflow takes over publishing.

How it works

  1. Trigger: release: published (same event as changelog) or workflow_dispatch
  2. Build: 29 parallel jobs fetch all components, run composer, clean dev files
  3. Assemble: merge into nextcloud/ structure, update version.php, sign, create archives
  4. Compare: download the release script's tar.bz2 from the same GitHub release, diff file lists

The compare step downloads the assets that the release script attached to the same release. Since both build from the same branch HEAD at the same time, the diff should be near-zero. Any differences indicate bugs in either the workflow or the release script.

Build configs

Per-version configs in build/ directory:

  • build/stable32.json / build/stable33.json: 27 components
  • build/stable34.json / build/master.json: 29 components (+files_lock, +office)

Secrets needed

Secret Purpose
SIGN_PRIVATE_KEY Code signing (optional, skips if not set)
SIGN_CERTIFICATE Test signing cert (optional, falls back to repo cert)
RELEASE_TOKEN PAT for private repos like support (optional)

Test plan

  • Run via workflow_dispatch with tag v33.0.4 to test against existing release
  • Verify compare step downloads and diffs correctly
  • Check step summary for comparison table
  • Wait for next real release to test release: published trigger

Builds Nextcloud release archives independently and compares them
against the release script's assets on the same GitHub release.

Triggers on release:published (parallel with changelog workflow)
and workflow_dispatch for testing against existing releases.

Build pipeline:
- 29 parallel fetch+build jobs (composer, .nextcloudignore, dev cleanup)
- Docs from documentation gh-pages
- Assemble: merge, version.php, sign, metadata, tar.bz2+zip+checksums
- Compare: downloads release script assets from the same release,
  diffs file lists, reports in step summary

Build configs in build/ directory (stable32-34 + master).

Signed-off-by: John Molakvoæ (skjnldsv) <skjnldsv@protonmail.com>
@skjnldsv
Copy link
Copy Markdown
Contributor Author

Merging into #74 as part of the orchestrator refactor.

@skjnldsv skjnldsv closed this May 31, 2026
@skjnldsv skjnldsv deleted the feature/release-build-workflow branch May 31, 2026 14:56
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Development

Successfully merging this pull request may close these issues.

1 participant