prepare_assets.sh 7.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237
  1. #!/usr/bin/env bash
  2. # shellcheck disable=SC1091
  3. set -e
  4. APP_NAME_LC="$( echo "${APP_NAME}" | awk '{print tolower($0)}' )"
  5. . ./utils.sh
  6. npm install -g checksum
  7. sum_file() {
  8. if [[ -f "${1}" ]]; then
  9. echo "Calculating checksum for ${1}"
  10. checksum -a sha256 "${1}" > "${1}".sha256
  11. checksum "${1}" > "${1}".sha1
  12. fi
  13. }
  14. mkdir -p assets
  15. if [[ "${OS_NAME}" == "osx" ]]; then
  16. if [[ -n "${CERTIFICATE_OSX_P12_DATA}" ]]; then
  17. if [[ "${CI_BUILD}" == "no" ]]; then
  18. RUNNER_TEMP="${TMPDIR}"
  19. fi
  20. CERTIFICATE_P12="${APP_NAME}.p12"
  21. KEYCHAIN="${RUNNER_TEMP}/buildagent.keychain"
  22. AGENT_TEMPDIRECTORY="${RUNNER_TEMP}"
  23. # shellcheck disable=SC2006
  24. KEYCHAINS=`security list-keychains | xargs`
  25. rm -f "${KEYCHAIN}"
  26. echo "${CERTIFICATE_OSX_P12_DATA}" | base64 --decode > "${CERTIFICATE_P12}"
  27. echo "+ create temporary keychain"
  28. security create-keychain -p pwd "${KEYCHAIN}"
  29. security set-keychain-settings -lut 21600 "${KEYCHAIN}"
  30. security unlock-keychain -p pwd "${KEYCHAIN}"
  31. # shellcheck disable=SC2086
  32. security list-keychains -s $KEYCHAINS "${KEYCHAIN}"
  33. # security show-keychain-info "${KEYCHAIN}"
  34. echo "+ import certificate to keychain"
  35. security import "${CERTIFICATE_P12}" -k "${KEYCHAIN}" -P "${CERTIFICATE_OSX_P12_PASSWORD}" -T /usr/bin/codesign
  36. security set-key-partition-list -S apple-tool:,apple:,codesign: -s -k pwd "${KEYCHAIN}" > /dev/null
  37. # security find-identity "${KEYCHAIN}"
  38. CODESIGN_IDENTITY="$( security find-identity -v -p codesigning "${KEYCHAIN}" | grep -oEi "([0-9A-F]{40})" | head -n 1 )"
  39. echo "+ signing"
  40. export CODESIGN_IDENTITY AGENT_TEMPDIRECTORY
  41. DEBUG="electron-osx-sign*" node vscode/build/darwin/sign.js "$( pwd )"
  42. # codesign --display --entitlements :- ""
  43. echo "+ notarize"
  44. cd "VSCode-darwin-${VSCODE_ARCH}"
  45. ZIP_FILE="./${APP_NAME}-darwin-${VSCODE_ARCH}-${RELEASE_VERSION}.zip"
  46. zip -r -X -y "${ZIP_FILE}" ./*.app
  47. xcrun notarytool store-credentials "${APP_NAME}" --apple-id "${CERTIFICATE_OSX_ID}" --team-id "${CERTIFICATE_OSX_TEAM_ID}" --password "${CERTIFICATE_OSX_APP_PASSWORD}" --keychain "${KEYCHAIN}"
  48. # xcrun notarytool history --keychain-profile "${APP_NAME}" --keychain "${KEYCHAIN}"
  49. xcrun notarytool submit "${ZIP_FILE}" --keychain-profile "${APP_NAME}" --wait --keychain "${KEYCHAIN}"
  50. echo "+ attach staple"
  51. xcrun stapler staple ./*.app
  52. # spctl --assess -vv --type install ./*.app
  53. rm "${ZIP_FILE}"
  54. cd ..
  55. fi
  56. if [[ "${SHOULD_BUILD_ZIP}" != "no" ]]; then
  57. echo "Building and moving ZIP"
  58. cd "VSCode-darwin-${VSCODE_ARCH}"
  59. zip -r -X -y "../assets/${APP_NAME}-darwin-${VSCODE_ARCH}-${RELEASE_VERSION}.zip" ./*.app
  60. cd ..
  61. fi
  62. if [[ "${SHOULD_BUILD_DMG}" != "no" ]]; then
  63. echo "Building and moving DMG"
  64. pushd "VSCode-darwin-${VSCODE_ARCH}"
  65. npx create-dmg ./*.app .
  66. mv ./*.dmg "../assets/${APP_NAME}.${VSCODE_ARCH}.${RELEASE_VERSION}.dmg"
  67. popd
  68. fi
  69. if [[ "${SHOULD_BUILD_SRC}" == "yes" ]]; then
  70. git archive --format tar.gz --output="./assets/${APP_NAME}-${RELEASE_VERSION}-src.tar.gz" HEAD
  71. git archive --format zip --output="./assets/${APP_NAME}-${RELEASE_VERSION}-src.zip" HEAD
  72. fi
  73. if [[ -n "${CERTIFICATE_OSX_P12_DATA}" ]]; then
  74. echo "+ clean"
  75. security delete-keychain "${KEYCHAIN}"
  76. # shellcheck disable=SC2086
  77. security list-keychains -s $KEYCHAINS
  78. fi
  79. VSCODE_PLATFORM="darwin"
  80. elif [[ "${OS_NAME}" == "windows" ]]; then
  81. cd vscode || { echo "'vscode' dir not found"; exit 1; }
  82. yarn gulp "vscode-win32-${VSCODE_ARCH}-inno-updater"
  83. if [[ "${SHOULD_BUILD_ZIP}" != "no" ]]; then
  84. 7z.exe a -tzip "../assets/${APP_NAME}-win32-${VSCODE_ARCH}-${RELEASE_VERSION}.zip" -x!CodeSignSummary*.md -x!tools "../VSCode-win32-${VSCODE_ARCH}/*" -r
  85. fi
  86. if [[ "${SHOULD_BUILD_EXE_SYS}" != "no" ]]; then
  87. yarn gulp "vscode-win32-${VSCODE_ARCH}-system-setup"
  88. fi
  89. if [[ "${SHOULD_BUILD_EXE_USR}" != "no" ]]; then
  90. yarn gulp "vscode-win32-${VSCODE_ARCH}-user-setup"
  91. fi
  92. if [[ "${VSCODE_ARCH}" == "ia32" || "${VSCODE_ARCH}" == "x64" ]]; then
  93. if [[ "${SHOULD_BUILD_MSI}" != "no" ]]; then
  94. . ../build/windows/msi/build.sh
  95. fi
  96. if [[ "${SHOULD_BUILD_MSI_NOUP}" != "no" ]]; then
  97. . ../build/windows/msi/build-updates-disabled.sh
  98. fi
  99. fi
  100. cd ..
  101. if [[ "${SHOULD_BUILD_EXE_SYS}" != "no" ]]; then
  102. echo "Moving System EXE"
  103. mv "vscode\\.build\\win32-${VSCODE_ARCH}\\system-setup\\VSCodeSetup.exe" "assets\\${APP_NAME}Setup-${VSCODE_ARCH}-${RELEASE_VERSION}.exe"
  104. fi
  105. if [[ "${SHOULD_BUILD_EXE_USR}" != "no" ]]; then
  106. echo "Moving User EXE"
  107. mv "vscode\\.build\\win32-${VSCODE_ARCH}\\user-setup\\VSCodeSetup.exe" "assets\\${APP_NAME}UserSetup-${VSCODE_ARCH}-${RELEASE_VERSION}.exe"
  108. fi
  109. if [[ "${VSCODE_ARCH}" == "ia32" || "${VSCODE_ARCH}" == "x64" ]]; then
  110. if [[ "${SHOULD_BUILD_MSI}" != "no" ]]; then
  111. echo "Moving MSI"
  112. mv "build\\windows\\msi\\releasedir\\${APP_NAME}-${VSCODE_ARCH}-${RELEASE_VERSION}.msi" assets/
  113. fi
  114. if [[ "${SHOULD_BUILD_MSI_NOUP}" != "no" ]]; then
  115. echo "Moving MSI with disabled updates"
  116. mv "build\\windows\\msi\\releasedir\\${APP_NAME}-${VSCODE_ARCH}-updates-disabled-${RELEASE_VERSION}.msi" assets/
  117. fi
  118. fi
  119. VSCODE_PLATFORM="win32"
  120. else
  121. cd vscode || { echo "'vscode' dir not found"; exit 1; }
  122. if [[ "${SHOULD_BUILD_APPIMAGE}" != "no" && "${VSCODE_ARCH}" != "x64" ]]; then
  123. SHOULD_BUILD_APPIMAGE="no"
  124. fi
  125. if [[ "${SHOULD_BUILD_DEB}" != "no" || "${SHOULD_BUILD_APPIMAGE}" != "no" ]]; then
  126. yarn gulp "vscode-linux-${VSCODE_ARCH}-build-deb"
  127. fi
  128. if [[ "${SHOULD_BUILD_RPM}" != "no" ]]; then
  129. yarn gulp "vscode-linux-${VSCODE_ARCH}-build-rpm"
  130. fi
  131. if [[ "${SHOULD_BUILD_APPIMAGE}" != "no" ]]; then
  132. . ../build/linux/appimage/build.sh
  133. fi
  134. cd ..
  135. if [[ "${CI_BUILD}" == "no" ]]; then
  136. . ./stores/snapcraft/build.sh
  137. if [[ "${SKIP_ASSETS}" == "no" ]]; then
  138. mv stores/snapcraft/build/*.snap assets/
  139. fi
  140. fi
  141. if [[ "${SHOULD_BUILD_TAR}" != "no" ]]; then
  142. echo "Building and moving TAR"
  143. cd "VSCode-linux-${VSCODE_ARCH}"
  144. tar czf "../assets/${APP_NAME}-linux-${VSCODE_ARCH}-${RELEASE_VERSION}.tar.gz" .
  145. cd ..
  146. fi
  147. if [[ "${SHOULD_BUILD_DEB}" != "no" ]]; then
  148. echo "Moving DEB"
  149. mv vscode/.build/linux/deb/*/deb/*.deb assets/
  150. fi
  151. if [[ "${SHOULD_BUILD_RPM}" != "no" ]]; then
  152. echo "Moving RPM"
  153. mv vscode/.build/linux/rpm/*/*.rpm assets/
  154. fi
  155. if [[ "${SHOULD_BUILD_APPIMAGE}" != "no" ]]; then
  156. echo "Moving AppImage"
  157. mv build/linux/appimage/out/*.AppImage* assets/
  158. find assets -name '*.AppImage*' -exec bash -c 'mv $0 ${0/_-_/-}' {} \;
  159. fi
  160. VSCODE_PLATFORM="linux"
  161. fi
  162. if [[ "${SHOULD_BUILD_REH}" != "no" ]]; then
  163. echo "Building and moving REH"
  164. cd "vscode-reh-${VSCODE_PLATFORM}-${VSCODE_ARCH}"
  165. tar czf "../assets/${APP_NAME_LC}-reh-${VSCODE_PLATFORM}-${VSCODE_ARCH}-${RELEASE_VERSION}.tar.gz" .
  166. cd ..
  167. fi
  168. if [[ "${SHOULD_BUILD_REH_WEB}" != "no" ]]; then
  169. echo "Building and moving REH-web"
  170. cd "vscode-reh-web-${VSCODE_PLATFORM}-${VSCODE_ARCH}"
  171. tar czf "../assets/${APP_NAME_LC}-reh-web-${VSCODE_PLATFORM}-${VSCODE_ARCH}-${RELEASE_VERSION}.tar.gz" .
  172. cd ..
  173. fi
  174. cd assets
  175. for FILE in *; do
  176. if [[ -f "${FILE}" ]]; then
  177. sum_file "${FILE}"
  178. fi
  179. done
  180. cd ..