1#!/bin/sh -eux 2# tools/create-release.sh -- via GitLab CI and API 3# Copyright (C) 2019 Olaf Meeuwissen 4# 5# License: GPL-3.0+ 6 7GROUP=sane-project 8PROJECT=backends 9PROJECT_ID=$GROUP%2F$PROJECT 10 11API_ENDPOINT=https://gitlab.com/api/v4 12 13# Uploads a file and returns a project relative URL to it. 14upload () { 15 curl --silent --fail \ 16 --header "PRIVATE-TOKEN: $PRIVATE_TOKEN" \ 17 --form "file=@$1" \ 18 --request POST \ 19 $API_ENDPOINT/projects/$PROJECT_ID/uploads \ 20 | jq --raw-output .url \ 21 | sed "s|^|https://gitlab.com/$GROUP/$PROJECT|" 22} 23 24cat << EOF > release.json 25{ 26 "name": "SANE Backends $CI_COMMIT_TAG", 27 "tag_name": "$CI_COMMIT_TAG", 28 "description": "$(sed '1,3d; //{s/.*//; q}' NEWS \ 29 | git stripspace \ 30 | sed 's/"/\\"/g; s/$/\\n/g' \ 31 | tr -d '\n')", 32 "assets": { 33 "links": [ 34EOF 35 36for check in sha256 sha512; do 37 ${check}sum sane-backends-$CI_COMMIT_TAG.tar.gz \ 38 > sane-backends-$CI_COMMIT_TAG.$check.txt 39 cat << EOF >> release.json 40 { 41 "name": "sane-backends-$CI_COMMIT_TAG.$check.txt", 42 "url": "$(upload sane-backends-$CI_COMMIT_TAG.$check.txt)" 43 }, 44EOF 45done 46 47cat << EOF >> release.json 48 { 49 "name": "sane-backends-$CI_COMMIT_TAG.tar.gz", 50 "url": "$(upload sane-backends-$CI_COMMIT_TAG.tar.gz)" 51 } 52 ] 53 } 54} 55EOF 56 57curl --silent --fail --write-out "%{http_code}\n"\ 58 --header "PRIVATE-TOKEN: $PRIVATE_TOKEN" \ 59 --header "Content-Type: application/json" \ 60 --data @release.json \ 61 --request POST $API_ENDPOINT/projects/$PROJECT_ID/releases 62