Skip to content

ci: automate Packagist releases with release-please#56

Merged
zinigor merged 3 commits into
mainfrom
setup-packagist-releases
Jul 16, 2026
Merged

ci: automate Packagist releases with release-please#56
zinigor merged 3 commits into
mainfrom
setup-packagist-releases

Conversation

@zinigor

@zinigor zinigor commented Jul 16, 2026

Copy link
Copy Markdown
Contributor

What

Sets up tag-driven release management so tagged versions of tangible/object publish to Packagist automatically (the GitHub→Packagist webhook already exists from the current dev-main sync).

Changes

  • .github/workflows/release-please.yml + release-please-config.json + .release-please-manifest.jsonrelease-please maintains a rolling release PR. It parses Conventional Commit messages from our squash-merged PRs, updates CHANGELOG.md, and on merge cuts the git tag + GitHub Release. No per-release branch, no manual changelog.
  • plugin.php — wrapped the WP Version: header in a release-please marker block so the plugin header stays in sync with the tag. The marker lines are plain docblock text that WordPress ignores.
  • .gitattributesexport-ignore for tests/, docs/, website/, .github/, phpunit.xml, Makefile, renovate.json so the Composer dist tarball stays lean. This replaces the idea of branching/cleaning per release — the dev-only composer.json sections (require-dev, scripts, etc.) are ignored by consumers anyway.
  • composer.json — declared the php >=8.1 floor in require; added a suggest entry documenting tangible/framework as an optional peer (already provided by other Tangible plugins at runtime).
  • composer.lock — refreshed content-hash only; no dependency version changes.

Notes / follow-ups

  • First release PR will include the full commit history in its changelog (no prior tag to diff against). If you'd prefer a clean starting point, we can set bootstrap-sha in the config to the current main HEAD.
  • Pre-1.0 versioning decision: we're at 0.0.2. Decide whether to commit to 1.0.0 or stay on 0.x deliberately — it changes how consumers' ^ constraints behave.
  • Release PRs are opened by GITHUB_TOKEN, which by default does not trigger other workflows (e.g. the PHPUnit CI won't run on the release PR itself). Since the release PR only bumps the changelog + version header, that's usually fine; if you want CI on it, we'd switch to a PAT.

🤖 Generated with Claude Code

zinigor and others added 3 commits July 16, 2026 12:23
Set up tag-driven release management on main so tagged versions publish
to Packagist automatically (via the existing GitHub webhook):

- release-please workflow + manifest config; parses Conventional Commits
  from squash-merged PRs, maintains CHANGELOG.md, and cuts the tag +
  GitHub Release on merge of its rolling release PR
- bump the plugin.php WP version header via a release-please marker block
- .gitattributes export-ignore to keep tests/docs/website/CI out of the
  dist tarball (no per-release branch needed)
- declare the php >=8.1 floor in require and refresh composer.lock
- document the optional tangible/framework peer via a suggest entry

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
- lint-pr-title workflow enforces Conventional Commits on PR titles so
  squash-merged subjects stay parseable by release-please
- add a Development > Releasing docs page covering the release-please flow,
  the PR-title requirement, breaking-change signalling, and consumer
  version constraints; wire it into the Docusaurus sidebar

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Covers forcing a version (e.g. the first 1.0.0) via a Release-As footer,
including the PR-title-only squash caveat: the footer must be added to the
commit body in the merge dialog, not the PR title or description.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@zinigor
zinigor merged commit ea1703c into main Jul 16, 2026
4 checks passed
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