From 59a383e0d89e61da3770ee2f73989fcd29da483c Mon Sep 17 00:00:00 2001 From: Philipp Stadler <hello@phstadler.com> Date: Mon, 15 Jul 2024 17:13:45 +0200 Subject: [PATCH] chore: add automatic releases --- .gitlab-ci.yml | 53 ++++++++++++++++++++++++++++++++++++++++++++++++++ package.json | 3 +++ 2 files changed, 56 insertions(+) create mode 100644 package.json diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 86114bb..d9dc50b 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -2,6 +2,7 @@ image: durcheinander/export-apkgs:1.0.0 stages: - build +- release build: stage: build @@ -13,6 +14,58 @@ build: script: - curl https://gitlab.phaidra.org/kartenaale/card-templates/-/jobs/104428/artifacts/raw/card-templates-1.0.2.tar.gz | tar -xz - export_apkgs -c content -t templates -o . + - echo "ARTIFACTS_URL=https://gitlab.phaidra.org/$CI_PROJECT_PATH/-/jobs/$CI_JOB_ID/artifacts/browse" > build.env artifacts: paths: - '*.apkg' + reports: + dotenv: build.env + +release-package-json-version-as-git-tag: + stage: release + rules: + - if: $CI_PIPELINE_SOURCE == "schedule" + when: never + # tagging should only happen after the thing was merged, so do it on the main branch build + - if: $CI_COMMIT_BRANCH == "main" + # we don't need anything in node_modules or python, so don't fetch the cache + cache: [] + script: + - NPM_VERSION=$(grep '"version":' package.json -m 1 | cut -d '"' -f 4) + # || exit_code=$? is the recommended way to ignore a non-zero exit code + - NPM_VERSION_GIT_TAG=$(git tag | grep ^${NPM_VERSION}$ || exit_code=$?) + - if [ -z "$NPM_VERSION_GIT_TAG" ]; then + - echo adding git tag for first commit on main with NPM version ${NPM_VERSION} + - git remote remove origin + - git remote add origin https://oauth:${REPOSITORY_ACCESS_TOKEN}@gitlab.phaidra.org/$CI_PROJECT_PATH.git + - git config user.email Cao Cao + - git config user.name cao.cao@ci.kartenaale + - git tag -a $NPM_VERSION -m "Release $NPM_VERSION" + - git push origin $NPM_VERSION + - else + - ' echo package-json-tag: keeping older tag for $NPM_VERSION' + - fi + +create-gitlab-release: + image: registry.gitlab.com/gitlab-org/release-cli:latest + stage: release + rules: + - if: $CI_COMMIT_TAG + needs: + - job: build + artifacts: true + variables: + # we just need the artifacts and don't need up-to-date source, so don't even fetch + GIT_STRATEGY: none + # we don't need anything in node_modules or python, so don't fetch the cache + cache: [] + script: + - echo Creating GitLab release… + release: + tag_name: '$CI_COMMIT_TAG' + name: '$CI_COMMIT_TAG' + description: 'Neue APKGS stehen zum Download bereit.' + assets: + links: + - name: 'Browse all APKGS…' + url: '$ARTIFACTS_URL' diff --git a/package.json b/package.json new file mode 100644 index 0000000..1587a66 --- /dev/null +++ b/package.json @@ -0,0 +1,3 @@ +{ + "version": "1.0.0" +} -- GitLab