diff --git a/tools/build-release.sh b/tools/build-release.sh index 0219bd89..d53e5389 100755 --- a/tools/build-release.sh +++ b/tools/build-release.sh @@ -162,10 +162,10 @@ shopt -u nocasematch echo "Package version: $ver" echo "Git branch name: $branch_name" -echo "Git revision number (short): $verx" +echo "Git revision number: $verx" echo "Package name extension: $extent" echo "Travis CI tag: $TRAVIS_TAG" -echo "Release package name (unzipped): $package_name" +echo "Release package name: $package_name" # Set REMOTE_URL environment variable to the address where the package will be # available for download. This gets written into package json file. @@ -191,7 +191,6 @@ echo "Package build processing:" echo "=========================" echo echo "Prepare files for the package main archive:" -echo "-------------------------------------------" echo " - copying neccessary files from current Git repository..." # @@ -257,14 +256,14 @@ pushd $releaseDir >/dev/null zip -qr $package_name_zip $package_name if [ $? -ne 0 ]; then - echo " !error: failed to create ${package_name_zip} (ZIP errno: $?) => aborting" + echo " !error: failed to create ${package_name_zip} (ZIP errno: $?) => aborting" exit 1 fi # Calculate SHA sum and size of ZIP archive sha=`shasum -a 256 $package_name_zip | cut -f 1 -d ' '` size=`/bin/ls -l $package_name_zip | awk '{print $5}'` -echo "${package_name_zip} creation OK (size: $size B, sha2: $sha)" +echo " ${package_name_zip} creation OK (size: $size, sha2: $sha)" echo echo "Making $package_name JSON definition file(s):" @@ -293,23 +292,30 @@ rm -rf $outdir # Get all previously released versions echo " - fetching previous (pre)release versions from GitHub..." +set +e + releasesJson=$releaseDir/releases.json curl -sH "Authorization: token $curlAuth" https://api.github.com/repos/$TRAVIS_REPO_SLUG/releases > $releasesJson -set +e -# Previous final release (prerelase == false) prev_release=$(jq -e -r '. | map(select(.draft == false and .prerelease == false)) | sort_by(.created_at | - fromdateiso8601) | .[0].tag_name' ${releasesJson}) -# Previous release (possibly a pre-release) prev_any_release=$(jq -e -r '. | map(select(.draft == false)) | sort_by(.created_at | - fromdateiso8601) | .[0].tag_name' ${releasesJson}) -# Previous pre-release prev_pre_release=$(jq -e -r '. | map(select(.draft == false and .prerelease == true)) | sort_by(.created_at | - fromdateiso8601) | .[0].tag_name' ${releasesJson}) + +shopt -s nocasematch +if [ "$prev_any_release" == "$TRAVIS_TAG" ]; then + prev_release=$(jq -e -r '. | map(select(.draft == false and .prerelease == false)) | sort_by(.created_at | - fromdateiso8601) | .[1].tag_name' ${releasesJson}) + prev_any_release=$(jq -e -r '. | map(select(.draft == false)) | sort_by(.created_at | - fromdateiso8601) | .[1].tag_name' ${releasesJson}) + prev_pre_release=$(jq -e -r '. | map(select(.draft == false and .prerelease == true)) | sort_by(.created_at | - fromdateiso8601) | .[1].tag_name' ${releasesJson}) +fi +shopt -u nocasematch + set -e rm -f "$releasesJson" -echo " -- previous Release: $prev_release" -echo " -- previous (?Pre-)release: $prev_any_release" -echo " -- previous Pre-release: $prev_pre_release" +echo " previous Release: $prev_release" +echo " previous (?Pre-)release: $prev_any_release" +echo " previous Pre-release: $prev_pre_release" # add generated items to JSON package-definition contents jq_arg=".packages[0].platforms[0].version = \"$ver\" | \ diff --git a/tools/deploy.sh b/tools/deploy.sh index 11f3f942..f4e1969a 100644 --- a/tools/deploy.sh +++ b/tools/deploy.sh @@ -119,21 +119,24 @@ fi releaseNotes=$(perl -pe 's/\r?\n/\\n/' <<< ${releaseNotes}) # Check possibly existing release for current tag +echo "Checking for possible releases of current tag $varTagName..." # (eg build invoked by Create New Release GHUI button -> GH default release pack created immediatelly including default assests) -HTTP_RESPONSE=$(curl -L --silent --write-out "HTTPSTATUS:%{http_code}" https://api.github.com/repos/$varRepoSlug/releases/tags/$varTagName) +HTTP_RESPONSE=$(curl -L --silent --write-out "HTTPSTATUS:%{http_code}" https://api.github.com/repos/$varRepoSlug/releases/tags/$varTagName?access_token=$varAccessToken) HTTP_BODY=$(echo $HTTP_RESPONSE | sed -e 's/HTTPSTATUS\:.*//g') HTTP_STATUS=$(echo $HTTP_RESPONSE | tr -d '\n' | sed -e 's/.*HTTPSTATUS://') +echo " HTTP server response code: $HTTP_STATUS" + # if the release exists, append/update recent files to its assets vector if [ $HTTP_STATUS -eq 200 ]; then releaseId=$(echo $HTTP_BODY | jq -r '.id') - echo "GH release exists for current $varTagName tag (id $releaseId)" + echo " - $varTagName release found (id $releaseId)" #... or create a new release record else curlData="{\"tag_name\": \"$varTagName\",\"target_commitish\": \"master\",\"name\": \"v$varTagName\",\"body\": \"$releaseNotes\",\"draft\": false,\"prerelease\": $varPrerelease}" #echo "DEBUG: curl --data \"${curlData}\" https://api.github.com/repos/${varRepoSlug}/releases?access_token=$varAccessToken | jq -r '.id'" releaseId=$(curl --data "$curlData" https://api.github.com/repos/$varRepoSlug/releases?access_token=$varAccessToken | jq -r '.id') - echo "New GH release created for $varTagName tag (id $releaseId)" + echo " - new release created for $varTagName (id $releaseId)" fi # Assets defined by dir contents