diff --git a/.github/workflows/mirror.yaml b/.github/workflows/mirror.yaml new file mode 100644 index 0000000..abdde9d --- /dev/null +++ b/.github/workflows/mirror.yaml @@ -0,0 +1,28 @@ +name: mirror +on: + push: + branches: [main, gitlab] # TODO + tags: ["*"] + +jobs: + gitlab: + runs-on: ubuntu-latest + env: + REMOTE: mirror + steps: + - name: Checkout + uses: actions/checkout@v4 + with: + # Need all to fetch all tags so we can push them + fetch-depth: 0 + + - name: Add Remote + env: + CLONE_URL: "https://releaser-pleaser:${{ secrets.GITLAB_COM_PUSH_TOKEN }}@gitlab.com/apricote/releaser-pleaser.git" + run: git remote add $REMOTE $CLONE_URL + + - name: Push Branches + run: git push --force --all --verbose $REMOTE + + - name: Push Tags + run: git push --force --tags --verbose $REMOTE diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml new file mode 100644 index 0000000..742be9d --- /dev/null +++ b/.gitlab-ci.yml @@ -0,0 +1,15 @@ +stages: [release] + +# For the GitLab CI/CD component to be usable, it needs to be published in +# the CI/CD catalog. This happens on new releases. +# As the primary tagging happens on GitHub, we only react to pushed tags +# and create a corresponding GitLab Release. +create-release: + stage: release + image: registry.gitlab.com/gitlab-org/release-cli:latest + script: echo "Creating release $CI_COMMIT_TAG" + rules: + - if: $CI_COMMIT_TAG + release: + tag_name: "$CI_COMMIT_TAG" + description: "$CI_COMMIT_TAG_MESSAGE" diff --git a/.ko.yaml b/.ko.yaml index c7c0e49..49805d6 100644 --- a/.ko.yaml +++ b/.ko.yaml @@ -1,3 +1,6 @@ defaultPlatforms: - linux/arm64 - - linux/amd64 \ No newline at end of file + - linux/amd64 + +# Need a shell for gitlab-ci +defaultBaseImage: cgr.dev/chainguard/busybox diff --git a/docs/SUMMARY.md b/docs/SUMMARY.md index 1125209..90d3f7d 100644 --- a/docs/SUMMARY.md +++ b/docs/SUMMARY.md @@ -5,7 +5,7 @@ # Tutorials - [Getting started on GitHub](tutorials/github.md) -- [Getting started on GitLab]() +- [Getting started on GitLab](tutorials/gitlab.md) # Explanation @@ -22,7 +22,7 @@ - [Glossary](reference/glossary.md) - [Pull Request Options](reference/pr-options.md) - [GitHub Action](reference/github-action.md) -- [GitLab CI]() +- [GitLab CI/CD Component](reference/gitlab-cicd-component.md) --- diff --git a/docs/reference/gitlab-cicd-component.md b/docs/reference/gitlab-cicd-component.md new file mode 100644 index 0000000..7d8bf16 --- /dev/null +++ b/docs/reference/gitlab-cicd-component.md @@ -0,0 +1 @@ +# GitLab CI/CD Component diff --git a/docs/tutorials/gitlab.md b/docs/tutorials/gitlab.md new file mode 100644 index 0000000..e69de29 diff --git a/templates/run.yml b/templates/run.yml new file mode 100644 index 0000000..e1d16a5 --- /dev/null +++ b/templates/run.yml @@ -0,0 +1,36 @@ +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' + # Remember to update docs/reference/gitlab-ci-component.md +--- + +releaser-pleaser: + stage: $[[ inputs.stage ]] + rules: + # There is no way to run a pipeline when the MR description is updated :( + - if: $CI_COMMIT_BRANCH == "$[[ inputs.branch ]]" + image: + name: ghcr.io/apricote/releaser-pleaser:v0.4.0-beta.0 # x-releaser-pleaser-version + entrypoint: [""] + variables: + GITLAB_TOKEN: $[[ inputs.token ]] + script: + - | + rp run \ + --forge=gitlab \ + --branch=$[[ inputs.branch ]] \ + --extra-files=$[[ inputs.extra-files ]]