You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
43 lines
1.0 KiB
43 lines
1.0 KiB
#!/bin/sh
|
|
|
|
set -eu
|
|
|
|
if [ "$#" -ne 3 ]; then
|
|
echo "usage: $0 TAG NAME DESCRIPTION" >&2
|
|
exit 2
|
|
fi
|
|
|
|
: "${CI_API_V4_URL:?CI_API_V4_URL is required}"
|
|
: "${CI_PROJECT_ID:?CI_PROJECT_ID is required}"
|
|
: "${CI_JOB_TOKEN:?CI_JOB_TOKEN is required}"
|
|
|
|
tag_name=$1
|
|
release_name=$2
|
|
description=$3
|
|
response_file=$(mktemp)
|
|
trap 'rm -f "$response_file"' EXIT HUP INT TERM
|
|
|
|
status=$(curl --silent --show-error \
|
|
--output "$response_file" \
|
|
--write-out '%{http_code}' \
|
|
--request POST \
|
|
--header "JOB-TOKEN: $CI_JOB_TOKEN" \
|
|
--data-urlencode "tag_name=$tag_name" \
|
|
--data-urlencode "name=$release_name" \
|
|
--data-urlencode "description=$description" \
|
|
"$CI_API_V4_URL/projects/$CI_PROJECT_ID/releases")
|
|
|
|
case "$status" in
|
|
201)
|
|
echo "GitLab release created for $tag_name"
|
|
;;
|
|
409)
|
|
echo "GitLab release already exists for $tag_name"
|
|
;;
|
|
*)
|
|
echo "GitLab release creation failed for $tag_name (HTTP $status)" >&2
|
|
cat "$response_file" >&2
|
|
exit 1
|
|
;;
|
|
esac
|