1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980 |
- #!/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"
|