Skip to content

Arduino-esp32 release mgmt. improvements and fixes #1557

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 1 commit into from
Jun 28, 2018
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
30 changes: 18 additions & 12 deletions tools/build-release.sh
Original file line number Diff line number Diff line change
Expand Up @@ -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.
Expand All @@ -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..."

# <PACKAGE ROOT>
Expand Down Expand Up @@ -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):"
Expand Down Expand Up @@ -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\" | \
Expand Down
9 changes: 6 additions & 3 deletions tools/deploy.sh
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down