From 82af8e93191de837580a741c2b1192f19b7b0d58 Mon Sep 17 00:00:00 2001 From: "Scott E. Graves" Date: Fri, 5 Jul 2019 13:44:39 -0500 Subject: [PATCH] #27: Implement Bitbucket backup download location --- create_dist.cmd | 15 ++++++++++++++- create_dist.sh | 18 +++++++++++++++--- create_dist_mac.sh | 16 ++++++++++++++-- 3 files changed, 43 insertions(+), 6 deletions(-) diff --git a/create_dist.cmd b/create_dist.cmd index 229f931..5a278c2 100644 --- a/create_dist.cmd +++ b/create_dist.cmd @@ -37,12 +37,17 @@ pushd "%ROOT%" call :PIXEL_RESPONSE 1 set PIXEL_LOCATION=https://pixeldrain.com/api/file/!PIXEL_ID! + call :UPLOAD_TO_BITBUCKET "%OUT_FILE%" + call :UPLOAD_TO_BITBUCKET "%OUT_FILE%.sha256" + call :UPLOAD_TO_BITBUCKET "%OUT_FILE%.sig" + set BITBUCKET_LOCATION=https://bitbucket.org/blockstorage/repertory/downloads/%OUT_FILE% + del /q releases.json 1>NUL 2>&1 ("%JQ_BIN%" ".Versions.win32|=(.+ ["""%APP_VER%"""]|unique)" ..\releases.json>releases_temp.json && move /Y releases_temp.json releases.json 1>NUL 2>&1) || (call :ERROR "Update releases.json Versions failed") ("%JQ_BIN%" ".Locations.win32."""%APP_VER%""".sig="""!APP_SIG!"""" releases.json>releases_temp.json && move /Y releases_temp.json releases.json 1>NUL 2>&1) || (call :ERROR "Update releases.json sig failed") ("%JQ_BIN%" ".Locations.win32."""%APP_VER%""".sha256="""!APP_SHA256!"""" releases.json>releases_temp.json && move /Y releases_temp.json releases.json 1>NUL 2>&1) || (call :ERROR "Update releases.json sha256 failed") - ("%JQ_BIN%" ".Locations.win32."""%APP_VER%""".urls=["""!PIXEL_LOCATION!"""]" releases.json>releases_temp.json && move /Y releases_temp.json releases.json 1>NUL 2>&1) || (call :ERROR "Update releases.json URL failed") + ("%JQ_BIN%" ".Locations.win32."""%APP_VER%""".urls=["""!PIXEL_LOCATION!""","""%BITBUCKET_LOCATION%"""]" releases.json>releases_temp.json && move /Y releases_temp.json releases.json 1>NUL 2>&1) || (call :ERROR "Update releases.json URL failed") popd ) || ( call :ERROR "Create dist failed" @@ -78,6 +83,14 @@ goto :EOF ) goto :EOF +:UPLOAD_TO_BITBUCKET + set SOURCE_FILE=%1 + call :NO_QUOTES SOURCE_FILE + call :NO_QUOTES BITBUCKET_AUTH + echo "Uploading !SOURCE_FILE! to Bitbucket" + (curl --fail -u "!BITBUCKET_AUTH!" -X POST https://api.bitbucket.org/2.0/repositories/blockstorage/repertory/downloads -F files="@!SOURCE_FILE!" > upload_response.json) || (call :ERROR "Upload to Bitbucket failed: %SOURCE_FILE%") +goto :EOF + :ERROR echo %1 set ERROR_EXIT=1 diff --git a/create_dist.sh b/create_dist.sh index 687dfcb..eeeb5a4 100755 --- a/create_dist.sh +++ b/create_dist.sh @@ -11,17 +11,27 @@ PUBLIC_KEY=./blockstorage_dev_public.pem APP_VER=$(grep -m1 -a version package.json|sed -e "s/\"//g" -e "s/version: //g" -e "s/,//g" -e "s/ //g") OUT_FILE=repertory-ui_${APP_VER}_linux_x86_64.AppImage +BITBUCKET_AUTH=$1 + exit_script() { echo $1 exit 1 } +upload_to_bitbucket() { + SOURCE_FILE=$1 + curl --fail -u "${BITBUCKET_AUTH}" -X POST https://api.bitbucket.org/2.0/repositories/blockstorage/repertory/downloads -F files=@${SOURCE_FILE} > upload_response.json || exit_script "Upload to Bitbucket failed: ${SOURCE_FILE}" +} + if npm run dist; then cd dist sha256sum -b ${OUT_FILE} > ${OUT_FILE}.sha256 || exit_script "Create sha256 failed" openssl dgst -sha256 -sign "${PRIVATE_KEY}" -out "${OUT_FILE}.sig" "${OUT_FILE}" || exit_script "Create signature failed" base64 -w0 "${OUT_FILE}.sig" > "${OUT_FILE}.sig.b64" || exit_script "Create base64 failed" + APP_SIG=$(cat ${OUT_FILE}.sig.b64) + APP_SHA256=$(cat ${OUT_FILE}.sha256 | awk '{print $1;}') + rm -f upload_response.json 1>/dev/null 2>&1 curl -F name="${OUT_FILE}" -F anonymous=true -F file="@${OUT_FILE}" https://pixeldrain.com/api/file > upload_response.json || exit_script "Upload to Pixeldrain failed" @@ -33,15 +43,17 @@ if npm run dist; then PIXEL_ID=$(jq-linux64 .id upload_response.json|sed s/\"//g) PIXEL_LOCATION=https://pixeldrain.com/api/file/${PIXEL_ID} - APP_SIG=$(cat ${OUT_FILE}.sig.b64) - APP_SHA256=$(cat ${OUT_FILE}.sha256 | awk '{print $1;}') + upload_to_bitbucket "${OUT_FILE}" + upload_to_bitbucket "${OUT_FILE}.sha256" + upload_to_bitbucket "${OUT_FILE}.sig" + BITBUCKET_LOCATION=https://bitbucket.org/blockstorage/repertory/downloads/${OUT_FILE} cp -f ../releases.json ./releases.json for DISTRONAME in ${DISTRO_LIST}; do jq-linux64 ".Versions[\"${DISTRONAME}\"]|=(.+ [\"${APP_VER}\"]|unique)" releases.json > releases_temp.json || exit_script "Update releases.json Versions failed" jq-linux64 ".Locations[\"${DISTRONAME}\"].\"${APP_VER}\".sig=\"${APP_SIG}\"" releases_temp.json > releases.json || exit_script "Update releases.json sig failed" jq-linux64 ".Locations[\"${DISTRONAME}\"].\"${APP_VER}\".sha256=\"${APP_SHA256}\"" releases.json > releases_temp.json || exit_script "Update releases.json sha256 failed" - jq-linux64 ".Locations[\"${DISTRONAME}\"].\"${APP_VER}\".urls=[\"${PIXEL_LOCATION}\"]" releases_temp.json > releases.json || exit_script "Update releases.json URL failed" + jq-linux64 ".Locations[\"${DISTRONAME}\"].\"${APP_VER}\".urls=[\"${PIXEL_LOCATION}\",\"${BITBUCKET_LOCATION}\"]" releases_temp.json > releases.json || exit_script "Update releases.json URL failed" done rm -f releases_temp.json fi diff --git a/create_dist_mac.sh b/create_dist_mac.sh index 2801bc2..8fce24e 100755 --- a/create_dist_mac.sh +++ b/create_dist_mac.sh @@ -9,17 +9,27 @@ PUBLIC_KEY=./blockstorage_dev_public.pem APP_VER=$(grep -m1 -a version package.json|sed -e "s/\"//g" -e "s/version: //g" -e "s/,//g" -e "s/ //g") OUT_FILE=repertory-ui_${APP_VER}_mac.dmg +BITBUCKET_AUTH=$1 + exit_script() { echo $1 exit 1 } +upload_to_bitbucket() { + SOURCE_FILE=$1 + curl --fail -u "${BITBUCKET_AUTH}" -X POST https://api.bitbucket.org/2.0/repositories/blockstorage/repertory/downloads -F files=@${SOURCE_FILE} > upload_response.json || exit_script "Upload to Bitbucket failed: ${SOURCE_FILE}" +} + if npm run dist; then cd dist shasum -a 256 -b ${OUT_FILE} > ${OUT_FILE}.sha256 || exit_script "Create sha256 failed" openssl dgst -sha256 -sign "${PRIVATE_KEY}" -out "${OUT_FILE}.sig" "${OUT_FILE}" || exit_script "Create signature failed" base64 "${OUT_FILE}.sig" > "${OUT_FILE}.sig.b64" || exit_script "Create base64 failed" + APP_SIG=$(cat ${OUT_FILE}.sig.b64) + APP_SHA256=$(cat ${OUT_FILE}.sha256 | awk '{print $1;}') + rm -f upload_response.json 1>/dev/null 2>&1 curl -F name="${OUT_FILE}" -F anonymous=true -F file="@${OUT_FILE}" https://pixeldrain.com/api/file > upload_response.json || exit_script "Upload to Pixeldrain failed" @@ -31,8 +41,10 @@ if npm run dist; then PIXEL_ID=$(jq-osx-amd64 .id upload_response.json|sed s/\"//g) PIXEL_LOCATION=https://pixeldrain.com/api/file/${PIXEL_ID} - APP_SIG=$(cat ${OUT_FILE}.sig.b64) - APP_SHA256=$(cat ${OUT_FILE}.sha256 | awk '{print $1;}') + upload_to_bitbucket "${OUT_FILE}" + upload_to_bitbucket "${OUT_FILE}.sha256" + upload_to_bitbucket "${OUT_FILE}.sig" + BITBUCKET_LOCATION=https://bitbucket.org/blockstorage/repertory/downloads/${OUT_FILE} cp -f ../releases.json ./releases.json jq-osx-amd64 ".Versions[\"darwin\"]|=(.+ [\"${APP_VER}\"]|unique)" releases.json > releases_temp.json || exit_script "Update releases.json Versions failed"