CI: publish a new release in Gitlab on new tag

This commit is contained in:
Benjamin Renard 2023-10-26 14:20:40 +02:00
parent f6fa5a2d96
commit 982d29aa63
Signed by: bn8
GPG key ID: 3E2E1CE1907115BC
3 changed files with 59 additions and 0 deletions

View file

@ -2,11 +2,13 @@ stages:
- tests
- build
- publish
- release
variables:
DOC_BRANCH: doc
DOC_REMOTE: https://gitlab-ci-token:${ACCESS_TOKEN}@${CI_SERVER_HOST}/${CI_PROJECT_PATH}.git
PIP_CACHE_DIR: "$CI_PROJECT_DIR/.cache/pip"
PACKAGE_REGISTRY_URL: "${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/packages/generic/${CI_PROJECT_NAME}/${CI_COMMIT_TAG}"
tests:bookworm:
image:
@ -125,6 +127,7 @@ build:debian-stable:
script:
- ./build-deb.sh --install-build-deps
- rm -fr dist/ldapsaisie-*
- dpkg-parsechangelog --format dpkg|awk '/ ldapsaisie /,0'|tail -n +3 > dist/release-notes.md
artifacts:
paths:
- dist/*
@ -300,6 +303,22 @@ publish:debian-stable:
- echo "Publish stable debian packages on APT repository..."
- dupload --to debian-stable dist/ldapsaisie*changes
publish:gitlab:
stage: publish
image:
name: docker.io/alpine/httpie
entrypoint: ["/bin/sh", "-c"]
needs:
- build:debian-stable
rules:
- if: $CI_COMMIT_TAG != null && $CI_COMMIT_BRANCH == "master"
script:
- ./.gitlab/publish.sh
artifacts:
paths:
- dist/release-notes.md
- dist/release-files.txt
publish:debian-sid:
stage: publish
image: debian:stable-slim
@ -318,3 +337,15 @@ publish:debian-sid:
script:
- echo "Publish Sid debian packages on APT repository..."
- dupload --to debian-sid dist/ldapsaisie*changes
release:
stage: release
image:
name: registry.gitlab.com/gitlab-org/release-cli:latest
entrypoint: ["/bin/sh", "-c"]
needs:
- publish:gitlab
rules:
- if: $CI_COMMIT_TAG != null && $CI_COMMIT_BRANCH == "master"
script:
- ./.gitlab/release.sh

14
.gitlab/publish.sh Executable file
View file

@ -0,0 +1,14 @@
#!/bin/sh
cd `dirname $0`/../dist
rm -f release-files.txt
touch release-files.txt
for file in *.deb
do
# The filename can contain only lowercase letters (a-z), uppercase letter (A-Z), numbers (0-9), dots (.),
# hyphens (-), or underscores (_).
filename=`echo $file|tr '~' '_'|tr '+' '_'|sed s/[^a-zA-Z0-9\.\_\-]//g`
https --ignore-stdin --check-status PUT "${PACKAGE_REGISTRY_URL}/${filename}" "JOB-TOKEN: $CI_JOB_TOKEN" "@$file"
echo $filename >> release-files.txt
done

14
.gitlab/release.sh Executable file
View file

@ -0,0 +1,14 @@
#!/bin/sh
echo "Creating a release for $CI_COMMIT_TAG"
cd `dirname $0`/../dist
CMD="release-cli create --name $CI_COMMIT_TAG --description release-notes.md --tag-name $CI_COMMIT_TAG"
for file in `cat release-files.txt`
do
CMD="$CMD --assets-link {\"name\":\"$file\",\"url\":\"${PACKAGE_REGISTRY_URL}/$file\"}"
done
$CMD