1
1
#! /bin/sh -ex
2
2
3
+ EMAIL=" $1 "
4
+ ASC_PROVIDER=" $2 "
5
+ if [[ " $EMAIL " == " " || " $ASC_PROVIDER " == " " ]]; then
6
+ echo " Usage ./continuous-build.sh \" email\" \" asc_provider\" . Run \` xcrun altool --list-providers -u email -p password\` to get potential asc_provider."
7
+ exit 1
8
+ fi
9
+
3
10
CHANNEL=" continuous"
4
11
5
12
PRODUCT_NAME=" GitUp"
@@ -16,31 +23,56 @@ xcodebuild archive -scheme "Application" -archivePath "../build/$PRODUCT_NAME.xc
16
23
xcodebuild -exportArchive -exportOptionsPlist " Export-Options.plist" -archivePath " ../build/$PRODUCT_NAME .xcarchive" -exportPath " ../build/$PRODUCT_NAME "
17
24
popd
18
25
26
+ FULL_PRODUCT_NAME=" $PRODUCT_NAME .app"
27
+ PRODUCT_PATH=" ` pwd` /build/$PRODUCT_NAME /$FULL_PRODUCT_NAME " # Must be absolute path
28
+ ARCHIVE_NAME=" $PRODUCT_NAME .zip"
29
+ ARCHIVE_PATH=" build/$ARCHIVE_NAME "
30
+
31
+ # #### Notarize zip file
32
+
33
+ ditto -c -k --keepParent " $PRODUCT_PATH " " $ARCHIVE_PATH "
34
+
35
+ UUID=` xcrun altool --notarize-app --primary-bundle-id " co.gitup.mac.zip" -u $EMAIL -p " @keychain:password" --asc-provider $ASC_PROVIDER --file $ARCHIVE_PATH | grep " RequestUUID = " | sed ' s/^.*= //' `
36
+
37
+ if [ " $UUID " == " " ]; then
38
+ echo " No request UUID found"
39
+ exit 1
40
+ fi
41
+
42
+ while true ; do
43
+ sleep 60
44
+ STATUS_CODE=` xcrun altool --notarization-info $UUID -u " $EMAIL " -p " @keychain:password" | grep " Status Code" | sed ' s/^.*: //' | xargs`
45
+ if [ " $STATUS_CODE " == " 0" ]; then
46
+ echo " Notarization Success! - $STATUS_CODE "
47
+ break
48
+ fi
49
+ echo " Not notarized yet - $STATUS_CODE "
50
+ done
51
+
52
+ # #### Staple app and regenerate zip
53
+
54
+ xcrun stapler staple " $PRODUCT_PATH "
55
+
56
+ ditto -c -k --keepParent " $PRODUCT_PATH " " $ARCHIVE_PATH "
57
+
19
58
# #### Tag build
20
59
21
60
git tag -f " b$VERSION "
22
61
git push -f origin " b$VERSION "
23
62
24
63
# #### Upload to S3 and update Appcast
25
64
26
- FULL_PRODUCT_NAME=" $PRODUCT_NAME .app"
27
- PRODUCT_PATH=" ` pwd` /build/$PRODUCT_NAME /$FULL_PRODUCT_NAME " # Must be absolute path
28
65
INFO_PLIST_PATH=" $PRODUCT_PATH /Contents/Info.plist"
29
66
VERSION_ID=` defaults read " $INFO_PLIST_PATH " " CFBundleVersion" `
30
67
VERSION_STRING=` defaults read " $INFO_PLIST_PATH " " CFBundleShortVersionString" `
31
68
MIN_OS=` defaults read " $INFO_PLIST_PATH " " LSMinimumSystemVersion" `
32
69
33
- ARCHIVE_NAME=" $PRODUCT_NAME .zip"
34
70
BACKUP_ARCHIVE_NAME=" $PRODUCT_NAME -$VERSION_ID .zip"
35
71
APPCAST_URL=" https://s3-us-west-2.amazonaws.com/gitup-builds/$CHANNEL /$APPCAST_NAME "
36
72
ARCHIVE_URL=" https://s3-us-west-2.amazonaws.com/gitup-builds/$CHANNEL /$ARCHIVE_NAME "
37
73
BACKUP_ARCHIVE_URL=" https://s3-us-west-2.amazonaws.com/gitup-builds/$CHANNEL /$BACKUP_ARCHIVE_NAME "
38
-
39
- ARCHIVE_PATH=" build/$ARCHIVE_NAME "
40
74
APPCAST_PATH=" GitUp/SparkleAppcast.xml"
41
75
42
- ditto -c -k --keepParent " $PRODUCT_PATH " " $ARCHIVE_PATH "
43
-
44
76
ARCHIVE_SIZE=` stat -f " %z" " $ARCHIVE_PATH " `
45
77
46
78
EDITED_APPCAST_PATH=" build/appcast.xml"
@@ -49,3 +81,5 @@ perl -p -e "s|__APPCAST_TITLE__|$PRODUCT_NAME|g;s|__APPCAST_URL__|$APPCAST_URL|g
49
81
aws s3 cp " $ARCHIVE_PATH " " s3://gitup-builds/$CHANNEL /$BACKUP_ARCHIVE_NAME "
50
82
aws s3 cp " s3://gitup-builds/$CHANNEL /$BACKUP_ARCHIVE_NAME " " s3://gitup-builds/$CHANNEL /$ARCHIVE_NAME "
51
83
aws s3 cp " $EDITED_APPCAST_PATH " " s3://gitup-builds/$CHANNEL /$APPCAST_NAME "
84
+
85
+ osascript -e ' display notification "Successfully completed continuous build" with title "GitUp Script" sound name "Hero"'
0 commit comments