Skip to content

Instantly share code, notes, and snippets.

@mcarbonneaux
Last active July 10, 2020 17:30
Show Gist options
  • Save mcarbonneaux/b230eb1d9e7cf9f1d22ab1eae2a35802 to your computer and use it in GitHub Desktop.
Save mcarbonneaux/b230eb1d9e7cf9f1d22ab1eae2a35802 to your computer and use it in GitHub Desktop.
To upload asset on github release from travis-ci build
if [ -f $1 ]; then
echo "Start try upload asset $1 to ${TRAVIS_PULL_REQUEST_SLUG} on tag: ${TRAVIS_TAG} at $(date)..."
ASSETTAGID=$(curl --no-progress-meter -q -u "${GITHUB_UPLOAD_USERNAME}:${GITHUB_UPLOAD_TOKEN}" \
-H "Accept: application/vnd.github.v3+json" \
https://api.github.com/repos/${TRAVIS_PULL_REQUEST_SLUG}/releases/tags/${TRAVIS_TAG} | awk '/"assets": /{flag=1}/"id": /{sub(",$","",$2);id=$2;}/"name": /{sub("^\"","",$2); sub("\",$","",$2);name=$2; if (name=="'"$1"'") {print id;exit}}')
ASSETURL=$(curl --no-progress-meter -q -u "${GITHUB_UPLOAD_USERNAME}:${GITHUB_UPLOAD_TOKEN}" \
-H "Accept: application/vnd.github.v3+json" \
https://api.github.com/repos/${TRAVIS_PULL_REQUEST_SLUG}/releases/tags/${TRAVIS_TAG} | awk '/"assets_url": /{sub("^\"","",$2); sub("\",$","",$2); sub("^https://api[.]","https://uploads.",$2);print $2;exit}')
if [ -z "${ASSETURL}" ]; then
curl --no-progress-meter -q -u "${GITHUB_UPLOAD_USERNAME}:${GITHUB_UPLOAD_TOKEN}" \
-H "Accept: application/vnd.github.v3+json" \
https://api.github.com/repos/${TRAVIS_PULL_REQUEST_SLUG}/releases/tags/${TRAVIS_TAG}
echo "Tag : ${TRAVIS_TAG} not found on project: ${TRAVIS_PULL_REQUEST_SLUG}..."
exit 2
fi
if [ ! -z "$ASSETTAGID" ]; then
echo "Asset $1 are already uploaded on Tag: ${TRAVIS_TAG}!"
echo "I must Delete $1 before upload..."
curl -u "${GITHUB_UPLOAD_USERNAME}:${GITHUB_UPLOAD_TOKEN}" \
-X DELETE \
-H "Accept: application/vnd.github.v3+json" \
https://api.github.com/repos/${TRAVIS_PULL_REQUEST_SLUG}/releases/assets/${ASSETTAGID}
if [ $? -eq 0 ]; then echo "Delete done!"
else echo "Delete failed!"; exit 1; fi
fi
echo "Uploading asset $1 to ${TRAVIS_PULL_REQUEST_SLUG} on tag: ${TRAVIS_TAG}..."
curl --no-progress-meter -q -u "${GITHUB_UPLOAD_USERNAME}:${GITHUB_UPLOAD_TOKEN}" \
-X POST \
--data-binary @$1 \
-H "Content-Type: application/zip" \
-H "Accept: application/vnd.github.v3+json" \
$ASSETURL?name=$1 >response.json
if [ $? -eq 0 ]; then echo "Success upload of asset $1 to ${TRAVIS_PULL_REQUEST_SLUG} on tag: ${TRAVIS_TAG} at $(date)...";
else cat response.json; echo "Failed upload of upload asset $1 to ${TRAVIS_PULL_REQUEST_SLUG} on tag: ${TRAVIS_TAG} at $(date)..."; fi
fi
@mcarbonneaux
Copy link
Author

mcarbonneaux commented Jul 10, 2020

set GITHUB_UPLOAD_USERNAME and GITHUB_UPLOAD_TOKEN in environement variable on travis settings of the project.
and execute bash travis2githubassetupload.sh "myfile.zip"

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment