release.sh 2.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. #!/bin/bash
  2. set -e
  3. if [[ -z "${GITHUB_TOKEN}" ]]; then
  4. echo "Will not release because no GITHUB_TOKEN defined"
  5. exit
  6. fi
  7. OWNER="${GITHUB_REPOSITORY_OWNER:-"VSCodium"}"
  8. REPO_NAME="${GITHUB_REPOSITORY:(${#OWNER}+1)}"
  9. if [[ "${VSCODE_QUALITY}" == "insider" ]]; then
  10. REPOSITORY="${REPO_NAME:-"vscodium"}-insiders"
  11. NOTES="update vscode to [${MS_COMMIT}](https://github.com/microsoft/vscode/tree/${MS_COMMIT})"
  12. else
  13. REPOSITORY="${REPO_NAME:-"vscodium"}"
  14. NOTES="update vscode to [${MS_TAG}](https://code.visualstudio.com/updates/v$( echo ${MS_TAG//./_} | cut -d'_' -f 1,2 ))"
  15. fi
  16. npm install -g github-release-cli
  17. if [[ $( gh release view --repo "${OWNER}/${REPOSITORY}" "${RELEASE_VERSION}" 2>&1 ) =~ "release not found" ]]; then
  18. echo "Creating release '${RELEASE_VERSION}'"
  19. gh release create "${RELEASE_VERSION}" --repo "${OWNER}/${REPOSITORY}" --notes "${NOTES}" --generate-notes
  20. fi
  21. cd artifacts
  22. set +e
  23. for FILE in *
  24. do
  25. if [[ -f "${FILE}" ]] && [[ "${FILE}" != *.sha1 ]] && [[ "${FILE}" != *.sha256 ]]; then
  26. echo "::group::Uploading '${FILE}' at $( date "+%T" )"
  27. gh release upload --repo "${OWNER}/${REPOSITORY}" "${RELEASE_VERSION}" "${FILE}" "${FILE}.sha1" "${FILE}.sha256"
  28. EXIT_STATUS=$?
  29. echo "exit: ${EXIT_STATUS}"
  30. if (( "${EXIT_STATUS}" )); then
  31. for (( i=0; i<10; i++ ))
  32. do
  33. github-release delete --owner "${OWNER}" --repo "${REPOSITORY}" --tag "${RELEASE_VERSION}" "${FILE}" "${FILE}.sha1" "${FILE}.sha256"
  34. sleep $(( 15 * (i + 1)))
  35. echo "RE-Uploading '${FILE}' at $( date "+%T" )"
  36. gh release upload --repo "${OWNER}/${REPOSITORY}" "${RELEASE_VERSION}" "${FILE}" "${FILE}.sha1" "${FILE}.sha256"
  37. EXIT_STATUS=$?
  38. echo "exit: ${EXIT_STATUS}"
  39. if ! (( "${EXIT_STATUS}" )); then
  40. break
  41. fi
  42. done
  43. echo "exit: ${EXIT_STATUS}"
  44. if (( "${EXIT_STATUS}" )); then
  45. echo "'${FILE}' hasn't been uploaded!"
  46. github-release delete --owner "${OWNER}" --repo "${REPOSITORY}" --tag "${RELEASE_VERSION}" "${FILE}" "${FILE}.sha1" "${FILE}.sha256"
  47. exit 1
  48. fi
  49. fi
  50. echo "::endgroup::"
  51. fi
  52. done
  53. cd ..