From ca8cb60baf454d5398939fc470d7c863ddfd8ef8 Mon Sep 17 00:00:00 2001 From: David Byers <david.byers@liu.se> Date: Thu, 18 Feb 2021 11:42:20 +0100 Subject: [PATCH] First try at automatic releases. --- .gitlab-ci.yml | 105 ++++++++++++++++++++++++++++++++----------------- 1 file changed, 69 insertions(+), 36 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 2b122db..540fee7 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -10,7 +10,30 @@ stages: .release_rules: &release_rules rules: - - if: "$CI_COMMIT_TAG =~ /^release-/ && $CI_COMMIT_BRANCH == 'release'" + - if: '$CI_COMMIT_TAG' + when: never + - if: '$CI_COMMIT_BRANCH != "master"' + when: never + - if: "$CI_COMMIT_MESSAGE =~ /^#release/" + when: always + - when: never + +# When changing, also make changes to copies in the build stage +.beta_rules: &beta_rules + rules: + - if: '$CI_COMMIT_TAG' + when: never + - if: '$CI_COMMIT_BRANCH != "master"' + when: never + - if: "$CI_COMMIT_MESSAGE =~ /#release/" + when: never + - when: always + +.dev_rules: &dev_rules + rules: + - if: '$CI_COMMIT_TAG' + when: never + - if: '$CI_COMMIT_BRANCH != "master"' when: always - when: never @@ -39,16 +62,11 @@ prepare:dev: script: - VERSION=$(python3 scripts/update-version.py -n) - bash scripts/build.sh --version "$VERSION" - only: - - branches - except: - - release - - master + <<: *dev_rules prepare:beta: extends: .prepare - only: - - master + <<: *beta_rules prepare:release: extends: .prepare @@ -65,6 +83,7 @@ prepare:release: # Build for Edge # + .build:edge: stage: build image: python:3.7-stretch @@ -82,18 +101,10 @@ build:edge:beta: variables: VARIANT: beta rules: - - if: '$CI_PIPELINE_SOURCE == "push" && $CI_COMMIT_BRANCH == "master"' - changes: - - shared/**/* - - firefox/**/* - - edge/**/* - when: always - - if: '$CI_COMMIT_MESSAGE =~ /#force-build:(all|edge)/ && $CI_COMMIT_BRANCH == "master"' - when: always - - when: never + <<: *beta_rules build:edge:release: - extends: .build:thunderbird + extends: .build:edge variables: VARIANT: release <<: *release_rules @@ -126,13 +137,18 @@ build:firefox:beta: CHANNEL: unlisted VARIANT: beta rules: - - if: '$CI_PIPELINE_SOURCE == "push" && $CI_COMMIT_BRANCH == "master"' - changes: + - if: '$CI_COMMIT_TAG' + when: never + - if: '$CI_COMMIT_BRANCH != "master"' + when: never + - if: "$CI_COMMIT_MESSAGE =~ /#release/" + when: never + - if: '$CI_COMMIT_MESSAGE =~ /#force-build:(all|firefox)/' + when: always + - changes: - shared/**/* - firefox/**/* when: always - - if: '$CI_COMMIT_MESSAGE =~ /#force-build:(all|firefox)/ && $CI_COMMIT_BRANCH == "master"' - when: always - when: never build:firefox:release: @@ -163,15 +179,7 @@ build:thunderbird:beta: extends: .build:thunderbird variables: VARIANT: beta - rules: - - if: '$CI_PIPELINE_SOURCE == "push" && $CI_COMMIT_BRANCH == "master"' - changes: - - shared/**/* - - thunderbird/**/* - when: always - - if: '$CI_COMMIT_MESSAGE =~ /#force-build:(all|thunderbird)/ && $CI_COMMIT_BRANCH == "master"' - when: always - - when: never + <<: *beta_rules build:thunderbird:release: extends: .build:thunderbird @@ -190,9 +198,8 @@ collect: stage: collect image: busybox script: - - echo "I have seen the CONSING!" - only: - - master + - 'echo "I have seen the CONSING!"' + <<: *beta_rules pages: stage: deploy @@ -222,8 +229,34 @@ pages: job: build:edge:beta ref: $CI_COMMIT_REF_NAME artifacts: true - only: - - master + <<: *beta_rules artifacts: paths: - public/ + + + +# Upload and release + +upload: + stage: collect + image: curlimages/curl:latest + script: + - | + curl --header "JOB-TOKEN: ${CI_JOB_TOKEN}" --upload-file safelinks-cleaner-firefox-release.xpi ${PACKAGE_REGISTRY_URL}/ + - | + curl --header "JOB-TOKEN: ${CI_JOB_TOKEN}" --upload-file safelinks-cleaner-thunderbird-release.xpi ${PACKAGE_REGISTRY_URL}/ + - | + curl --header "JOB-TOKEN: ${CI_JOB_TOKEN}" --upload-file safelinks-cleaner-edge-release.zip ${PACKAGE_REGISTRY_URL}/ + <<: *release_rules + + +release: + stage: deploy + image: registry.gitlab.com/gitlab-org/release-cli:latest + script: + - VERSION=$(cat version) + - PACKAGE_REGISTRY_URL="${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/packages/generic/${CI_PROJECT_NAME}/${VERSION}" + - | + release-cli create --name "Release $VERSION" --description "Release $VERSION" --tag-name "release-$VERSION" --assets-link "{\"name\":\"safelinks-cleaner-thunderbird-release.xpi\",\"url\":\"${PACKAGE_REGISTRY_URL}/safelinks-cleaner-thunderbird-release.xpi\"}" --assets-link "{\"name\":\"safelinks-cleaner-firefox-release.xpi\",\"url\":\"${PACKAGE_REGISTRY_URL}/safelinks-cleaner-firefox-release.xpi\"}" --assets-link "{\"name\":\"safelinks-cleaner-edge-release.zip\",\"url\":\"${PACKAGE_REGISTRY_URL}/safelinks-cleaner-edge-release.zip\"}" + <<: *release_rules -- GitLab