Created
March 2, 2021 21:11
-
-
Save bistole/d76519d90c65b9c7b12cfd2b5097c1aa to your computer and use it in GitHub Desktop.
archive, notarize and stapler
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/bin/sh | |
CODE_BASE=/path/to/Storyboard | |
SCRIPT_PATH=$(dirname "$0") | |
DEPLOY_ROOT_PATH="${SCRIPT_PATH}/.." | |
LOG_PATH="${DEPLOY_ROOT_PATH}/logs" | |
BUILD_PATH="${DEPLOY_ROOT_PATH}/build/macos" | |
VERSION= | |
STATUS= | |
REQUEST_UUID= | |
NOTARIZE_LOG= | |
# parepare | |
mkdir -p ${BUILD_PATH} ${LOG_PATH} | |
# parse args | |
while [[ $# -gt 0 ]] | |
do | |
key="$1" | |
case $key in | |
-v|--version) | |
VERSION="$2" | |
shift # past argument | |
shift # past value | |
;; | |
*) # unknown | |
shift # past argument | |
esac | |
done | |
if [ -z "$VERSION" ]; then | |
read -p 'No version is specified, please enter one:' ver | |
VERSION=${ver} | |
fi | |
# cleanup | |
rm -f "${LOG_PATH}/macos-build-${VERSION}-00?.log" | |
rm -f "${BUILD_PATH}/$VERSION/Storyboard_temporary.zip" | |
# archive | |
echo Archiving... | |
xcodebuild -workspace "$CODE_BASE/macos/Runner.xcworkspace" \ | |
-scheme Runner clean archive -configuration release \ | |
-archivePath "${BUILD_PATH}/archive" archive | |
# export | |
echo Exporting... | |
xcodebuild -exportArchive -archivePath "${BUILD_PATH}/archive.xcarchive" \ | |
-exportOptionsPlist "${CODE_BASE}/macos/Runner/ExportOptions.plist" \ | |
-exportPath "${BUILD_PATH}/${VERSION}" | |
# zip | |
echo Zipping... | |
/usr/bin/ditto -c -k --keepParent "${BUILD_PATH}/$VERSION/Storyboard.app" \ | |
"${BUILD_PATH}/$VERSION/Storyboard_temporary.zip" | |
# notarize | |
echo Uploading... | |
xcrun altool --notarize-app \ | |
--primary-bundle-id "com.laterhorse.storyboard.zip" \ | |
--username "[email protected]" \ | |
--password "@keychain:storyboard.notarize.password" \ | |
--file "${BUILD_PATH}/$VERSION/Storyboard.zip" 2>/dev/null \ | |
| tee "${LOG_PATH}/macos-build-${VERSION}-000.log" | |
REQUEST_UUID=`grep RequestUUID ${LOG_PATH}/macos-build-${VERSION}-000.log | awk '{print $3}'` | |
if [ -z $REQUEST_UUID ]; then | |
echo "Failed to upload app to notarize." | |
exit 0 | |
fi | |
echo REQUEST UUID is "$REQUEST_UUID" | |
# check status | |
echo Checking progress... | |
while [ -z "$STATUS" ] || [ "$STATUS" = 'in progress' ]; | |
do | |
xcrun altool --notarization-history 0 \ | |
--username "[email protected]" \ | |
--password "@keychain:storyboard.notarize.password" 2>/dev/null \ | |
> "${LOG_PATH}/macos-build-${VERSION}-001.log" | |
STATUS=`grep $REQUEST_UUID ${LOG_PATH}/macos-build-${VERSION}-001.log | awk '{print $5" "$6}'` | |
if [ -z "$STATUS" ] || [ "$STATUS" = 'in progress' ]; then | |
echo "Waiting for notarized, sleep 5 sec..." | |
sleep 5 | |
fi | |
done | |
# echo "BEFORE CHECK: $STATUS" | |
STATUS=`grep $REQUEST_UUID ${LOG_PATH}/macos-build-${VERSION}-001.log | awk '{print $5}'` | |
# echo "AFTER CHECK: $STATUS" | |
CHECK_INFO() { | |
xcrun altool --notarization-info $REQUEST_UUID \ | |
--username "[email protected]" \ | |
--password "@keychain:storyboard.notarize.password" 2>/dev/null \ | |
| tee "${LOG_PATH}/macos-build-${VERSION}-002.log" | |
NOTARIZE_LOG=`grep LogFileURL ${LOG_PATH}/macos-build-${VERSION}-002.log | awk '{print $2}'` | |
curl -o "${LOG_PATH}/macos-build-${VERSION}-003.log" $NOTARIZE_LOG \ | |
2>/dev/null | |
ISSUES=`cat ${LOG_PATH}/macos-build-${VERSION}-003.log | jq '.issues'` | |
if [ -z $ISSUES ] || [ $ISSUES = null ]; then | |
echo No issues found | |
else | |
echo "Check following issues:" | |
echo $ISSUES | jq . | |
fi | |
} | |
# not succeed | |
if [[ $STATUS != "success" ]]; then | |
echo "Failed to notarize app. :(" | |
CHECK_INFO | |
exit 0; | |
fi | |
# succeed | |
echo "App was notarized!!" | |
CHECK_INFO | |
# remove upload zip | |
rm -f "${BUILD_PATH}/$VERSION/Storyboard_temporary.zip" | |
# stapler | |
echo "Stapler..." | |
xcrun stapler staple "${BUILD_PATH}/$VERSION/Storyboard.app" 2>/dev/null |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment