From fd798e83c3e98deb9876902acf7564809c8dbbb0 Mon Sep 17 00:00:00 2001 From: Brian Read Date: Wed, 19 Jul 2023 12:22:50 +0100 Subject: [PATCH] Add release types to make-release --- README.md | 6 +++- git-make-release.sh | 74 ++++++++++++++++++++++++++++++++++----------- 2 files changed, 61 insertions(+), 19 deletions(-) diff --git a/README.md b/README.md index 2d08189..a29657c 100644 --- a/README.md +++ b/README.md @@ -138,7 +138,11 @@ optional: (in any order) * \ used with org= and will use local GITEA instance, default remote - will be passed to \ * \ show line being executed -* \ run in debug modea +* \ run in debug mode +* \ create a draft release +* \ create a pre-release + +Note that no release type will give a full stable release Does: diff --git a/git-make-release.sh b/git-make-release.sh index 3dd0a6f..576a9d3 100755 --- a/git-make-release.sh +++ b/git-make-release.sh @@ -66,6 +66,8 @@ for param in $4 $5 $6; do MAKEDRAFT=true ;; prerelease ) MAKEPRE=true ;; + draftpre ) + MAKEPRE=true;MAKEDRAFT=true ;; * ) EXTRAPARAMS=$EXTRAPARAMS" "$param ;; esac @@ -74,6 +76,7 @@ for param in $4 $5 $6; do fi done +if [ $DEBUG ] ; then echo "draft:$MAKEDRAFT*pre:$MAKEPRE"; fi #check for release tag if [ -z $3 ]; then echo "Release tag not set"; @@ -107,7 +110,7 @@ RemoteRepoURL="$GITEAHOST/$2/$1" if [ $DEBUG ] ; then echo "URL="$RemoteRepoURL; fi # First see if release exists: -RESPONSE=$(curl -X 'GET' \ +RESPONSE=$(curl -s -X 'GET' \ "$GITEAHOST/api/v1/repos/$2/$1/releases/tags/SME$3" \ -H 'accept: application/json') if [ $DEBUG ] ; then echo "See if Release exists response="$RESPONSE; fi @@ -133,21 +136,56 @@ fi if [[ -z "$ID" ]]; then # Create Release if [ $NOISY ]; then echo "Creating Release $3 for $2/$1"; fi - RESPONSE=$(curl -X 'POST' \ - "$GITEAHOST/api/v1/repos/$2/$1/releases" \ - -H 'accept: application/json' \ - -H "Authorization: token $GITEAACCESSTOKEN" \ - -H 'Content-Type: application/json' \ - -d '{ - "body": "'"1st Release of rpm built from git - `date` "'", - "draft": "'"$MAKEDRAFT"'", - "name": "'"$1"'", - "prerelease": "'"$MAKEPRE"'", - "tag_name": "'SME"$3"'", - "target_commitish": "" - }') + # 3 branches 'cos I can't get the ascaping correct for using $MAKEPRE and $MAKEDRAFT in the -d json parameter to curl! + if [ $MAKEDRAFT = "true" ]; then + if [ $DEBUG ] ; then echo "$MAKEDRAFT:Creating draft release"; fi + RESPONSE=$(curl -s -X 'POST' \ + "$GITEAHOST/api/v1/repos/$2/$1/releases" \ + -H 'accept: application/json' \ + -H "Authorization: token $GITEAACCESSTOKEN" \ + -H 'Content-Type: application/json' \ + -d '{ + "body": "'"1st Draft Release of rpm built from git - `date` "'", + "draft": true, + "name": "'"$1"'", + "prerelease": false, + "tag_name": "'SME"$3"'", + "target_commitish": ""}' + ); + elif [ $MAKEPRE = "true" ]; then + if [ $DEBUG ] ; then echo "Creating pre-release"; fi + RESPONSE=$(curl -s -X 'POST' \ + "$GITEAHOST/api/v1/repos/$2/$1/releases" \ + -H 'accept: application/json' \ + -H "Authorization: token $GITEAACCESSTOKEN" \ + -H 'Content-Type: application/json' \ + -d '{ + "body": "'"1st Pre-Release of rpm built from git - `date` "'", + "draft": false, + "name": "'"$1"'", + "prerelease": true, + "tag_name": "'SME"$3"'", + "target_commitish": ""}' + ); + else + if [ $DEBUG ] ; then echo "Creating full release"; fi + RESPONSE=$(curl -s -X 'POST' \ + "$GITEAHOST/api/v1/repos/$2/$1/releases" \ + -H 'accept: application/json' \ + -H "Authorization: token $GITEAACCESSTOKEN" \ + -H 'Content-Type: application/json' \ + -d '{ + "body": "'"1st Stable Release of rpm built from git - `date` "'", + "draft": false, + "name": "'"$1"'", + "prerelease": false, + "tag_name": "'SME"$3"'", + "target_commitish": ""}' + ); + fi # Extract id from release if [ $DEBUG ]; then echo "Create Release response="$RESPONSE; fi + exit 0 ID=$(echo $RESPONSE | jq -r '.id') if [[ -z $ID ]] ; then echo "Unable to create release for $2/$1 ($3)" @@ -157,14 +195,14 @@ else if [ $NOISY ]; then echo "Found Release $ID for $2/$1 ($3)"; fi fi if [ $DEBUG ] ; then echo "ID:"$ID; fi - +exit 0 # And use it to upload the rpm and src rpm cd $WORKDIR/$2/$1 # Got to cd to rpm directory here RPMDIR=$(ls $(basename `pwd`)*.rpm | sort | head -n 1 | sed 's/.src.rpm//' | sed 's/\./_/g') echo $RPMDIR # List the existing attachments -ASSETSRESPONSE=$(curl -X 'GET' \ +ASSETSRESPONSE=$(curl -s -X 'GET' \ "$GITEAHOST/api/v1/repos/$2/$1/releases/$ID/assets" \ -H 'accept: application/json') if [ $DEBUG ]; then echo "Asset response:"$ASSETSRESPONSE; fi @@ -185,7 +223,7 @@ for File in $(ls $RPMDIR/*.rpm) ; do #echo "ATTID:"$ATTID ATTID=$(echo $ATTID | sed 's/\[//' | sed 's/\]//' | sed 's/ //g') if [ $DEBUG ]; then echo "ATTID:"$ATTID; fi - RESPONSE=$(curl -X 'DELETE' \ + RESPONSE=$(curl -s -X 'DELETE' \ "$GITEAHOST/api/v1/repos/$2/$1/releases/$ID/assets/$ATTID" \ -H "Authorization: token $GITEAACCESSTOKEN" \ -H 'accept: application/json') @@ -201,7 +239,7 @@ for File in $(ls $RPMDIR/*.rpm) ; do # Then send current version FULLFILENAME=$FULLPATH/$File if [ $DEBUG ] ; then echo $FULLFILENAME; fi - RESPONSE=$(curl -X 'POST' \ + RESPONSE=$(curl -s -X 'POST' \ "$GITEAHOST/api/v1/repos/$2/$1/releases/$ID/assets?name=$BASEFile" \ -H 'accept: application/json' \ -H "Authorization: token $GITEAACCESSTOKEN" \