-
Notifications
You must be signed in to change notification settings - Fork 314
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #42 from RobotsAndPencils/enhancement/13-softwareU…
…pdates Enhancement 13: A software update mechanism (step 1 of 3)
- Loading branch information
Showing
7 changed files
with
162 additions
and
3 deletions.
There are no files selected for viewing
This file contains 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
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -29,6 +29,8 @@ DerivedData/ | |
*.ipa | ||
*.dSYM.zip | ||
*.dSYM | ||
Archive/* | ||
Product/* | ||
|
||
## Playgrounds | ||
timeline.xctimeline | ||
|
This file contains 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
This file contains 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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,8 @@ | ||
<?xml version="1.0" encoding="UTF-8"?> | ||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> | ||
<plist version="1.0"> | ||
<dict> | ||
<key>method</key> | ||
<string>developer-id</string> | ||
</dict> | ||
</plist> |
This file contains 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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,20 @@ | ||
#!/bin/sh | ||
# | ||
# Increment build number | ||
# | ||
# This will get the latest build number from git tags, add 1, then set it in the Info.plist. | ||
# Assumes that build numbers are monotonically increasing positive integers, across version numbers. | ||
# Tags must be named v$version_numberb$build_number, e.g. v1.2.3b456 | ||
|
||
infoplist_file="$(pwd)/Xcodes/Resources/Info.plist" | ||
|
||
# Get latest tag hash matching pattern | ||
hash=$(git rev-list --tags="v" --max-count=1) | ||
# Get latest tag at hash that matches the same pattern as a prefix in order to support commits with multiple tags | ||
last_tag=$(git describe --tags --match "v*" "$hash") | ||
# Get build number from last component of tag name | ||
last_build_number=$(echo "$last_tag" | grep -o "b.*" | cut -c 2-) | ||
|
||
build_number=$(($last_build_number + 1)) | ||
|
||
/usr/libexec/PlistBuddy -c "Set :CFBundleVersion $build_number" "${infoplist_file}" |
This file contains 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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,69 @@ | ||
#!/bin/sh | ||
# | ||
# Notarize | ||
# | ||
# Uploads to Apple's notarization service, polls until it completes, staples the ticket to the built app, then creates a new zip. | ||
# | ||
# Requires four arguments: | ||
# - Apple ID username | ||
# - Apple ID app-specific password (store this in your Keychain and use the @keychain:$NAME syntax to prevent your password from being added to your shell history) | ||
# - App Store Connect provider name | ||
# - Path to .app to upload | ||
# | ||
# Assumes that there's a .app beside the .zip with the same name so it can be stapled and re-zipped. | ||
# | ||
# E.g. notarize.sh "test@example.com" "@keychain:altool" MyOrg Xcodes.zip | ||
# | ||
# https://developer.apple.com/documentation/xcode/notarizing_macos_software_before_distribution/customizing_the_notarization_workflow | ||
# Adapted from https://github.com/keybase/client/blob/46f5df0aa64ff19198ba7b044bbb7cd907c0be9f/packaging/desktop/package_darwin.sh | ||
|
||
username="$1" | ||
password="$2" | ||
asc_provider="$3" | ||
file="$4" | ||
|
||
echo "Uploading to notarization service" | ||
|
||
uuid=$(xcrun altool \ | ||
--notarize-app \ | ||
--primary-bundle-id "com.robotsandpencils.XcodesApp.zip" \ | ||
--username "$username" \ | ||
--password "$password" \ | ||
--asc-provider "$asc_provider" \ | ||
--file "$file" 2>&1 | \ | ||
grep 'RequestUUID' | \ | ||
awk '{ print $3 }') | ||
|
||
echo "Successfully uploaded to notarization service, polling for result: $uuid" | ||
|
||
sleep 15 | ||
while : | ||
do | ||
fullstatus=$(xcrun altool \ | ||
--notarization-info "$uuid" \ | ||
--username "$username" \ | ||
--password "$password" \ | ||
--asc-provider "$asc_provider" 2>&1) | ||
status=$(echo "$fullstatus" | grep 'Status\:' | awk '{ print $2 }') | ||
if [ "$status" = "success" ]; then | ||
echo "Notarization success" | ||
exit 0 | ||
elif [ "$status" = "in" ]; then | ||
echo "Notarization still in progress, sleeping for 15 seconds and trying again" | ||
sleep 15 | ||
else | ||
echo "Notarization failed, full status below" | ||
echo "$fullstatus" | ||
exit 1 | ||
fi | ||
done | ||
|
||
# Remove .zip | ||
rm $file | ||
|
||
# Staple ticket to .app | ||
app_path="$(basename -s ".zip" "$file").app" | ||
xcrun stapler staple "$app_path" | ||
|
||
# Zip the stapled app for distribution | ||
zip -r "$file" "$app_path" |
This file contains 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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,24 @@ | ||
#!/bin/bash | ||
# | ||
# Package release | ||
# | ||
# This will build and archive the app and then compress it in a .zip file at Product/Xcodes.zip | ||
# You must already have all required code signing assets installed on your computer | ||
|
||
PROJECT_NAME=Xcodes | ||
PROJECT_DIR=$(pwd)/$PROJECT_NAME/Resources | ||
SCRIPTS_DIR=$(pwd)/Scripts | ||
INFOPLIST_FILE="Info.plist" | ||
|
||
# Ensure a clean build | ||
rm -rf Archive/* | ||
rm -rf Product/* | ||
xcodebuild clean -project $PROJECT_NAME.xcodeproj -configuration Release -alltargets | ||
|
||
# Archive the app and export for release distribution | ||
xcodebuild archive -project $PROJECT_NAME.xcodeproj -scheme $PROJECT_NAME -archivePath Archive/$PROJECT_NAME.xcarchive | ||
xcodebuild -archivePath Archive/$PROJECT_NAME.xcarchive -exportArchive -exportPath Product/$PROJECT_NAME -exportOptionsPlist "${SCRIPTS_DIR}/export_options.plist" | ||
cp -r "Product/$PROJECT_NAME/$PROJECT_NAME.app" "Product/$PROJECT_NAME.app" | ||
|
||
# Create a ZIP archive suitable for altool. | ||
/usr/bin/ditto -c -k --keepParent "Product/$PROJECT_NAME.app" "Product/$PROJECT_NAME.zip" |
This file contains 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