* Use license file from gnu.org Downloaded from: https://www.gnu.org/licenses/gpl-3.0.txt * Add missing final newline * Fix link * Fix shellcheck warnings * Move donation header one level up * Fix typos * Stop mixing tabs and spaces * Trim trailing whitespace
81 lines
2.5 KiB
Bash
Executable File
81 lines
2.5 KiB
Bash
Executable File
#!/bin/bash
|
|
# Inspired by
|
|
# https://localazy.com/blog/how-to-automatically-sign-macos-apps-using-github-actions
|
|
# https://forum.qt.io/topic/96652/how-to-notarize-qt-application-on-macos/18
|
|
|
|
# Get the following variables from the MacOS-pack.yaml:
|
|
# APP_NAME
|
|
# APPLE_DEV_IDENTITY
|
|
# APPLE_DEV_USER
|
|
# APPLE_DEV_PASS
|
|
|
|
# For the Community (if no Apple Developer ID available)
|
|
if [[ "${APPLE_DEV_IDENTITY}" == "" ]]; then
|
|
echo "WARNING: No credentials for signing found"
|
|
echo "WARNING: dmg package won't be signed and notarized"
|
|
echo "--> Start packaging process"
|
|
"$(brew --prefix qt5)/bin/macdeployqt" "${APP_NAME}.app" -dmg
|
|
echo "--> Update dmg package links"
|
|
"./${HELPERS_SCRIPTS_PATH}/update_package.sh"
|
|
exit 0
|
|
fi
|
|
|
|
echo "--> Start application signing process"
|
|
codesign --sign "${APPLE_DEV_IDENTITY}" --verbose --deep "${APP_NAME}.app"
|
|
|
|
echo "--> Start packaging process"
|
|
"$(brew --prefix qt5)/bin/macdeployqt" "${APP_NAME}.app" -dmg -sign-for-notarization="${APPLE_DEV_IDENTITY}"
|
|
|
|
echo "--> Update dmg package links"
|
|
"./${HELPERS_SCRIPTS_PATH}/update_package.sh"
|
|
|
|
echo "--> Start dmg signing process"
|
|
codesign --sign "${APPLE_DEV_IDENTITY}" --verbose --deep "${APP_NAME}.dmg"
|
|
|
|
echo "--> Start Notarization process"
|
|
response=$(xcrun altool -t osx -f "${APP_NAME}.dmg" --primary-bundle-id "org.namecheap.${APP_NAME}" --notarize-app -u "${APPLE_DEV_USER}" -p "${APPLE_DEV_PASS}")
|
|
requestUUID=$(echo "${response}" | tr ' ' '\n' | tail -1)
|
|
|
|
for ((ATTEMPT=5; ATTEMPT>=1; ATTEMPT--))
|
|
do
|
|
echo "--> Checking notarization status"
|
|
statusCheckResponse=$(xcrun altool --notarization-info "${requestUUID}" -u "${APPLE_DEV_USER}" -p "${APPLE_DEV_PASS}")
|
|
|
|
isSuccess=$(echo "${statusCheckResponse}" | grep "success")
|
|
isFailure=$(echo "${statusCheckResponse}" | grep "invalid")
|
|
|
|
if [[ "${isSuccess}" != "" ]]; then
|
|
echo "Notarization done!"
|
|
xcrun stapler staple "${APP_NAME}.dmg"
|
|
EXIT_CODE=$?
|
|
if [ ${EXIT_CODE} -ne 0 ]; then
|
|
echo "Stapler failed!"
|
|
exit ${EXIT_CODE}
|
|
fi
|
|
echo "Stapler done!"
|
|
break
|
|
fi
|
|
if [[ "${isFailure}" != "" ]]; then
|
|
echo "${statusCheckResponse}"
|
|
echo "Notarization failed"
|
|
exit 1
|
|
fi
|
|
|
|
echo "Notarization not finished yet, sleep 2m then check again..."
|
|
for num in {1..12}
|
|
do
|
|
sleep 10
|
|
echo "Elapsed: ${num}0 sec"
|
|
done
|
|
done
|
|
|
|
if [[ "${ATTEMPT}" == 0 ]]; then
|
|
export NOTARIZATION_CHECK="false"
|
|
echo "::warning Notarization check failed"
|
|
else
|
|
export NOTARIZATION_CHECK="true"
|
|
fi
|
|
|
|
echo "--> Start verify signing process"
|
|
codesign -dv --verbose=4 "${APP_NAME}.dmg"
|