Files
flameshot/packaging/macos/sign_qtapp.sh
a1346054 b95e096136 Simple maintenance improvements (#1918)
* 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
2021-09-27 20:33:45 -05:00

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"