From 432f95d324f5f10015d529b677def2a58838dcea Mon Sep 17 00:00:00 2001 From: Alexander Olofsson <alexander.olofsson@liu.se> Date: Wed, 22 Nov 2023 12:45:06 +0100 Subject: [PATCH] Add release stages to CI config --- .gitlab-ci.yml | 75 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 75 insertions(+) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 8feba41..13744c0 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -1,4 +1,7 @@ --- +variables: + PACKAGE_REGISTRY_URL: "${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/packages/generic/${CI_PROJECT_NAME}/${CI_COMMIT_TAG}" + image: "ruby:2.7" # Cache gems in between builds @@ -31,3 +34,75 @@ pages: rake: script: - bundle exec rake test + +gemfile: + script: + - gem build liudesk_cmdb.gemspec + - | + # Generate release info + GEMFILE="$(ls -1 liudesk_cmdb-*.gem)" + GEMNAME="$(basename -s '.gem' "${GEMFILE}")" + GEMVERSION="${GEMNAME#*-}" + cat <<EOF > variables.env + CI_RUBY_GEMFILE="$GEMFILE" + CI_RUBY_GEMNAME="$GEMNAME" + CI_RUBY_VERSION="$GEMVERSION" + EOF + artifacts: + paths: + - '*.gem' + reports: + dotenv: variables.env + +push:gemfile: + variables: + GIT_STRATEGY: none + + needs: + - job: gemfile + artifacts: true + + image: curlimages/curl + + script: + - | + curl --header "JOB-TOKEN: $CI_JOB_TOKEN" "${PACKAGE_REGISTRY_URL}/${CI_RUBY_GEMFILE}" -Iso /dev/null -w "%{http_code}" | grep 200 || \ + curl --header "JOB-TOKEN: $CI_JOB_TOKEN" --upload-file "${CI_RUBY_GEMFILE}" "${PACKAGE_REGISTRY_URL}/${CI_RUBY_GEMFILE}" + + rules: + - if: $CI_COMMIT_TAG + +push:release: + variables: + GIT_STRATEGY: none + + needs: + - push:gemfile + - job: gemfile + artifacts: true + + image: registry.gitlab.com/gitlab-org/release-cli:latest + + script: + - echo "Running release job for $CI_COMMIT_TAG" + - | + # Create/Update release + if [ -n "$CI_RELEASE_DESCRIPTION" ]; then + echo "$CI_RELEASE_DESCRIPTION" > release.md + else + echo "${CI_COMMIT_TAG_MESSAGE:-$CI_COMMIT_MESSAGE}" > release.md + fi + sed -e '/-\+BEGIN PGP.\+/,$d' -i release.md + + release-cli get > /dev/null && \ + release-cli update \ + --name "Version $CI_RUBY_GEMVERSION" \ + --description release.md || \ + release-cli create \ + --name "Version $CI_RUBY_GEMVERSION" \ + --description release.md \ + --assets-link "{\"name\":\"$CI_RUBY_GEMFILE\",\"url\":\"${PACKAGE_REGISTRY_URL}/${CI_RUBY_GEMFILE}\",\"link_type\":\"package\"}" + + rules: + - if: $CI_COMMIT_TAG + when: manual -- GitLab