Skip to content

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