Skip to content

ci: automated release workflow (install + update packages)#13

Merged
sanmaxdev merged 1 commit into
mainfrom
ci/release-workflow
Jun 27, 2026
Merged

ci: automated release workflow (install + update packages)#13
sanmaxdev merged 1 commit into
mainfrom
ci/release-workflow

Conversation

@sanmaxdev

Copy link
Copy Markdown
Owner

What

Adds a Release GitHub Actions workflow that triggers when a v* tag is pushed, builds the distributable packages, and publishes a GitHub Release with auto-generated notes. This replaces the old local PowerShell packaging scripts with a reproducible, CI-built release.

Artifacts produced per tag

Artifact Purpose
linkforge-v<version>.zip Full, self-hostable install package — bundles production vendor/ and compiled public/build, with dev-only files (tests, CI, JS build configs) stripped. Files sit at the archive root for extract-into-webroot installs.
linkforge-update-v<version>.zip Incremental package for the in-app updater (Admin → Updates). Contains only files changed since the previous tag, laid out as update.json + files/… exactly as App\Services\Update\Updater expects.

How it works

  • .github/workflows/release.yml — sets up PHP 8.2 + Node 20, runs composer install --no-dev + npm ci && npm run build, then calls the two build scripts and publishes via softprops/action-gh-release.
  • .github/scripts/build-install-zip.shgit archive of tracked files + production vendor/ + built assets, minus dev tooling.
  • .github/scripts/build-update-zip.sh — diffs the previous tag to collect only changed runtime files, generates the update.json manifest, bundles rebuilt assets when front-end sources changed.

Release process (also documented in CONTRIBUTING.md)

  1. Bump config/linkforge.php version via a PR.
  2. git tag v1.1.0 && git push origin v1.1.0.
  3. The workflow builds both zips and publishes the release.

Notes

  • update.json layout verified against Updater::inspect() / apply() (version-must-exceed-current is enforced there).
  • No application code changed; CI (tests / lint / assets) should pass unaffected.

Tagging vX.Y.Z now builds two artifacts and publishes a GitHub Release:
- linkforge-vX.Y.Z.zip: full self-hostable install package
- linkforge-update-vX.Y.Z.zip: incremental package for the in-app updater

Build logic lives in .github/scripts/ and replaces the old local
PowerShell packaging scripts. Documented the release steps in CONTRIBUTING.
@sanmaxdev sanmaxdev merged commit bceceee into main Jun 27, 2026
4 checks passed
@sanmaxdev sanmaxdev deleted the ci/release-workflow branch June 27, 2026 06:03
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