mirror of
https://github.com/apricote/releaser-pleaser.git
synced 2026-01-13 13:21:00 +00:00
Each run of releaser-pleaser acts on the same global state in the forge. Therefore, parallel runs are unnecessary. This commit also communicates to the GitHub and GitLab CI pipelines that the releaser-pleaser jobs can be cancelled as early as possible. - On GitHub Actions this can be guaranteed through the workflow settings. These settings are copied into each repository that uses releaser-pleaser, so users need to update this manually. I will add a note to the release notes for this. - On GitLab CI/CD this requires the user to configure a project level setting to "auto-cancel redundant pipelines". We will not recommend user to set this, as it is quite invasive and can break their regular CI pipelines.
52 lines
1.6 KiB
YAML
52 lines
1.6 KiB
YAML
spec:
|
|
inputs:
|
|
# Remember to update docs/reference/gitlab-ci-component.md
|
|
branch:
|
|
default: main
|
|
description: "This branch is used as the target for releases."
|
|
|
|
token:
|
|
description: "GitLab token for creating and updating release MRs."
|
|
|
|
extra-files:
|
|
description: 'List of files that are scanned for version references.'
|
|
default: ""
|
|
|
|
stage:
|
|
default: build
|
|
description: 'Defines the build stage'
|
|
|
|
needs:
|
|
default: [ ]
|
|
type: array
|
|
description: 'Dependencies of the created Job'
|
|
# Remember to update docs/reference/gitlab-ci-component.md
|
|
---
|
|
|
|
releaser-pleaser:
|
|
stage: $[[ inputs.stage ]]
|
|
needs: $[[ inputs.needs ]]
|
|
|
|
rules:
|
|
# There is no way to run a pipeline when the MR description is updated :(
|
|
- if: $CI_COMMIT_BRANCH == "$[[ inputs.branch ]]"
|
|
|
|
# If a newer releaser-pleaser job runs, this one may be cancelled without problem, releaser-pleaser is idempotent.
|
|
# This only works if the user enables "auto-cancel redundant pipelines", which we do tell them to, because this is
|
|
# intrusive and up to the user.
|
|
interruptible: true
|
|
|
|
# No need to have multiple releaser-pleaser jobs running at the same time. They all act on the same global state.
|
|
resource_group: releaser-pleaser
|
|
|
|
image:
|
|
name: ghcr.io/apricote/releaser-pleaser:v0.5.1 # x-releaser-pleaser-version
|
|
entrypoint: [ "" ]
|
|
variables:
|
|
GITLAB_TOKEN: $[[ inputs.token ]]
|
|
script:
|
|
- |
|
|
rp run \
|
|
--forge=gitlab \
|
|
--branch=$[[ inputs.branch ]] \
|
|
--extra-files="$[[ inputs.extra-files ]]"
|