diff --git a/buildbox/.gitignore b/buildbox/.gitignore new file mode 100644 index 0000000000..9387f5c0d1 --- /dev/null +++ b/buildbox/.gitignore @@ -0,0 +1,2 @@ +transient-data + diff --git a/buildbox/build-telegram.sh b/buildbox/build-telegram.sh new file mode 100644 index 0000000000..6c164e57c1 --- /dev/null +++ b/buildbox/build-telegram.sh @@ -0,0 +1,53 @@ +#!/bin/sh + +set -e +set -x + +BUILDBOX_DIR="buildbox" + +mkdir -p "$BUILDBOX_DIR/transient-data" + +BUILD_CONFIGURATION="$1" + +if [ "$BUILD_CONFIGURATION" == "hockeyapp" ]; then + CODESIGNING_SUBPATH="transient-data/codesigning" +elif [ "$BUILD_CONFIGURATION" == "appstore" ]; then + CODESIGNING_SUBPATH="transient-data/codesigning" +elif [ "$BUILD_CONFIGURATION" == "verify" ]; then + CODESIGNING_SUBPATH="fake-codesigning" +else + echo "Unknown configuration $1" + exit 1 +fi + +if [ ! -d "$BUILDBOX_DIR/$CODESIGNING_SUBPATH" ]; then + echo "$BUILDBOX_DIR/$CODESIGNING_SUBPATH does not exist" + exit 1 +fi + +tar czf "$BUILDBOX_DIR/transient-data/source.tar.gz" --exclude "$BUILDBOX_DIR" . + +VM_BASE_NAME="macos10_14_3_Xcode10_1" + +SNAPSHOT_ID=$(prlctl snapshot-list "$VM_BASE_NAME" | grep -Eo '\{(\d|[a-f]|-)*\}' | tr '\n' '\0') + +if [ -z "$SNAPSHOT_ID" ]; then + echo "$VM_BASE_NAME is required to have one snapshot" + exit 1 +fi + +VM_NAME="$VM_BASE_NAME-$(openssl rand -hex 10)" + +prlctl clone "$VM_BASE_NAME" --name "$VM_NAME" +prlctl snapshot-switch "$VM_NAME" -i "$SNAPSHOT_ID" + +VM_IP=$(prlctl exec "$VM_NAME" "ifconfig | grep inet | grep broadcast | grep -Eo '([0-9]{1,3}\.){3}[0-9]{1,3}' | head -1 | tr '\n' '\0'") + +scp -pr "$BUILDBOX_DIR/$CODESIGNING_SUBPATH" telegram@"$VM_IP":codesigning_data +scp -pr "$BUILDBOX_DIR/transient-data/telegram-ios-shared" telegram@"$VM_IP":telegram-ios-shared +scp -pr "$BUILDBOX_DIR/guest-build-telegram.sh" "$BUILDBOX_DIR/transient-data/source.tar.gz" telegram@"$VM_IP": + +ssh telegram@"$VM_IP" -o ServerAliveInterval=60 -t "bash -l guest-build-telegram.sh $BUILD_CONFIGURATION" + +#prlctl stop "$VM_NAME" --kill +#prlctl delete "$VM_NAME" diff --git a/buildbox/fake-codesigning/certs/SelfSigned.p12 b/buildbox/fake-codesigning/certs/SelfSigned.p12 new file mode 100644 index 0000000000..aa2097875b Binary files /dev/null and b/buildbox/fake-codesigning/certs/SelfSigned.p12 differ diff --git a/buildbox/fake-codesigning/profiles/self_17a6dde8-0db2-42b4-9215-d8544da24da1.mobileprovision b/buildbox/fake-codesigning/profiles/self_17a6dde8-0db2-42b4-9215-d8544da24da1.mobileprovision new file mode 100644 index 0000000000..1aa18b4714 Binary files /dev/null and b/buildbox/fake-codesigning/profiles/self_17a6dde8-0db2-42b4-9215-d8544da24da1.mobileprovision differ diff --git a/buildbox/fake-codesigning/profiles/self_38e2d395-3b03-4327-b13e-5a81d77a417f.mobileprovision b/buildbox/fake-codesigning/profiles/self_38e2d395-3b03-4327-b13e-5a81d77a417f.mobileprovision new file mode 100644 index 0000000000..fd919b2eaf Binary files /dev/null and b/buildbox/fake-codesigning/profiles/self_38e2d395-3b03-4327-b13e-5a81d77a417f.mobileprovision differ diff --git a/buildbox/fake-codesigning/profiles/self_66d9e1ed-89b0-43a9-81dc-c5db42768deb.mobileprovision b/buildbox/fake-codesigning/profiles/self_66d9e1ed-89b0-43a9-81dc-c5db42768deb.mobileprovision new file mode 100644 index 0000000000..9c07924826 Binary files /dev/null and b/buildbox/fake-codesigning/profiles/self_66d9e1ed-89b0-43a9-81dc-c5db42768deb.mobileprovision differ diff --git a/buildbox/fake-codesigning/profiles/self_a064880e-5214-4456-96f3-3beab43c8a49.mobileprovision b/buildbox/fake-codesigning/profiles/self_a064880e-5214-4456-96f3-3beab43c8a49.mobileprovision new file mode 100644 index 0000000000..e51dbf5f7a Binary files /dev/null and b/buildbox/fake-codesigning/profiles/self_a064880e-5214-4456-96f3-3beab43c8a49.mobileprovision differ diff --git a/buildbox/fake-codesigning/profiles/self_c7ce0e4f-4a34-4f37-9bdf-d93d7e67f935.mobileprovision b/buildbox/fake-codesigning/profiles/self_c7ce0e4f-4a34-4f37-9bdf-d93d7e67f935.mobileprovision new file mode 100644 index 0000000000..6fbbd2bde9 Binary files /dev/null and b/buildbox/fake-codesigning/profiles/self_c7ce0e4f-4a34-4f37-9bdf-d93d7e67f935.mobileprovision differ diff --git a/buildbox/fake-codesigning/profiles/self_d5420e53-0e9a-4745-ab22-1dc7f0f8f0e6.mobileprovision b/buildbox/fake-codesigning/profiles/self_d5420e53-0e9a-4745-ab22-1dc7f0f8f0e6.mobileprovision new file mode 100644 index 0000000000..86b7d0a3f8 Binary files /dev/null and b/buildbox/fake-codesigning/profiles/self_d5420e53-0e9a-4745-ab22-1dc7f0f8f0e6.mobileprovision differ diff --git a/buildbox/fake-codesigning/profiles/self_f5d6daf2-b88a-4de9-846a-bc207ea9b8dd.mobileprovision b/buildbox/fake-codesigning/profiles/self_f5d6daf2-b88a-4de9-846a-bc207ea9b8dd.mobileprovision new file mode 100644 index 0000000000..ffa8bb22b6 Binary files /dev/null and b/buildbox/fake-codesigning/profiles/self_f5d6daf2-b88a-4de9-846a-bc207ea9b8dd.mobileprovision differ diff --git a/buildbox/fake-codesigning/profiles/self_fd2bced7-6353-4f44-8022-979f48e73c04.mobileprovision b/buildbox/fake-codesigning/profiles/self_fd2bced7-6353-4f44-8022-979f48e73c04.mobileprovision new file mode 100644 index 0000000000..e2e7954016 Binary files /dev/null and b/buildbox/fake-codesigning/profiles/self_fd2bced7-6353-4f44-8022-979f48e73c04.mobileprovision differ diff --git a/buildbox/guest-build-telegram.sh b/buildbox/guest-build-telegram.sh new file mode 100644 index 0000000000..11542dd0fa --- /dev/null +++ b/buildbox/guest-build-telegram.sh @@ -0,0 +1,43 @@ +#!/bin/sh + +if [ "$1" == "hockeyapp" ]; then + FASTLANE_BUILD_CONFIGURATION="internalhockeyapp" +elif [ "$1" == "appstore" ]; then + FASTLANE_BUILD_CONFIGURATION="testflight_llc" +elif [ "$1" == "verify" ]; then + FASTLANE_BUILD_CONFIGURATION="testflight_llc" +else + echo "Unknown configuration $1" + exit 1 +fi + +security unlock-keychain -p telegram + +CERTS_PATH="codesigning_data/certs" +for f in $(ls "$CERTS_PATH"); do + fastlane run import_certificate "certificate_path:$CERTS_PATH/$f" keychain_name:login keychain_password:telegram log_output:true +done + +mkdir -p "$HOME/Library/MobileDevice/Provisioning Profiles" + +PROFILES_PATH="codesigning_data/profiles" +for f in $(ls "$PROFILES_PATH"); do + PROFILE_PATH="$PROFILES_PATH/$f" + uuid=`grep UUID -A1 -a "$PROFILE_PATH" | grep -io "[-A-F0-9]\{36\}"` + cp "$PROFILE_PATH" "$HOME/Library/MobileDevice/Provisioning Profiles/$uuid.mobileprovision" +done + +SOURCE_PATH="source" + +if [ -d "$SOURCE_PATH" ]; then + echo "$SOURCE_PATH must not exist" + exit 1 +fi + +mkdir -p "$SOURCE_PATH" + +echo "Unpacking files..." +tar -xzf "source.tar.gz" -C "$SOURCE_PATH" + +cd "$SOURCE_PATH" +fastlane "$FASTLANE_BUILD_CONFIGURATION"