releaser-pleaser¶
Opens / updates the Release MR on the default branch, then — when the
Release MR merges — cuts the vX.Y.Z tag + GitLab release. A thin wrapper
over apricote/releaser-pleaser
with the phpboyscout conventions baked in.
Sibling of release-plz (Rust). Where
release-plz drives Cargo crates, releaser-pleaser drives any project
whose changelog + versioning follow Conventional Commits — the Go track
uses it. This very repo's own releases are driven by releaser-pleaser,
pinned to a released tag (not @$CI_COMMIT_SHA) so a WIP change to the
component can't break its own release machinery.
Why our wrapper instead of apricote's component directly
apricote's run component gates on $CI_COMMIT_BRANCH ==
"<branch>", which also matches a Renovate schedule running on the
default branch — so it fires on every scheduled pipeline. This wrapper
leads its rules: with the schedule-never guard, so a scheduled
pipeline runs renovate-self only. It also wires
the token via the standard $RELEASER_PLEASER_TOKEN input and echoes
spec.component for traceable CI logs.
Token requirement
token (default $RELEASER_PLEASER_TOKEN) must not be
$CI_JOB_TOKEN — a tag pushed with CI_JOB_TOKEN does not fire
downstream tag pipelines (GitLab loop-prevention), so the
goreleaser/release-asset job would never run.
Jobs¶
| Job | What it runs |
|---|---|
releaser-pleaser |
rp run --forge=gitlab --branch=$[[ inputs.branch ]] --extra-files="$[[ inputs.extra_files ]]" --updaters="$[[ inputs.updaters ]]". interruptible: true + resource_group: releaser-pleaser (idempotent, acts on shared global state — only one run at a time). |
Inputs¶
| Input | Type | Default | Description |
|---|---|---|---|
image_version |
string | "v0.8.0" |
ghcr.io/apricote/releaser-pleaser image tag. |
stage |
string | release |
GitLab CI stage. Consumers must declare it in stages:. |
branch |
string | "main" |
Release target branch — rp run --branch. |
token |
string | "$RELEASER_PLEASER_TOKEN" |
Token for the GitLab API + push + tag. Needs api + write_repository. |
if |
string | '$CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH' |
Gating rules:if:. The schedule-never guard is always applied ahead of this. |
extra_files |
string | "" |
rp run --extra-files — additional files scanned for version references. Comma-separated. |
updaters |
string | "" |
rp run --updaters — which updaters run. Default updaters: changelog,generic. |
needs |
array | [] |
Job dependencies for the releaser-pleaser job. |
Usage¶
include:
- component: gitlab.com/phpboyscout/cicd/[email protected]
inputs:
token: $RELEASER_PLEASER_TOKEN
branch: main
stage: release
See also¶
goreleaser— consumes the tag this job cuts.renovate-self— the component this one's schedule guard protects against.- Explanation: release automation
- Spec:
2026-06-21-releaser-pleaser-component-v0.11