From 716e6115d5fc39e7883d6da60ac4bf39b8eb6e47 Mon Sep 17 00:00:00 2001 From: ps2builder <120440767+ps2builder@users.noreply.github.com> Date: Mon, 12 Dec 2022 23:51:26 -0600 Subject: [PATCH 01/23] Try using Spaceship to create bundle ids. --- fastlane/Fastfile | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/fastlane/Fastfile b/fastlane/Fastfile index 17a1bc97ce..ec03db9e8f 100644 --- a/fastlane/Fastfile +++ b/fastlane/Fastfile @@ -152,6 +152,12 @@ platform :ios do key_content: "#{FASTLANE_KEY}" ) + Spaceship::ConnectAPI::BundleId.create(name: "Status Widget", identifier: "com.#{TEAMID}.loopkit.Loop.statuswidget") + Spaceship::ConnectAPI::BundleId.create(name: "WatchKitExtension", identifier: "com.#{TEAMID}.loopkit.Loop.LoopWatch.watchkitextension") + Spaceship::ConnectAPI::BundleId.create(name: "Loop Watch", identifier: "com.#{TEAMID}.loopkit.Loop.LoopWatch") + Spaceship::ConnectAPI::BundleId.create(name: "Loop-Intent-Extension", identifier: "com.#{TEAMID}.loopkit.Loop.Loop-Intent-Extension") + Spaceship::ConnectAPI::BundleId.create(name: "SmallStatusWidget", identifier: "com.#{TEAMID}.loopkit.Loop.SmallStatusWidget") + match( type: "appstore", force: true, From e6139a85996d6cace1f752211b947662777c8783 Mon Sep 17 00:00:00 2001 From: ps2builder <120440767+ps2builder@users.noreply.github.com> Date: Tue, 13 Dec 2022 00:15:34 -0600 Subject: [PATCH 02/23] Update Fastfile --- fastlane/Fastfile | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/fastlane/Fastfile b/fastlane/Fastfile index ec03db9e8f..9591631b3d 100644 --- a/fastlane/Fastfile +++ b/fastlane/Fastfile @@ -157,6 +157,11 @@ platform :ios do Spaceship::ConnectAPI::BundleId.create(name: "Loop Watch", identifier: "com.#{TEAMID}.loopkit.Loop.LoopWatch") Spaceship::ConnectAPI::BundleId.create(name: "Loop-Intent-Extension", identifier: "com.#{TEAMID}.loopkit.Loop.Loop-Intent-Extension") Spaceship::ConnectAPI::BundleId.create(name: "SmallStatusWidget", identifier: "com.#{TEAMID}.loopkit.Loop.SmallStatusWidget") + + app_group = "group.com.#{TEAMID}.loopkit.LoopGroup" + bundle_id = Spaceship::ConnectAPI::BundleId.find("com.#{TEAMID}.loopkit.Loop.Loop-Intent-Extension") + bundle_id.create_capability(Spaceship::ConnectAPI::BundleIdCapability::Type::APP_GROUPS) + match( type: "appstore", From 6584ce7b1fdb816c7e5c905289e3a699f8e2b680 Mon Sep 17 00:00:00 2001 From: ps2builder <120440767+ps2builder@users.noreply.github.com> Date: Tue, 13 Dec 2022 00:19:50 -0600 Subject: [PATCH 03/23] Update Fastfile --- fastlane/Fastfile | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/fastlane/Fastfile b/fastlane/Fastfile index 9591631b3d..1823f5df9e 100644 --- a/fastlane/Fastfile +++ b/fastlane/Fastfile @@ -152,15 +152,16 @@ platform :ios do key_content: "#{FASTLANE_KEY}" ) + + bundle_id = Spaceship::ConnectAPI::BundleId.find("com.#{TEAMID}.loopkit.Loop.Loop-Intent-Extension") || + Spaceship::ConnectAPI::BundleId.create(name: "Loop-Intent-Extension", identifier: "com.#{TEAMID}.loopkit.Loop.Loop-Intent-Extension") + bundle_id.create_capability(Spaceship::ConnectAPI::BundleIdCapability::Type::APP_GROUPS) + Spaceship::ConnectAPI::BundleId.create(name: "Status Widget", identifier: "com.#{TEAMID}.loopkit.Loop.statuswidget") Spaceship::ConnectAPI::BundleId.create(name: "WatchKitExtension", identifier: "com.#{TEAMID}.loopkit.Loop.LoopWatch.watchkitextension") Spaceship::ConnectAPI::BundleId.create(name: "Loop Watch", identifier: "com.#{TEAMID}.loopkit.Loop.LoopWatch") - Spaceship::ConnectAPI::BundleId.create(name: "Loop-Intent-Extension", identifier: "com.#{TEAMID}.loopkit.Loop.Loop-Intent-Extension") Spaceship::ConnectAPI::BundleId.create(name: "SmallStatusWidget", identifier: "com.#{TEAMID}.loopkit.Loop.SmallStatusWidget") - app_group = "group.com.#{TEAMID}.loopkit.LoopGroup" - bundle_id = Spaceship::ConnectAPI::BundleId.find("com.#{TEAMID}.loopkit.Loop.Loop-Intent-Extension") - bundle_id.create_capability(Spaceship::ConnectAPI::BundleIdCapability::Type::APP_GROUPS) match( From 3baaa8628ca735d9262941751419b62fc25910da Mon Sep 17 00:00:00 2001 From: ps2builder <120440767+ps2builder@users.noreply.github.com> Date: Tue, 13 Dec 2022 00:29:35 -0600 Subject: [PATCH 04/23] Update Fastfile --- fastlane/Fastfile | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/fastlane/Fastfile b/fastlane/Fastfile index 1823f5df9e..0bc993850d 100644 --- a/fastlane/Fastfile +++ b/fastlane/Fastfile @@ -157,12 +157,17 @@ platform :ios do Spaceship::ConnectAPI::BundleId.create(name: "Loop-Intent-Extension", identifier: "com.#{TEAMID}.loopkit.Loop.Loop-Intent-Extension") bundle_id.create_capability(Spaceship::ConnectAPI::BundleIdCapability::Type::APP_GROUPS) - Spaceship::ConnectAPI::BundleId.create(name: "Status Widget", identifier: "com.#{TEAMID}.loopkit.Loop.statuswidget") - Spaceship::ConnectAPI::BundleId.create(name: "WatchKitExtension", identifier: "com.#{TEAMID}.loopkit.Loop.LoopWatch.watchkitextension") - Spaceship::ConnectAPI::BundleId.create(name: "Loop Watch", identifier: "com.#{TEAMID}.loopkit.Loop.LoopWatch") - Spaceship::ConnectAPI::BundleId.create(name: "SmallStatusWidget", identifier: "com.#{TEAMID}.loopkit.Loop.SmallStatusWidget") - + bundle_id = Spaceship::ConnectAPI::BundleId.find("com.#{TEAMID}.loopkit.Loop.statuswidget") || + Spaceship::ConnectAPI::BundleId.create(name: "Status Widget", identifier: "com.#{TEAMID}.loopkit.Loop.statuswidget") + + bundle_id = Spaceship::ConnectAPI::BundleId.find("com.#{TEAMID}.loopkit.Loop.LoopWatch.watchkitextension") || + Spaceship::ConnectAPI::BundleId.create(name: "WatchKitExtension", identifier: "com.#{TEAMID}.loopkit.Loop.LoopWatch.watchkitextension") + bundle_id = Spaceship::ConnectAPI::BundleId.find("com.#{TEAMID}.loopkit.Loop.LoopWatch") || + Spaceship::ConnectAPI::BundleId.create(name: "Loop Watch", identifier: "com.#{TEAMID}.loopkit.Loop.LoopWatch") + + bundle_id = Spaceship::ConnectAPI::BundleId.find("com.#{TEAMID}.loopkit.Loop.SmallStatusWidget") || + Spaceship::ConnectAPI::BundleId.create(name: "SmallStatusWidget", identifier: "com.#{TEAMID}.loopkit.Loop.SmallStatusWidget") match( type: "appstore", From 61031ae8723efad1b8d763904412a87a31fdb323 Mon Sep 17 00:00:00 2001 From: ps2builder <120440767+ps2builder@users.noreply.github.com> Date: Tue, 13 Dec 2022 00:35:24 -0600 Subject: [PATCH 05/23] Update Fastfile --- fastlane/Fastfile | 2 ++ 1 file changed, 2 insertions(+) diff --git a/fastlane/Fastfile b/fastlane/Fastfile index 0bc993850d..305b50a93d 100644 --- a/fastlane/Fastfile +++ b/fastlane/Fastfile @@ -159,6 +159,7 @@ platform :ios do bundle_id = Spaceship::ConnectAPI::BundleId.find("com.#{TEAMID}.loopkit.Loop.statuswidget") || Spaceship::ConnectAPI::BundleId.create(name: "Status Widget", identifier: "com.#{TEAMID}.loopkit.Loop.statuswidget") + bundle_id.create_capability(Spaceship::ConnectAPI::BundleIdCapability::Type::APP_GROUPS) bundle_id = Spaceship::ConnectAPI::BundleId.find("com.#{TEAMID}.loopkit.Loop.LoopWatch.watchkitextension") || Spaceship::ConnectAPI::BundleId.create(name: "WatchKitExtension", identifier: "com.#{TEAMID}.loopkit.Loop.LoopWatch.watchkitextension") @@ -168,6 +169,7 @@ platform :ios do bundle_id = Spaceship::ConnectAPI::BundleId.find("com.#{TEAMID}.loopkit.Loop.SmallStatusWidget") || Spaceship::ConnectAPI::BundleId.create(name: "SmallStatusWidget", identifier: "com.#{TEAMID}.loopkit.Loop.SmallStatusWidget") + bundle_id.create_capability(Spaceship::ConnectAPI::BundleIdCapability::Type::APP_GROUPS) match( type: "appstore", From c0ccb19d7a804475c35f942f4b8e0a9e77c3ddde Mon Sep 17 00:00:00 2001 From: Build Tester Date: Tue, 13 Dec 2022 09:28:15 -0600 Subject: [PATCH 06/23] Add provisioning --- .github/workflows/create_certs.yml | 30 ------------- G7SensorKit | 2 +- fastlane/Fastfile | 68 +++++++++++++++++++++--------- fastlane/Matchfile | 1 + fastlane/testflight.md | 48 +++++++++++++-------- 5 files changed, 80 insertions(+), 69 deletions(-) delete mode 100644 .github/workflows/create_certs.yml diff --git a/.github/workflows/create_certs.yml b/.github/workflows/create_certs.yml deleted file mode 100644 index 4c81119403..0000000000 --- a/.github/workflows/create_certs.yml +++ /dev/null @@ -1,30 +0,0 @@ -name: Generate Certificates -on: - workflow_dispatch: - -jobs: - build: - runs-on: macos-12 - steps: - # Uncomment to manually select latest Xcode if needed - #- name: Select Latest Xcode - # run: "sudo xcode-select --switch /Applications/Xcode_13.0.app/Contents/Developer" - - # Checks-out the repo - - name: Checkout Repo - uses: actions/checkout@v2 - - # Patch Fastlane Match to not print tables - - name: Patch Match Tables - run: find /usr/local/lib/ruby/gems -name table_printer.rb | xargs sed -i "" "/puts(Terminal::Table.new(params))/d" - - # Create or update certificates for app - - name: Fastlane Create/Update Certificates - run: fastlane certs - env: - TEAMID: ${{ secrets.TEAMID }} - GH_PAT: ${{ secrets.GH_PAT }} - MATCH_PASSWORD: ${{ secrets.MATCH_PASSWORD }} - FASTLANE_KEY_ID: ${{ secrets.FASTLANE_KEY_ID }} - FASTLANE_ISSUER_ID: ${{ secrets.FASTLANE_ISSUER_ID }} - FASTLANE_KEY: ${{ secrets.FASTLANE_KEY }} diff --git a/G7SensorKit b/G7SensorKit index 27c84efbdf..11d9ce9fd5 160000 --- a/G7SensorKit +++ b/G7SensorKit @@ -1 +1 @@ -Subproject commit 27c84efbdf3a4aa99431e89ef96fdcfa6ad99e53 +Subproject commit 11d9ce9fd5daa6bf311e7dfb8a7e34e7e3ea7bc5 diff --git a/fastlane/Fastfile b/fastlane/Fastfile index 305b50a93d..368146534c 100644 --- a/fastlane/Fastfile +++ b/fastlane/Fastfile @@ -63,11 +63,23 @@ platform :ios do "com.#{TEAMID}.loopkit.Loop.SmallStatusWidget" ] ) + + previous_build_number = latest_testflight_build_number( + app_identifier: "com.#{TEAMID}.loopkit.Loop", + api_key: api_key, + ) + + current_build_number = previous_build_number + 1 + + increment_build_number( + xcodeproj: "#{GITHUB_WORKSPACE}/Loop/Loop.xcodeproj", + build_number: current_build_number + ) mapping = Actions.lane_context[ SharedValues::MATCH_PROVISIONING_PROFILE_MAPPING ] - + update_code_signing_settings( path: "#{GITHUB_WORKSPACE}/Loop/Loop.xcodeproj", profile_name: mapping["com.#{TEAMID}.loopkit.Loop"], @@ -80,7 +92,7 @@ platform :ios do code_sign_identity: "iPhone Distribution", targets: ["LoopCore", "LoopCore-watchOS", "LoopUI"] ) - + update_code_signing_settings( path: "#{GITHUB_WORKSPACE}/Loop/Loop.xcodeproj", profile_name: mapping["com.#{TEAMID}.loopkit.Loop.statuswidget"], @@ -140,9 +152,9 @@ platform :ios do skip_waiting_for_build_processing: true, ) end - - desc "Create/Update Certs" - lane :certs do + + desc "Provision Identifiers and Certificates" + lane :provision do setup_ci if ENV['CI'] ENV["MATCH_READONLY"] = false.to_s @@ -151,26 +163,40 @@ platform :ios do issuer_id: "#{FASTLANE_ISSUER_ID}", key_content: "#{FASTLANE_KEY}" ) - - - bundle_id = Spaceship::ConnectAPI::BundleId.find("com.#{TEAMID}.loopkit.Loop.Loop-Intent-Extension") || - Spaceship::ConnectAPI::BundleId.create(name: "Loop-Intent-Extension", identifier: "com.#{TEAMID}.loopkit.Loop.Loop-Intent-Extension") - bundle_id.create_capability(Spaceship::ConnectAPI::BundleIdCapability::Type::APP_GROUPS) - bundle_id = Spaceship::ConnectAPI::BundleId.find("com.#{TEAMID}.loopkit.Loop.statuswidget") || - Spaceship::ConnectAPI::BundleId.create(name: "Status Widget", identifier: "com.#{TEAMID}.loopkit.Loop.statuswidget") - bundle_id.create_capability(Spaceship::ConnectAPI::BundleIdCapability::Type::APP_GROUPS) + def configure_bundle_id(name, identifier, capabilities) + bundle_id = Spaceship::ConnectAPI::BundleId.find(name) || Spaceship::ConnectAPI::BundleId.create(name: name, identifier: identifier) + capabilities.each { |capability| + bundle_id.create_capability(capability) + } + end - bundle_id = Spaceship::ConnectAPI::BundleId.find("com.#{TEAMID}.loopkit.Loop.LoopWatch.watchkitextension") || - Spaceship::ConnectAPI::BundleId.create(name: "WatchKitExtension", identifier: "com.#{TEAMID}.loopkit.Loop.LoopWatch.watchkitextension") + configure_bundle_id("Loop", "com.#{TEAMID}.loopkit.Loop", [ + Spaceship::ConnectAPI::BundleIdCapability::Type::APP_GROUPS, + Spaceship::ConnectAPI::BundleIdCapability::Type::HEALTHKIT, + Spaceship::ConnectAPI::BundleIdCapability::Type::PUSH_NOTIFICATIONS, + Spaceship::ConnectAPI::BundleIdCapability::Type::SIRIKIT + ]) - bundle_id = Spaceship::ConnectAPI::BundleId.find("com.#{TEAMID}.loopkit.Loop.LoopWatch") || - Spaceship::ConnectAPI::BundleId.create(name: "Loop Watch", identifier: "com.#{TEAMID}.loopkit.Loop.LoopWatch") - - bundle_id = Spaceship::ConnectAPI::BundleId.find("com.#{TEAMID}.loopkit.Loop.SmallStatusWidget") || - Spaceship::ConnectAPI::BundleId.create(name: "SmallStatusWidget", identifier: "com.#{TEAMID}.loopkit.Loop.SmallStatusWidget") - bundle_id.create_capability(Spaceship::ConnectAPI::BundleIdCapability::Type::APP_GROUPS) + configure_bundle_id("Loop Intent Extension", "com.#{TEAMID}.loopkit.Loop.Loop-Intent-Extension", [ + Spaceship::ConnectAPI::BundleIdCapability::Type::APP_GROUPS + ]) + + configure_bundle_id("Loop Status Extension", "com.#{TEAMID}.loopkit.Loop.statuswidget", [ + Spaceship::ConnectAPI::BundleIdCapability::Type::APP_GROUPS + ]) + configure_bundle_id("WatchApp", "com.#{TEAMID}.loopkit.Loop.LoopWatch", []) + + configure_bundle_id("WatchApp Extension", "com.#{TEAMID}.loopkit.Loop.LoopWatch.watchkitextension", [ + Spaceship::ConnectAPI::BundleIdCapability::Type::HEALTHKIT, + Spaceship::ConnectAPI::BundleIdCapability::Type::SIRIKIT + ]) + + configure_bundle_id("SmallStatusWidget", "com.#{TEAMID}.loopkit.Loop.SmallStatusWidget", [ + Spaceship::ConnectAPI::BundleIdCapability::Type::APP_GROUPS + ]) + match( type: "appstore", force: true, diff --git a/fastlane/Matchfile b/fastlane/Matchfile index fd7d086b12..0892d1d54b 100644 --- a/fastlane/Matchfile +++ b/fastlane/Matchfile @@ -1,3 +1,4 @@ + GITHUB_REPOSITORY_OWNER ||= ENV["GITHUB_REPOSITORY_OWNER"] git_url("https://github.com/#{GITHUB_REPOSITORY_OWNER}/Match-Secrets.git") diff --git a/fastlane/testflight.md b/fastlane/testflight.md index 6539a4f88f..23d2f28707 100644 --- a/fastlane/testflight.md +++ b/fastlane/testflight.md @@ -10,7 +10,7 @@ You don't need much! * A paid Apple Developer account. You may be able to use the free version, but that has not been tested. -## Apple Developer Steps +## Generate App Store Connect API Key 1. Sign in to the [Apple developer portal page](https://developer.apple.com/account/resources/certificates/list) 1. Copy the team id from the upper right of the screen. Record this as your `TEAMID` @@ -18,23 +18,8 @@ You don't need much! 1. Record the key id; this will be used for `FASTLANE_KEY_ID` 1. Record the issuer id; this will be used for `FASTLANE_ISSUER_ID` 1. Download the API key itself, and open it in a text editor. The contents of this file will be used for `FASTLANE_KEY` -1. At the [Certificates, Identifiers & Profiles](https://developer.apple.com/account/resources/identifiers/bundleId/add/bundle) page, add a new app identifier. - * Description: Loop - * The Bundle ID will be explicit and in the form `com.TEAMID.loopkit.Loop`, where `TEAMID` is your the value you recorded above. - * For capabilities, check "App Groups, "HealthKit", "SiriKit", and "Time Sensitive Notifications" - * Then click "Continue", and "Register". -1. Go to the [apps list](https://appstoreconnect.apple.com/apps) on App Store Connect and create a New App. - * Select "iOS" - * Select a name: this will have to be unique, so you may have to try a few different names here, but it will not be the name you see on your phone, so it's not that important. - * Select your primary language - * Select the Bundle Id you created above. - * SKU can be anything; e.g. "123" - * Select "Full Access" - * Click Create - * You do not need to fill out the next form. That is for submitting to the app store. - -## GitHub Configuration Steps +## Setup Github 1. Create a new empty repository titled `Match-Secrets` 1. Fork https://github.com/LoopKit/LoopWorkspace into your account. 1. Create a [new personal access token](https://github.com/settings/tokens/new) @@ -52,6 +37,35 @@ You don't need much! * `GH_PAT` * `MATCH_PASSWORD` - just make up a password for this +## Setup Provisioning for Loop App + +1. Click on the "Actions" tab of your LoopWorkspace repository. +1. Select "" +1. Click "Run Workflow", select your branch, and tap the green button. +1. Wait, and your app should eventually appear on [App Store Connect](https://appstoreconnect.apple.com/apps) +1. For each phone/person you would like to support Loop on, send an invite to using the TestFlight + +## Create Loop App in App Store Connect + +1. Go to the [apps list](https://appstoreconnect.apple.com/apps) on App Store Connect and create a New App. + * Select "iOS" + * Select a name: this will have to be unique, so you may have to try a few different names here, but it will not be the name you see on your phone, so it's not that important. + * Select your primary language + * Select the Bundle Id you created above. + * SKU can be anything; e.g. "123" + * Select "Full Access" + * Click Create + * You do not need to fill out the next form. That is for submitting to the app store. + +1. At the [Certificates, Identifiers & Profiles](https://developer.apple.com/account/resources/identifiers/bundleId/add/bundle) page, add a new app identifier. + * Description: Loop + * The Bundle ID will be explicit and in the form `com.TEAMID.loopkit.Loop`, where `TEAMID` is your the value you recorded above. + * For capabilities, check "App Groups, "HealthKit", "SiriKit", and "Time Sensitive Notifications" + * Then click "Continue", and "Register". + +## GitHub Configuration Steps + + ## Build Loop! 1. Click on the "Actions" tab of your LoopWorkspace repository. From fe41c8e5c931018f8a06434dbf97fcb2670e71c3 Mon Sep 17 00:00:00 2001 From: Pete Schwamb Date: Tue, 13 Dec 2022 09:29:59 -0600 Subject: [PATCH 07/23] Add provisioning --- .github/workflows/add_provisioning.yml | 30 ++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) create mode 100644 .github/workflows/add_provisioning.yml diff --git a/.github/workflows/add_provisioning.yml b/.github/workflows/add_provisioning.yml new file mode 100644 index 0000000000..4ad1fb5c59 --- /dev/null +++ b/.github/workflows/add_provisioning.yml @@ -0,0 +1,30 @@ +name: Add Provisioning +on: + workflow_dispatch: + +jobs: + provision: + runs-on: macos-12 + steps: + # Uncomment to manually select latest Xcode if needed + #- name: Select Latest Xcode + # run: "sudo xcode-select --switch /Applications/Xcode_13.0.app/Contents/Developer" + + # Checks-out the repo + - name: Checkout Repo + uses: actions/checkout@v2 + + # Patch Fastlane Match to not print tables + - name: Patch Match Tables + run: find /usr/local/lib/ruby/gems -name table_printer.rb | xargs sed -i "" "/puts(Terminal::Table.new(params))/d" + + # Create or update certificates for app + - name: Fastlane Provision + run: fastlane provision + env: + TEAMID: ${{ secrets.TEAMID }} + GH_PAT: ${{ secrets.GH_PAT }} + MATCH_PASSWORD: ${{ secrets.MATCH_PASSWORD }} + FASTLANE_KEY_ID: ${{ secrets.FASTLANE_KEY_ID }} + FASTLANE_ISSUER_ID: ${{ secrets.FASTLANE_ISSUER_ID }} + FASTLANE_KEY: ${{ secrets.FASTLANE_KEY }} From a8b3b4b5df245b9eaf29395d2174d5626d4e95ac Mon Sep 17 00:00:00 2001 From: Pete Schwamb Date: Tue, 13 Dec 2022 09:33:32 -0600 Subject: [PATCH 08/23] Change triggers --- .github/workflows/add_provisioning.yml | 2 -- .github/workflows/build_loop.yml | 2 -- 2 files changed, 4 deletions(-) diff --git a/.github/workflows/add_provisioning.yml b/.github/workflows/add_provisioning.yml index 4ad1fb5c59..bec7aae011 100644 --- a/.github/workflows/add_provisioning.yml +++ b/.github/workflows/add_provisioning.yml @@ -1,6 +1,4 @@ name: Add Provisioning -on: - workflow_dispatch: jobs: provision: diff --git a/.github/workflows/build_loop.yml b/.github/workflows/build_loop.yml index 1afc8a9077..6460a0e8c3 100644 --- a/.github/workflows/build_loop.yml +++ b/.github/workflows/build_loop.yml @@ -1,6 +1,4 @@ name: Build Loop -on: - workflow_dispatch: jobs: build: From b88fbef6903913091aedbb877380b3ccc3dd6806 Mon Sep 17 00:00:00 2001 From: Pete Schwamb Date: Tue, 13 Dec 2022 09:36:51 -0600 Subject: [PATCH 09/23] Try fixing name --- .github/workflows/add_provisioning.yml | 1 - .github/workflows/build_loop.yml | 1 - 2 files changed, 2 deletions(-) diff --git a/.github/workflows/add_provisioning.yml b/.github/workflows/add_provisioning.yml index bec7aae011..865a58dc55 100644 --- a/.github/workflows/add_provisioning.yml +++ b/.github/workflows/add_provisioning.yml @@ -1,5 +1,4 @@ name: Add Provisioning - jobs: provision: runs-on: macos-12 diff --git a/.github/workflows/build_loop.yml b/.github/workflows/build_loop.yml index 6460a0e8c3..bd8e27baed 100644 --- a/.github/workflows/build_loop.yml +++ b/.github/workflows/build_loop.yml @@ -1,5 +1,4 @@ name: Build Loop - jobs: build: runs-on: macos-12 From 357bbfac021c3b8f23adb28ee3bf995fe3c69ebc Mon Sep 17 00:00:00 2001 From: Pete Schwamb Date: Tue, 13 Dec 2022 09:37:19 -0600 Subject: [PATCH 10/23] Try fixing name --- .github/workflows/add_provisioning.yml | 3 +++ .github/workflows/build_loop.yml | 3 +++ 2 files changed, 6 insertions(+) diff --git a/.github/workflows/add_provisioning.yml b/.github/workflows/add_provisioning.yml index 865a58dc55..4ad1fb5c59 100644 --- a/.github/workflows/add_provisioning.yml +++ b/.github/workflows/add_provisioning.yml @@ -1,4 +1,7 @@ name: Add Provisioning +on: + workflow_dispatch: + jobs: provision: runs-on: macos-12 diff --git a/.github/workflows/build_loop.yml b/.github/workflows/build_loop.yml index bd8e27baed..1afc8a9077 100644 --- a/.github/workflows/build_loop.yml +++ b/.github/workflows/build_loop.yml @@ -1,4 +1,7 @@ name: Build Loop +on: + workflow_dispatch: + jobs: build: runs-on: macos-12 From b20ce41b52daa81b8eddfbac394b375b2dbe9a54 Mon Sep 17 00:00:00 2001 From: Pete Schwamb Date: Tue, 13 Dec 2022 09:42:58 -0600 Subject: [PATCH 11/23] Split out certs --- .github/workflows/create_certs.yml | 30 ++++++++++++++++++++++++++++++ fastlane/Fastfile | 13 +++++++++++++ fastlane/testflight.md | 7 +++---- 3 files changed, 46 insertions(+), 4 deletions(-) create mode 100644 .github/workflows/create_certs.yml diff --git a/.github/workflows/create_certs.yml b/.github/workflows/create_certs.yml new file mode 100644 index 0000000000..0f71398ea2 --- /dev/null +++ b/.github/workflows/create_certs.yml @@ -0,0 +1,30 @@ +name: Create Certificates +on: + workflow_dispatch: + +jobs: + certificates: + runs-on: macos-12 + steps: + # Uncomment to manually select latest Xcode if needed + #- name: Select Latest Xcode + # run: "sudo xcode-select --switch /Applications/Xcode_13.0.app/Contents/Developer" + + # Checks-out the repo + - name: Checkout Repo + uses: actions/checkout@v2 + + # Patch Fastlane Match to not print tables + - name: Patch Match Tables + run: find /usr/local/lib/ruby/gems -name table_printer.rb | xargs sed -i "" "/puts(Terminal::Table.new(params))/d" + + # Create or update certificates for app + - name: Create Certificates + run: fastlane provision + env: + TEAMID: ${{ secrets.TEAMID }} + GH_PAT: ${{ secrets.GH_PAT }} + MATCH_PASSWORD: ${{ secrets.MATCH_PASSWORD }} + FASTLANE_KEY_ID: ${{ secrets.FASTLANE_KEY_ID }} + FASTLANE_ISSUER_ID: ${{ secrets.FASTLANE_ISSUER_ID }} + FASTLANE_KEY: ${{ secrets.FASTLANE_KEY }} diff --git a/fastlane/Fastfile b/fastlane/Fastfile index 368146534c..63cd0f02d1 100644 --- a/fastlane/Fastfile +++ b/fastlane/Fastfile @@ -197,6 +197,19 @@ platform :ios do Spaceship::ConnectAPI::BundleIdCapability::Type::APP_GROUPS ]) + end + + desc "Provision Certificates" + lane :certs do + setup_ci if ENV['CI'] + ENV["MATCH_READONLY"] = false.to_s + + app_store_connect_api_key( + key_id: "#{FASTLANE_KEY_ID}", + issuer_id: "#{FASTLANE_ISSUER_ID}", + key_content: "#{FASTLANE_KEY}" + ) + match( type: "appstore", force: true, diff --git a/fastlane/testflight.md b/fastlane/testflight.md index 23d2f28707..ec69ff422b 100644 --- a/fastlane/testflight.md +++ b/fastlane/testflight.md @@ -37,13 +37,12 @@ You don't need much! * `GH_PAT` * `MATCH_PASSWORD` - just make up a password for this -## Setup Provisioning for Loop App +## Add Provisioning for Loop App 1. Click on the "Actions" tab of your LoopWorkspace repository. -1. Select "" +1. Select "Add Provisioning" 1. Click "Run Workflow", select your branch, and tap the green button. -1. Wait, and your app should eventually appear on [App Store Connect](https://appstoreconnect.apple.com/apps) -1. For each phone/person you would like to support Loop on, send an invite to using the TestFlight +1. Wait, and you should eventually see a green checkmark indicating the workflow succeeded. ## Create Loop App in App Store Connect From ade426fc4bb3a01cdb6b9ea4a733a2684d8531bf Mon Sep 17 00:00:00 2001 From: Pete Schwamb Date: Tue, 13 Dec 2022 09:48:15 -0600 Subject: [PATCH 12/23] Search by identifier, not name --- fastlane/Fastfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/fastlane/Fastfile b/fastlane/Fastfile index 63cd0f02d1..89e88724e4 100644 --- a/fastlane/Fastfile +++ b/fastlane/Fastfile @@ -165,7 +165,7 @@ platform :ios do ) def configure_bundle_id(name, identifier, capabilities) - bundle_id = Spaceship::ConnectAPI::BundleId.find(name) || Spaceship::ConnectAPI::BundleId.create(name: name, identifier: identifier) + bundle_id = Spaceship::ConnectAPI::BundleId.find(identifier) || Spaceship::ConnectAPI::BundleId.create(name: name, identifier: identifier) capabilities.each { |capability| bundle_id.create_capability(capability) } From 466e558f014a6572bc0198a6f412bf004136417b Mon Sep 17 00:00:00 2001 From: Pete Schwamb Date: Tue, 13 Dec 2022 09:58:33 -0600 Subject: [PATCH 13/23] Update docs --- fastlane/testflight.md | 23 +++++++++++++---------- 1 file changed, 13 insertions(+), 10 deletions(-) diff --git a/fastlane/testflight.md b/fastlane/testflight.md index ec69ff422b..e7142afeb1 100644 --- a/fastlane/testflight.md +++ b/fastlane/testflight.md @@ -41,28 +41,31 @@ You don't need much! 1. Click on the "Actions" tab of your LoopWorkspace repository. 1. Select "Add Provisioning" -1. Click "Run Workflow", select your branch, and tap the green button. -1. Wait, and you should eventually see a green checkmark indicating the workflow succeeded. +1. Click "Run Workflow", and tap the green button. +1. Wait, and within a minute or two you should see a green checkmark indicating the workflow succeeded. ## Create Loop App in App Store Connect -1. Go to the [apps list](https://appstoreconnect.apple.com/apps) on App Store Connect and create a New App. +1. Go to the [apps list](https://appstoreconnect.apple.com/apps) on App Store Connect and click the blue "plus" icon to create a New App. * Select "iOS" * Select a name: this will have to be unique, so you may have to try a few different names here, but it will not be the name you see on your phone, so it's not that important. * Select your primary language - * Select the Bundle Id you created above. + * Choose the bundle ID that matches `com.TEAMID.loopkit.Loop`, with TEAMID matching your team id. * SKU can be anything; e.g. "123" * Select "Full Access" * Click Create * You do not need to fill out the next form. That is for submitting to the app store. -1. At the [Certificates, Identifiers & Profiles](https://developer.apple.com/account/resources/identifiers/bundleId/add/bundle) page, add a new app identifier. - * Description: Loop - * The Bundle ID will be explicit and in the form `com.TEAMID.loopkit.Loop`, where `TEAMID` is your the value you recorded above. - * For capabilities, check "App Groups, "HealthKit", "SiriKit", and "Time Sensitive Notifications" - * Then click "Continue", and "Register". +## Create Building Certficates + +1. Go back to the "Actions" tab of your LoopWorkspace repository in github. +1. Select "Create Certificates" +1. Click "Run Workflow", and tap the green button. +1. Wait, and within a minute or two you should see a green checkmark indicating the workflow succeeded. -## GitHub Configuration Steps +## Create App Group + +1. At the [Certificates, Identifiers & Profiles](https://developer.apple.com/account/resources/identifiers/bundleId/add/bundle) page, add a new app identifier. ## Build Loop! From a3092f8435637c3d0cfde0c75df2732a9d77711e Mon Sep 17 00:00:00 2001 From: Pete Schwamb Date: Tue, 13 Dec 2022 10:07:32 -0600 Subject: [PATCH 14/23] provisioning -> identifiers --- .../{add_provisioning.yml => add_identifiers.yml} | 8 ++++---- fastlane/Fastfile | 2 +- fastlane/testflight.md | 9 ++++++--- 3 files changed, 11 insertions(+), 8 deletions(-) rename .github/workflows/{add_provisioning.yml => add_identifiers.yml} (88%) diff --git a/.github/workflows/add_provisioning.yml b/.github/workflows/add_identifiers.yml similarity index 88% rename from .github/workflows/add_provisioning.yml rename to .github/workflows/add_identifiers.yml index 4ad1fb5c59..a20b3cb249 100644 --- a/.github/workflows/add_provisioning.yml +++ b/.github/workflows/add_identifiers.yml @@ -1,9 +1,9 @@ -name: Add Provisioning +name: Add Identifiers on: workflow_dispatch: jobs: - provision: + identifiers: runs-on: macos-12 steps: # Uncomment to manually select latest Xcode if needed @@ -18,9 +18,9 @@ jobs: - name: Patch Match Tables run: find /usr/local/lib/ruby/gems -name table_printer.rb | xargs sed -i "" "/puts(Terminal::Table.new(params))/d" - # Create or update certificates for app + # Create or update identifiers for app - name: Fastlane Provision - run: fastlane provision + run: fastlane identifiers env: TEAMID: ${{ secrets.TEAMID }} GH_PAT: ${{ secrets.GH_PAT }} diff --git a/fastlane/Fastfile b/fastlane/Fastfile index 89e88724e4..c60be1d4da 100644 --- a/fastlane/Fastfile +++ b/fastlane/Fastfile @@ -154,7 +154,7 @@ platform :ios do end desc "Provision Identifiers and Certificates" - lane :provision do + lane :identifiers do setup_ci if ENV['CI'] ENV["MATCH_READONLY"] = false.to_s diff --git a/fastlane/testflight.md b/fastlane/testflight.md index e7142afeb1..06c9eee902 100644 --- a/fastlane/testflight.md +++ b/fastlane/testflight.md @@ -37,10 +37,10 @@ You don't need much! * `GH_PAT` * `MATCH_PASSWORD` - just make up a password for this -## Add Provisioning for Loop App +## Add Identifiers for Loop App 1. Click on the "Actions" tab of your LoopWorkspace repository. -1. Select "Add Provisioning" +1. Select "Add Identifiers" 1. Click "Run Workflow", and tap the green button. 1. Wait, and within a minute or two you should see a green checkmark indicating the workflow succeeded. @@ -65,7 +65,10 @@ You don't need much! ## Create App Group -1. At the [Certificates, Identifiers & Profiles](https://developer.apple.com/account/resources/identifiers/bundleId/add/bundle) page, add a new app identifier. +1. Go to [Register an App Group](https://developer.apple.com/account/resources/identifiers/applicationGroup/add/) on the apple developer site. +1. For Description, use "Loop App Group" +1. For Identifier, enter "group.com.TEAMID.loopkit.LoopGroup", subsituting your team id for `TEAMID` +1. Click "Continue" and then "Register" ## Build Loop! From 6ef04249a6d648415518d4f4aaea6b9f374822e6 Mon Sep 17 00:00:00 2001 From: Pete Schwamb Date: Tue, 13 Dec 2022 10:15:36 -0600 Subject: [PATCH 15/23] App group adding --- fastlane/Fastfile | 2 +- fastlane/testflight.md | 30 +++++++++++++++++++++++------- 2 files changed, 24 insertions(+), 8 deletions(-) diff --git a/fastlane/Fastfile b/fastlane/Fastfile index c60be1d4da..a036301e5c 100644 --- a/fastlane/Fastfile +++ b/fastlane/Fastfile @@ -193,7 +193,7 @@ platform :ios do Spaceship::ConnectAPI::BundleIdCapability::Type::SIRIKIT ]) - configure_bundle_id("SmallStatusWidget", "com.#{TEAMID}.loopkit.Loop.SmallStatusWidget", [ + configure_bundle_id("Small Status Widget", "com.#{TEAMID}.loopkit.Loop.SmallStatusWidget", [ Spaceship::ConnectAPI::BundleIdCapability::Type::APP_GROUPS ]) diff --git a/fastlane/testflight.md b/fastlane/testflight.md index 06c9eee902..c81edcf288 100644 --- a/fastlane/testflight.md +++ b/fastlane/testflight.md @@ -44,6 +44,29 @@ You don't need much! 1. Click "Run Workflow", and tap the green button. 1. Wait, and within a minute or two you should see a green checkmark indicating the workflow succeeded. +## Create App Group + +1. Go to [Register an App Group](https://developer.apple.com/account/resources/identifiers/applicationGroup/add/) on the apple developer site. +1. For Description, use "Loop App Group" +1. For Identifier, enter "group.com.TEAMID.loopkit.LoopGroup", subsituting your team id for `TEAMID` +1. Click "Continue" and then "Register" + +## Add App Group to Bundle Identifiers + +1. Go to [Certificates, Identifiers & Profiles](https://developer.apple.com/account/resources/identifiers/list) on the apple developer site. +1. For each of the following identifiers: + * Loop + * Loop Intent Extension + * Loop Status Extension + * Small Status Widget +1. Click on the identifier's name. +1. On the "App Groups" capabilies, click on the "Configure" button. +1. Select the "Loop App Group" +1. Click "Continue". +1. Click "Save". +1. Click "Confirm". +1. Remember to do this for each of the identifiers above. + ## Create Loop App in App Store Connect 1. Go to the [apps list](https://appstoreconnect.apple.com/apps) on App Store Connect and click the blue "plus" icon to create a New App. @@ -63,13 +86,6 @@ You don't need much! 1. Click "Run Workflow", and tap the green button. 1. Wait, and within a minute or two you should see a green checkmark indicating the workflow succeeded. -## Create App Group - -1. Go to [Register an App Group](https://developer.apple.com/account/resources/identifiers/applicationGroup/add/) on the apple developer site. -1. For Description, use "Loop App Group" -1. For Identifier, enter "group.com.TEAMID.loopkit.LoopGroup", subsituting your team id for `TEAMID` -1. Click "Continue" and then "Register" - ## Build Loop! From 08863440cac7f554dec48bc5ef69c7fd7dc2b040 Mon Sep 17 00:00:00 2001 From: Pete Schwamb Date: Tue, 13 Dec 2022 10:16:34 -0600 Subject: [PATCH 16/23] Intent identifiers list --- fastlane/testflight.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/fastlane/testflight.md b/fastlane/testflight.md index c81edcf288..ef717e5089 100644 --- a/fastlane/testflight.md +++ b/fastlane/testflight.md @@ -55,10 +55,10 @@ You don't need much! 1. Go to [Certificates, Identifiers & Profiles](https://developer.apple.com/account/resources/identifiers/list) on the apple developer site. 1. For each of the following identifiers: - * Loop - * Loop Intent Extension - * Loop Status Extension - * Small Status Widget + * Loop + * Loop Intent Extension + * Loop Status Extension + * Small Status Widget 1. Click on the identifier's name. 1. On the "App Groups" capabilies, click on the "Configure" button. 1. Select the "Loop App Group" From f7544dec448330361bca0eaf55d2939d71d4cb06 Mon Sep 17 00:00:00 2001 From: Pete Schwamb Date: Tue, 13 Dec 2022 10:17:38 -0600 Subject: [PATCH 17/23] sublist fixes --- fastlane/testflight.md | 38 +++++++++++++++++++------------------- 1 file changed, 19 insertions(+), 19 deletions(-) diff --git a/fastlane/testflight.md b/fastlane/testflight.md index ef717e5089..a783e06d0c 100644 --- a/fastlane/testflight.md +++ b/fastlane/testflight.md @@ -23,19 +23,19 @@ You don't need much! 1. Create a new empty repository titled `Match-Secrets` 1. Fork https://github.com/LoopKit/LoopWorkspace into your account. 1. Create a [new personal access token](https://github.com/settings/tokens/new) - * Enter a name for your token. Something like "FastLane Access Token". - * 30 days is fine, or you can select longer if you'd like. - * Select the `repo` permission scope. - * Click "Generate token" - * Copy the token and record it. It will be used below as `GH_PAT` + * Enter a name for your token. Something like "FastLane Access Token". + * 30 days is fine, or you can select longer if you'd like. + * Select the `repo` permission scope. + * Click "Generate token" + * Copy the token and record it. It will be used below as `GH_PAT` 1. In the forked LoopWorkspace repo, go to Settings -> Secrets -> Actions 1. For each of the following secrets, tap on "New repository secret", then add the name of the secret, along with the value you recorded for it: - * `TEAMID` - * `FASTLANE_KEY_ID` - * `FASTLANE_ISSUER_ID` - * `FASTLANE_KEY` - * `GH_PAT` - * `MATCH_PASSWORD` - just make up a password for this + * `TEAMID` + * `FASTLANE_KEY_ID` + * `FASTLANE_ISSUER_ID` + * `FASTLANE_KEY` + * `GH_PAT` + * `MATCH_PASSWORD` - just make up a password for this ## Add Identifiers for Loop App @@ -70,14 +70,14 @@ You don't need much! ## Create Loop App in App Store Connect 1. Go to the [apps list](https://appstoreconnect.apple.com/apps) on App Store Connect and click the blue "plus" icon to create a New App. - * Select "iOS" - * Select a name: this will have to be unique, so you may have to try a few different names here, but it will not be the name you see on your phone, so it's not that important. - * Select your primary language - * Choose the bundle ID that matches `com.TEAMID.loopkit.Loop`, with TEAMID matching your team id. - * SKU can be anything; e.g. "123" - * Select "Full Access" - * Click Create - * You do not need to fill out the next form. That is for submitting to the app store. + * Select "iOS" + * Select a name: this will have to be unique, so you may have to try a few different names here, but it will not be the name you see on your phone, so it's not that important. + * Select your primary language + * Choose the bundle ID that matches `com.TEAMID.loopkit.Loop`, with TEAMID matching your team id. + * SKU can be anything; e.g. "123" + * Select "Full Access" + * Click Create + * You do not need to fill out the next form. That is for submitting to the app store. ## Create Building Certficates From c2a18b2c3d9fc33c7f5313ecef958b2ab41b5d1c Mon Sep 17 00:00:00 2001 From: Pete Schwamb Date: Tue, 13 Dec 2022 10:22:24 -0600 Subject: [PATCH 18/23] Fix github action to use correct fastlane lane --- .github/workflows/create_certs.yml | 2 +- fastlane/testflight.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/create_certs.yml b/.github/workflows/create_certs.yml index 0f71398ea2..235fd967fd 100644 --- a/.github/workflows/create_certs.yml +++ b/.github/workflows/create_certs.yml @@ -20,7 +20,7 @@ jobs: # Create or update certificates for app - name: Create Certificates - run: fastlane provision + run: fastlane certs env: TEAMID: ${{ secrets.TEAMID }} GH_PAT: ${{ secrets.GH_PAT }} diff --git a/fastlane/testflight.md b/fastlane/testflight.md index a783e06d0c..df68cfcc97 100644 --- a/fastlane/testflight.md +++ b/fastlane/testflight.md @@ -22,7 +22,7 @@ You don't need much! ## Setup Github 1. Create a new empty repository titled `Match-Secrets` 1. Fork https://github.com/LoopKit/LoopWorkspace into your account. -1. Create a [new personal access token](https://github.com/settings/tokens/new) +1. Create a [new personal access token](https://github.com/settings/tokens/new): * Enter a name for your token. Something like "FastLane Access Token". * 30 days is fine, or you can select longer if you'd like. * Select the `repo` permission scope. From 27bc8d2aad6e0dfb6005d1b00d87c35c87e1ceeb Mon Sep 17 00:00:00 2001 From: Pete Schwamb Date: Tue, 13 Dec 2022 10:32:44 -0600 Subject: [PATCH 19/23] Add time sensitive notifications instructions --- fastlane/testflight.md | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/fastlane/testflight.md b/fastlane/testflight.md index df68cfcc97..a42eb1ba2c 100644 --- a/fastlane/testflight.md +++ b/fastlane/testflight.md @@ -67,6 +67,15 @@ You don't need much! 1. Click "Confirm". 1. Remember to do this for each of the identifiers above. +## Add Time Sensitive Notifications to Loop App ID +1. Go to [Certificates, Identifiers & Profiles](https://developer.apple.com/account/resources/identifiers/list) on the apple developer site. +1. Click on the "Loop" identifier +1. Scroll down to "Time Sensitive Notifications" +1. Tap the check box to enable Time Sensitive Notifications. +1. Click "Save". +1. Click "Confirm". +1. Remember to do this for each of the identifiers above. + ## Create Loop App in App Store Connect 1. Go to the [apps list](https://appstoreconnect.apple.com/apps) on App Store Connect and click the blue "plus" icon to create a New App. From ee5ba6dea1e856b813bcbf48e6341b507094654f Mon Sep 17 00:00:00 2001 From: Pete Schwamb Date: Tue, 13 Dec 2022 10:35:04 -0600 Subject: [PATCH 20/23] Doc tweaks --- fastlane/testflight.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/fastlane/testflight.md b/fastlane/testflight.md index a42eb1ba2c..09fcd929b2 100644 --- a/fastlane/testflight.md +++ b/fastlane/testflight.md @@ -2,12 +2,15 @@ These instructions allow you to build Loop without having access to a Mac. They also allow you to easily install Loop on phones that are not connected to your computer. So you can send builds and updates to those you care for easily, or have an easy to access backup if you run Loop for yourself. You do not need to worry about correct Xcode/Mac versions either. An app built using this method can easily be deployed to newer versions of iOS, as soon as they are available. +The setup steps are somewhat involved, but nearly all are one time steps. Subsequent builds are trivial. + ## Prerequisites. You don't need much! * A github account. The free level comes with plenty of storage and free compute time to build loop, multiple times a week, if you wanted to. * A paid Apple Developer account. You may be able to use the free version, but that has not been tested. +* Some time. Set aside a couple of hours to perform the setup. ## Generate App Store Connect API Key From d9106f25936be082bbe723440bf035e5ad24639c Mon Sep 17 00:00:00 2001 From: Pete Schwamb Date: Tue, 13 Dec 2022 10:36:50 -0600 Subject: [PATCH 21/23] Add links --- fastlane/testflight.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/fastlane/testflight.md b/fastlane/testflight.md index 09fcd929b2..29c5c156e0 100644 --- a/fastlane/testflight.md +++ b/fastlane/testflight.md @@ -8,8 +8,8 @@ The setup steps are somewhat involved, but nearly all are one time steps. Subseq You don't need much! -* A github account. The free level comes with plenty of storage and free compute time to build loop, multiple times a week, if you wanted to. -* A paid Apple Developer account. You may be able to use the free version, but that has not been tested. +* A [github account](https://github.com/signup). The free level comes with plenty of storage and free compute time to build loop, multiple times a week, if you wanted to. +* A paid [Apple Developer account](https://developer.apple.com). You may be able to use the free version, but that has not been tested. * Some time. Set aside a couple of hours to perform the setup. From 3ad75689c5a2ffa690e319523a48f853582ae91d Mon Sep 17 00:00:00 2001 From: Pete Schwamb Date: Tue, 13 Dec 2022 10:42:47 -0600 Subject: [PATCH 22/23] Add instructions about adding users --- fastlane/testflight.md | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/fastlane/testflight.md b/fastlane/testflight.md index 29c5c156e0..ea46362828 100644 --- a/fastlane/testflight.md +++ b/fastlane/testflight.md @@ -104,5 +104,8 @@ You don't need much! 1. Click on the "Actions" tab of your LoopWorkspace repository. 1. Select "Build Loop" 1. Click "Run Workflow", select your branch, and tap the green button. -1. Wait, and your app should eventually appear on [App Store Connect](https://appstoreconnect.apple.com/apps) -1. For each phone/person you would like to support Loop on, send an invite to using the TestFlight \ No newline at end of file +1. You have some time now. Go enjoy a coffee. The build should take about 20-30 minutes. +1. Your app should eventually appear on [App Store Connect](https://appstoreconnect.apple.com/apps) +1. For each phone/person you would like to support Loop on + * Add them in [Users and Access](https://appstoreconnect.apple.com/access/users) on App Store Connect + * Add them to your TestFlight Internal Testing group. From ef0c57530f1191f26d42ac4d75b198c1cf559902 Mon Sep 17 00:00:00 2001 From: Pete Schwamb Date: Tue, 13 Dec 2022 11:10:38 -0600 Subject: [PATCH 23/23] Update to latest G7 plugin --- G7SensorKit | 2 +- fastlane/testflight.md | 1 - 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/G7SensorKit b/G7SensorKit index 11d9ce9fd5..27c84efbdf 160000 --- a/G7SensorKit +++ b/G7SensorKit @@ -1 +1 @@ -Subproject commit 11d9ce9fd5daa6bf311e7dfb8a7e34e7e3ea7bc5 +Subproject commit 27c84efbdf3a4aa99431e89ef96fdcfa6ad99e53 diff --git a/fastlane/testflight.md b/fastlane/testflight.md index ea46362828..e9b79573af 100644 --- a/fastlane/testflight.md +++ b/fastlane/testflight.md @@ -98,7 +98,6 @@ You don't need much! 1. Click "Run Workflow", and tap the green button. 1. Wait, and within a minute or two you should see a green checkmark indicating the workflow succeeded. - ## Build Loop! 1. Click on the "Actions" tab of your LoopWorkspace repository.