Configure to use Browser
Build the Loop App using GitHub¶
Time Estimate (click to open/close)
- If you have never built the Loop app (allow up to one week elapsed time)
- Request and get an Apple Developer Account: 1-2 days
- Create and configure your GitHub account and
repositories
: 1-2 hours - Add
Secrets
(requires Apple Developer Account): 1 hour - Perform the GitHub
Action
steps: 30 minutes to 2 hours
- If you have previously built the Loop app with Xcode you have fewer steps and are probably familiar with some of the concepts
- Expect 1 to 4 hours
Page Summary with Links (click to open/close)
There is a lot of introductory information on this page.
- You can skip some sections but please read this one: Save Your Information
A narrated video is available:
Once you have Apple Developer and GitHub accounts, the steps below are a high-level summary with links to the detailed section of this LoopDocs page.
You can think of the first part as a scavenger hunt where you find or generate and save six Secrets
.
Now it's time to use those Secrets
to build the Loop app
- GitHub:
- Apple:
- GitHub:
- Apple: Set up
Internal TestFlight Group
- Phone: Install the Loop app using the TestFlight app
FAQs (click to open/close)
- Do I need a Mac computer? No. This can be done on any browser, although it will be easier using a computer or tablet than just using a phone.
- Can I do this on my phone? Yes, but the graphics shown on this page are from a computer browser.
- Isn't it hard to build every 90 days? The initial setup and installation take a lot of your focused time. But once you build once, subsequent builds take very little of your time to start the build. The rest is done automatically.
- Can I use this for my child? You, as the adult, can install using TestFlight on your child's phone. The explicit steps are provided at Install on Phone: TestFlight for a Child.
- Can I still use my customizations? Yes. Customize using Browser
- Is there a build video? Yes. How to Build the Loop App With a Web Browser
Tips and Tricks¶
This page contains fully detailed steps including graphics, which makes it incredibly long.
Responding to a user request, step number indicators were added to this page.
- If you do not understand a step, back up a step or substep and review the material again
- If you learn better watching a video, you may find this video useful as an accompaniment to your building journey
Some sections have a Section Summary:
- To view the summary, click on the summary header
- If the summary is all you need, use the
skip forward
symbol () to skip to the next instruction - Or follow the detailed instructions below the summary
An automatic table of contents (TOC) should appear for each page on the right side of your browser (if the browser is "wide" enough). If not, tap on the hamburger menu (upper left) and then this page name to see the TOC.
For sparse instructions, click on the link below:
Make a Secrets
Reference File¶
As you move through this page, there will be a lot of instructions regarding your Secrets
. Please save yourself a lot of agony. Make a Secrets
Reference folder and then create a Secrets
Reference file in it.
You don't need to know anything about the Secrets
or any other steps on this page to do this. Come up with your own names, but make sure you know where you put this.
- Decide on where you want your
Secrets
saved and create a special folder - Open a text-only editor (do not use a Smart Editor, those might change capitalization or formating and ruin your
Secrets
)- Create a blank
Secrets
Reference file using the text-only editor - Tap on the copy icon below to copy the template and paste it into your blank file
- Save the file
- Create a blank
- As you move through the steps on this page, fill in the file
- The
##
characters are used to indicate sections or title (text only file) - The there is a reference pattern for each SECRET, replace that with your SECRET
- The
- In addition to the
Secrets
, this template has places for other pieces of information you may find handy to save in the same file - At the very beginning is a place to indicate the last day you updated the file
MySecretsReferenceFile.txt
## This file updated on: DD MMM YYYY
Information needed to use Browser Build.
The same secrets are used for every app you build.
First some handy username and password information:
## Apple ID username for your Developer account is the associated email:
<your information here>
suggest you use your desired password tool to save the password for this account
## GitHub username
<your information here>
suggest you use your desired password tool to save the password for this account
These are the Six Secrets in alphabetical order - each one shows the expected format.
Delete each prototype as you gather your own secrets.
The letter A indicates an alphanumeric character.
Some may be lower case, some upper case and some numerals.
The FASTLANE_KEY may have additional characters included.
For that one copy the entire key
including -----BEGIN PRIVATE KEY-----
through
-----END PRIVATE KEY-----
## SECRETS BELOW:
FASTLANE_ISSUER_ID
<looks like this>
AAAAAAAA-AAAA-AAAA-AAAA-AAAAAAAAAAAA
FASTLANE_KEY_ID
<looks like this>
AAAAAAAAAA
FASTLANE_KEY
<looks like this>
-----BEGIN PRIVATE KEY-----
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAA
-----END PRIVATE KEY-----
GH_PAT
<looks like this>
ghp_AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
MATCH_PASSWORD
<looks like this>
AnyThingYouWant-sameForEveryRepository
TEAMID
<looks like this>
AAAAAAAAAA
## Repository Names for my Fork:
https://github.com/my-github-username/LoopWorkspace
Add additional apps here if you decide to build any
How-to Video to Build with a Browser¶
In addition to this page, there is a narrated video of each step needed to build using a browser.
Click in the comments for a full index of topics. If you have issues with a part of this page, use the index to advance to the relevant part of the video. Subtitles are in English. You can choose a different language but the automatic translation feature may provide translations that are not completely accurate.
Step 1 of 12¶
Step 1 of 12 is Prerequisites, things you must complete before you start.
Prerequisites¶
Prerequisites to Build the Loop App¶
There are two prerequisites to build the Loop app using GitHub Browser Build
.
- Paid Apple Developer account ($99/year)
- Free GitHub account
Prerequisites to Install Loop¶
To install Loop, you need the free TestFlight app, from the Apple App Store, installed on your Compatible Phone.
Prerequisites to Use Loop¶
To use Loop, you need a Compatible Pump and Compatible CGM. For pumps other than Omnipod DASH, you also need a RileyLink Compatible Device.
New Terms with GitHub Browser Build
¶
You can read details about new terms with GitHub build or skip ahead to Save Your Information.
The GitHub Browser Build
may use new and unfamiliar terms.
Some of these terms have ToolTips, so hover your mouse over those - or review them in the Glossary.
- Some terms in the Glossary are not in alphabetical order. All the
Secrets
discussed on this page, are listed afterSecrets
in the Glossary.
If this summary of terms is confusing, finish reviewing the whole page and then come back.
Actions
: available in your GitHub account to build your app (once you follow the instructions on this page)- With
Loop 3
, the actions:Validate Secrets
,Add Identifiers
,Create Certificates
, andBuild Loop
enable users to build the Loop app from a browser on any computer - If
GitHub Browser Build
Actions are not operating as you expect, check GitHub Status to see if it is GitHub problem.
- With
Secrets
: are required to enable GitHub to build the Loop app using GitHub Actions- Six
Secrets
must be added to your fork of LoopWorkspace - These
Secrets
work for any branch in your fork (main
ordev
, for example) - These
Secrets
can be added to Other Apps configured with the sameGitHub Browser Build
method - For those who feel confident using GitHub, there are optional instructions to configure a free organizational account (for your personal use) that allows you to enter the
Secrets
only once, see Use a GitHub Organization Account, and have them available for every repository in that organization account
- Six
- API
Key
:Application Programming Interface Key
- You obtain and save this key from the Apple Developer website
- Doing this provides 3 of your
Secrets
- It is required to enable your GitHub account to interface with Apple to create your app
Identifiers
: are required to build the Loop app withGitHub Browser Build
(these are automatically generated for you)- Four Identifier Names must be associated with your
App Group
Loop
,Loop Intent Extension
,Loop Status Extension
andSmall Status Widget
- For the dev branch only:
Small Status Widget
was renamedLoop Widget Extension
- Two Identifier Names will exist but do not require that association
WatchApp
andWatchAppExtension
- The
Identifier
screen, hasNAME
andIDENTIFIER
columns- If you previously built with Xcode, the items in the
NAME
column may start withXC
- The items under the
IDENTIFIER
column match the table in AddApp Group
to Identifiers
- If you previously built with Xcode, the items in the
- Four Identifier Names must be associated with your
App Store Connect
: a website available for Apple Developers to review apps build with your Apple Developer account- Once you purchase an Apple Developer annual account, you are an Apple Developer and have access to this site
- Most Loopers will not have an App until using the
GitHub Browser Build
- The instructions walk you through creating and naming your app: Create Loop App in App Store Connect
Save Your Information¶
Everyone needs to read this section!
You need to keep a digital copy of your 6 Secrets
.
- You need to copy and paste those
Secrets
to build the app with a browser - Make sure your editor does not change any characters in your
Secrets
; use a text-only editor like NotePad (PC) or TextEdit (Mac) - Many people add other information to the
Secrets
file for easy reference
Archive Your Information
To complete the steps on this page, you will need a username, email address, and password for Apple and GitHub. You will find, generate or make up six Secrets
as instructed.
- Record this information in a safe place where you can find them
- A digital copy is best for copying and pasting in different locations
Be sure to use a Text-Only editor like NotePad (PC) or TextEdit (Mac) to archive your information.
A Note about Capitalization and Spaces
In places, you use a name like "FastLane API Key
" or "FastLane Access Token
". Please copy from the docs to use those exact names.
The Secrets
that you add use names that are capitalized and use underscore _ instead of spaces. Be precise and careful.
Use a Text-Only Editor
Be sure to use a Text-Only editor like NotePad (PC) or TextEdit (Mac) to archive your information.
If you use a "smart" editor, it may change lower-case letters to upper-case letters at the beginning of a line when you paste items into your archive file.
If even one character is capitalized when it should not be, you will get Errors with Browser Build.
If you use a smart editor to store your FASTLANE_KEY, you are likely to get the mysterious invalid curve name
error.
Step 2 of 12¶
Step 2 of 12 is Save Six
Secrets
.The creation of accounts at Apple and GitHub, if you don't already have them, are not numbered. Using those accounts, there are 5 Substeps for Step 2.
Save Six Secrets
¶
Section Summary (click to open/close)
You require 6 Secrets
(alphanumeric items) to use the GitHub Browser Build
method and if you use the GitHub Browser Build
method to build more than Loop, e.g., Loop Follow
or Loop Caregiver
, you must use the same 6 Secrets
for each app you build with this method.
Each secret is identified with ALL_CAPITAL_LETTER_NAMES
.
- Four
Secrets
are from your Apple Account - One Secret is from your GitHub account
- One Secret is a password you make up and save
- Be sure to save the 6
Secrets
in a text file using a text editor- Do NOT use a smart editor, which might auto-correct and change the case, because these
Secrets
are case-sensitive - Refer back to Save Your Information for more details about smart vs text editors
- Do NOT use a smart editor, which might auto-correct and change the case, because these
To skip the detailed instructions, click on Collect the Four Apple Secrets
You need to save your information digitally, so you can copy and paste. The information is created in one place and used in another. Refer to Configure Secrets
for how the Secrets
are used. In addition to the 6 Secrets
, other important information to keep handy (like usernames and passwords) is listed below. Be sure to keep this file secure.
Created at developer.apple.com
- Email address (this is your username)
- password
- Four items used as
Secrets
TEAMID
FASTLANE_ISSUER_ID
FASTLANE_KEY_ID
FASTLANE_KEY
Created at github.com
- Email address
- password
- username
- Your GitHub repository address will be:
https://github.com/username
- Your LoopWorkspace repository address will be:
https://github.com/username/LoopWorkspace
- One item used as a Secret
- GitHub Personal Access Token (
GH_PAT
)
- GitHub Personal Access Token (
Created yourself
- a password - make one up and save it (
MATCH_PASSWORD
)
Collect the Four Apple Secrets
¶
Section Summary (click to open/close)
You will be saving 4 Secrets
from your Apple Account in this step.
- Sign in to the Apple Developer portal page.
- If you need to accept a new agreement (happens about twice a year), be sure to do so now
- Need help? Look at this section on the update page: Accept Agreements
- Copy the Team ID from the upper right of the screen. Record this as your
TEAMID
. - Go to the App Store Connect interface, click the "Integrations" tab, and create a new key with "Admin" access. Give it the name: "
FastLane API Key
". - Record three more secrets
- Record the issuer id; this will be used for
FASTLANE_ISSUER_ID
. - Record the key id; this will be used for
FASTLANE_KEY_ID
. - Download the
API Key
itself, and open it in a text editor. The contents of this file will be used forFASTLANE_KEY
. Copy the full text, including the "-----BEGIN PRIVATE KEY-----" and "-----END PRIVATE KEY-----" lines.
- Record the issuer id; this will be used for
To skip the detailed instructions, click on Collect the GH_PAT
Secret
This section provides detailed instructions for the four Secrets
associated with your Apple Developer ID.
Name | Description |
---|---|
TEAMID |
This 10-character identifier is associated with your Apple Developer ID and never changes |
FASTLANE_ISSUER_ID |
The issuer ID is associated with your Apple Developer ID and never changes |
FASTLANE_KEY_ID |
Key ID provided when you create an API Key in App Store Connect; it is associated with the FASTLANE_KEY |
FASTLANE_KEY |
Copy the full key from the text file you downloaded when generating the API Key - Filename has FASTLANE_KEY_ID value embedded in it.Include everything in the file from -----BEGIN PRIVATE KEY----- and ending in -----END PRIVATE KEY----- |
New Apple Developer Account¶
If you have an Apple Developer Account, skip ahead to Find TEAMID
.
If not, you need to purchase one ($99 annual fee). It may take a few days for the account to be enabled.
- LoopDocs has an Apple Developer Program page that explains in detail how to sign up for an account
- This link takes you straight to Apple Developer account to sign up
Substep 2.1 for Step 2¶
Next section, Find
TEAMID
, is Substep 1 out of 5 for Step 2.
Find TEAMID
¶
Sign in to your Apple Developer account at this link: Apple Developer portal page.
- Click
Account
in the top menu bar - If you need to accept a new agreement (happens about twice a year), be sure to do so now
- Need help? Look at this section on the update page: Accept Agreements
-
Click the
Membership Details
icon -
Next to the
Team ID
field, is a 10-character ID number. This is your Apple DeveloperTEAMID
.
Record this for use as TEAMID
in your Secrets
file. You will also need it when you Create App Group.
- Stop a moment and double-check
-
If you get this wrong, you will have errors at the very end, which require you to delete some items and repeat some steps on this page
Do not "type" what you think you see
Copy and paste the
Team ID
from the webpage.TEAMID
must be 10 characters- Avoid typing an
8
when it should be aB
Substep 2.2 for Step 2¶
Next section, Generate
API Key
, is Substep 2 out of 5 for Step 2.
Generate API Key
¶
Paid Apple Developer Account is Required
To generate the API Key
, you must have a paid Apple Developer account.
If you are waiting for Apple to enable your account, you can skip ahead to create a New GitHub Account and Create GitHub Personal Access Token
. You then pause at Configure Secrets
until your Apple account is active.
-
Click this link to open in a new tab:
App Store Connect/Access/Integrations/API
- The top of the display is shown in the graphic below
-
Click the
Integrations
tab as indicated in the graphic above-
If this is your first time here, you will see:
"
Permission is required to access the App Store Connect API. You can request access on behalf of your organization.
"- Click on
Request Access
and follow directions until access is granted
- Click on
-
Once access is granted, click on the
Generate API Key
button
-
-
If you did not get routed through the
permission is required
screens click the blue + sign -
A new
Generate API Key
dialog box will appear as shown in the graphic below
- Enter the name of the key as "
FastLane API Key
" and chooseAdmin
in the access drop-down menu - Confirm the name and that "
Admin
" is selected and then click on the "Generate
" button.
Substep 2.3 for Step 2¶
Next section, Copy
API Key Secrets
, is Substep 3 out of 5 for Step 2. In this Substep you are dealing with 2 of the AppleSecrets
.
Copy API Key Secrets
¶
The Integrations
screen appears again with content similar to the graphic below; the key information is blanked out for security.
Review the graphic and then follow the directions below to save more parameters you will need to Configure Secrets
- A button labeled Copy is always adjacent to the
Issuer ID
above the word Active (this is the same for all keys that you generate with this Apple Developer ID)- Tap on the
Copy
button - this copies theIssuer ID
into your paste buffer - In the file where you are saving information, paste this with the indication that it is for
FASTLANE_ISSUER_ID
- Tap on the
- Hover to the right of the
Key ID
and theCopy Key ID
button shows up- Tap on the
Copy Key ID
button - this copies theKey ID
into your paste buffer - In the file where you are saving information, paste this with the indication that it is for
FASTLANE_KEY_ID
- Tap on the
-
Click on the
Download API Key
button - you will be warned you can only download this once. -
Find your
AuthKey
download in your downloads folder. The name of the file will be "AuthKey_KeyID.p8
" whereKeyID
matches yourFASTLANE_KEY_ID
- Double-click to open it and you will be presented a message asking how you'd like to open it (The message shown is for a Mac - translate these directions to whatever computer you are using)
- Click on "
Choose Application...
" and then select "TextEdit
" (on a Mac, NotePad on a PC, or any text-only editor you prefer)
-
The contents of this file will be used for
FASTLANE_KEY
- Copy the full text, including the "
-----BEGIN PRIVATE KEY-----
" and "-----END PRIVATE KEY-----
" lines- On a Mac, use Cmd+A, then Cmd+C to copy all the contents
- On a PC, use Ctrl+A , then Ctrl+C to copy all the contents
- In the file where you are saving information, paste this with the indication that it is for
FASTLANE_KEY
- Copy the full text, including the "
Do Not Confuse Your Keys¶
API Key
vs APN Key
If you use Remote Commands with Nightscout
, you may notice the Application Programming Interface (API) key has the same type of format as the Apple Push Notification (APN) key. The keys for both of these purposes are p8 keys, but they should not be confused with each other.
The Secrets
for building with GitHub use the API Key
.
The config vars for Nightscout
use the APN Key
.
- If you are using remote commands with
Nightscout
and building withGitHub Browser Build
- Remote Commands Config Vars: make sure you have a config var of
LOOP_PUSH_SERVER_ENVIRONMENT
with a value ofproduction
or remote commands will not work withNightscout
- Remote Commands Config Vars: make sure you have a config var of
- This is true for using
Nightscout
directly or usingLoop Caregiver
Done with Apple Secrets¶
In summary, from this section, you have found or generated the following and saved copies for later use
TEAMID
FASTLANE_ISSUER_ID
FASTLANE_KEY_ID
FASTLANE_KEY
Time for a Break?
This is a good place to pause if you need to. Just note where you are on the page so you can return later.
Collect the GH_PAT
Secret¶
If you already have a GitHub Account, skip ahead to Create GitHub Personal Access Token
.
New GitHub Account¶
If you do not already have a GitHub account, you need to create one. Be sure to record the email, password, and username for your GitHub account.
Decide on a couple of usernames that you will be happy with - this will get embedded into your GitHub URL. Your first choice might not be available, so be prepared with several candidates. Your personal URL will be: https://github.com/username
.
- Click on this link to sign up for a free account: GitHub account signup
- You will need to enter the email you want associated your GitHub account
- You will be asked to enter a password
- You will be asked to enter a username
- You will be asked if you want to receive email, ok to say
N
for no - you still get important account information with that email - Solve the puzzle to prove you're a person
- Check the associated email to get the code and enter the code into github.com to confirm your account
- You should get the Welcome to GitHub screen
- Indicate it is "Just me" on your team and Continue
- Don't check anything on the next screen, just tap
Continue
- Select the
Free
option by selectingContinue for Free
The free level comes with plenty of storage and compute time to build the Loop app.
Substep 2.4 for Step 2¶
Next section, Create
GitHub Personal Access Token
, is Substep 4 out of 5 for Step 2.
Create GitHub Personal Access Token
¶
Section Summary (click to open/close)
Log into your GitHub account to create a personal access token, which you will save as GH_PAT
.
Click to create a new personal access token
:
- Enter a name for your token, use "
FastLane Access Token
" - Change the Expiration selection to
No expiration
- Select the
workflow
permission scope
(repo
will be automatically selected) - Click "Generate token"
- Copy the token and record it. It will be used below as
GH_PAT
To skip the detailed instructions, click on Make up a Password.
You must be logged into your GitHub account before starting this step. If you are continuing, you are already logged in.
- You will be creating a new GitHub
Personal Access Token
and giving it the name "FastLane Access Token
" -
Open this link: https://github.com/settings/tokens/new
- Referring to the graphic
- Note that
Tokens (classic)
is highlighted - Most Looper will use the
classic Token
- If you are a developer who needs to use fine-grained
tokens
, that is fine
- If you are a developer who needs to use fine-grained
- Edit the note box to be
FastLane Access Token
- Note that
- The default Expiration time is 30 days - but you should select
No expiration
(use the drop-down menu to select)- GitHub will show a yellow warning when you do this
- It is ok to ignore the warning
- Add a check beside the
workflow
permission scope - A check will automatically appear in the
repo
scope as well - this is normal - Scroll all the way to the bottom and click
Generate token
(it's a long way, ignore all other settings, do not check anything else)
- Referring to the graphic
-
A new screen appears showing your access token
- Copy the
token
and record it - once you leave this screen you can't see it again - You will use this for
GH_PAT
when you set up your Secrets - You can Regenerate Personal Access Token for
GH_PAT
if you lose it, but then you have to update that in theSecrets
for all repositories using GitHub Build.
- Copy the
Substep 2.5 for Step 2¶
Next section, Make up a Password, is Substep 5 out of 5 for Step 2.
Make up a Password¶
If you have not already made up a password, do it now and record it as MATCH_PASSWORD
.
Step 3 of 12¶
Step 3 of 12 is Prepare your Repositories. This step has 2 Substeps.
Prepare your Repositories¶
Substep 3.1 for Step 3¶
Next section, Create Match-Secrets, is Substep 1 of 2 for Step 3. This is done only one time for a given GitHub username.
Create Match-Secrets¶
Section Summary (click to open/close)
The creation of the Match-Secrets
repository is a common step for all GitHub Browser Builds
; do this step only once. You must be logged into your GitHub account.
Click on the link to create a new empty repository titled Match-Secrets
. It should be private.
Once created, you will not take any direct actions with this repository; it needs to be there for GitHub to use as you progress through the steps.
To skip the detailed instructions, click on Fork LoopWorkspace
Open your github.com URL (this is https://github.com/username
), (username
is the name you chose above).
Create a new private repository - you can either click on the link below or follow the instructions with the first graphic:
- Click on this link: https://github.com/new
or
-
At the top right of the screen, click on the + sign and select
New Repository
This shows you a screen similar to the following graphic which has 3 regions highlighted:
- In
Repository name
, typeMatch-Secrets
(use a hyphen betweenMatch
andSecrets
) - Be sure to check the box
Private
(red circle) to make the repository private - Please confirm you selected the
Match-Secrets
repository as private. - Scroll to the bottom of the page and tap on "
Create repository
"
A screen will appear with a lot of options - do not do anything on this screen.
- Click on your username (as indicated by the red rectangle) to return to your main GitHub URL.
You will not directly interact with your Match-Secrets
repository.
Substep 3.2 for Step 3¶
Next section, Fork LoopWorkspace, is Substep 2 out of 2 for Step 3.
If you are creating an app other than the Loop app, you substitute the appropriate URL for the app you are building.
Fork LoopWorkspace¶
Section Summary (click to open/close)
Fork https://github.com/LoopKit/LoopWorkspace into your account.
To skip the detailed instructions, click on Configure Secrets
Existing Fork
If you already have a fork of LoopWorkspace
, click on Already Have LoopWorkspace to decide what to do. That section provides links to return you to these instructions.
- Open this link https://github.com/LoopKit/LoopWorkspace to open the
LoopWorkspace
repository owned byLoopKit
. - Review the highlighted locations of the graphic below (yours won't look quite like this yet, but the
Fork
button is in the same place) - At the upper right side of the screen, click on the word
Fork
- If you already have a fork, you cannot proceed, see Already Have a LoopWorkspace
-
Now your screen should look like the graphic below
- Your username will be automatically filled in as the owner (
Owner
) LoopWorkspace
is the repository name (Repository Name
)- Leave the selection that says "
Copy the main branch only
" checked - Click on the green
Create fork
button
- Your username will be automatically filled in as the owner (
Successful Fork¶
After creating the fork, your screen should be similar to the next graphic - it will say main
for the branch instead of dev
because this graphic was prepared before the release of Loop 3
. You may or may not see the messages you are told to dismiss in the next two bullets. No worries if you don't see them.
- Near the top right, click on the close button (
x
) to dismiss theSuccessfully fetched
message - In the middle, click on the
Dismiss
button to remove the "Your branch is not protected
" message
Carefully compare your screen to the graphic below paying attention to the highlighted sections.
- Note that your username is now showing
- The comment under your username indicates where the fork came from (that is a clickable link)
- The branch that is selected is
main
- The message says "
This branch is up to date with LoopKit/LoopWorkspace:main
"
Time for a Break?
This is a good place to pause if you need to. Just note where you are on the page so you can return later.
Step 4 of 12¶
Step 4 of 12 is Configure
Secrets
. This step does not have Substeps, however, you must enter all 6SECRETS
.
Feeling confident? Planning to build more than one app? Click to see more.
If you are already feeling overwhelmed - skip this tip.
If you plan to build more that one app, you will making a fork of each repository associated with each app, and then you must add the 6 Secrets
to each repository. It is not hard but it can get tiresome.
There is a way to enter the 6 Secrets
only one time for all your repositories, but this requires setting up a free GitHub organization. This is also not hard, but it modifies some of displays you see on GitHub. If you are interested, refer to Use a GitHub Organization Account
Configure Secrets
¶
Section Summary (click to open/close)
These Secrets
are the same for any repository for which you use GitHub Browser Build
.
- They are added once for a repository and work for all branches of that repository
- They must be added to any other repository, such as
Loop Caregiver
, for which you also useGitHub Browser Build
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_ISSUER_ID
FASTLANE_KEY_ID
FASTLANE_KEY
GH_PAT
MATCH_PASSWORD
To skip the detailed instructions, click on Validate Secrets
.
Branches
and Repositories
- These Secrets are added to your
fork of LoopWorkspace
and work for anybranch
(main
ordev
, for example) - These Secrets must be added, if desired, for Other App
repositories
Prepare to Enter Secrets
¶
Log into GitHub.
-
Return to your forked copy of
LoopWorkspace
- Click on your personal icon at the upper right to see the drop-down menu and select "
Your repositories
"
- Click on your personal icon at the upper right to see the drop-down menu and select "
-
You should see (at least) 2 repositories:
Match-Secrets
andLoopWorkspace
- Click on
LoopWorkspace
to open that repository -
Click on the Settings Icon near the top right of your LoopWorkspace
- If you don't see ⚙️
Settings
, make your browser wider or scroll to the right - If you still don't see ⚙️
Settings
, then you are not on your fork or you need to sign in to your GitHub account -
After you click on ⚙️
Settings
, your screen should look like the graphic below
- If you don't see ⚙️
-
On the left side, find the
Secrets and variables
dropdown and chooseActions
-
After you select
Actions
, your screen should look like the graphic below
-
Enter the Secrets
¶
- Tap on the green button at the top right of your screen labeled
New repository secret
(highlighted above)- A new screen appears as shown in the first graphic below
- Do not do anything until reading the sub-bullets, examining the graphics, and proceeding to the next section where each
Secret
name is provided for you to copy and paste- Under
Name *
, click onYOUR_SECRET_NAME
and paste one of the 6 secret names, as directed in Enter Each Secret - Click inside the
Secret *
box and paste the value for that secret - Once you click on
Add Secret
, the secret will be added - The second graphic below shows
TEAMID
added and ready for save
- Under
Enter Each Secret¶
Enter the name of each Secret
found in Save Your Information and your value for that Secret
.
- Once you save a secret value, you will not be able to view what you entered, so check carefully before you hit
Add Secret
- You can replace the value for any secret later - but you can't view the saved value
- Be especially careful with your
TEAMID
- If
TEAMID
is incorrect, the initialActions
will succeed butBuild Loop
will fail and you will have some clean-up to do
- If
You can copy the names of the Secrets
by hovering to the right of each word below until you see the copy button (). Click on the button to copy the Secret
name and paste it into GitHub where you see YOUR_SECRET_NAME
. This avoids spelling errors.
TEAMID
FASTLANE_ISSUER_ID
FASTLANE_KEY_ID
FASTLANE_KEY
GH_PAT
MATCH_PASSWORD
- For the
FASTLANE_KEY
value, copy the entire contents from-----BEGIN PRIVATE KEY-----
through-----END PRIVATE KEY-----
- For
MATCH_PASSWORD
value - if you did not already make up a password and save it with your otherSecrets
, do it now- The
MATCH_PASSWORD
must be the same for any repository using this method (Other Apps)
- The
Once all six Secrets
have been added to your LoopWorkspace
, your screen should look similar to the graphic below.
- Check that all of your
Secrets
are spelled correctly - If one is misspelled, delete it and add a
New repository secret
with the correct name
Time for a Break?
This is a good place to pause if you need to. Just note where you are on the page so you can return later.
Step 5 of 12¶
Step 5 of 12 is Validate Secrets. This step has 2 Substeps.
Substep 5.1 for Step 5¶
Next section, First Use of Actions Tab, is Substep 1 out of 2 for Step 5. This is done only once for a given repository.
First Use of Actions Tab¶
Near the top middle of your LoopWorkspace
fork is an Actions
tab. This section provides detailed directions to enable Actions
.
Click on the Actions
tab of your LoopWorkspace
repository.
- Your first time, a message appears saying
Workflows aren't being run on this forked repository
as shown in the graphic below -
Tap on the green button that says:
I understand my workflows, go ahead and enable them
The workflows
are now displayed on the left side as shown in the graphic below. (Dismiss the Actions Enabled
message using the X
near the upper right side if it appears).
Substep 5.2 for Step 5¶
Next section, Validate
Secrets
, is Substep 2 out of 2 for Step 5. This should only be needed one time, unless you modify any of yourSecrets
.
Validate Secrets
¶
Section Summary (click to open/close)
This step validates most of your six Secrets
and provides error messages if it detects an issue with one or more.
- Click on the "Actions" tab of your LoopWorkspace repository and enable workflows if needed
- On the left side, select
1. Validate Secrets
. - On the right side, click "Run Workflow", and tap the green
Run workflow
button. - Wait, and within a minute or two you should see a green checkmark indicating the workflow succeeded.
- The workflow will check if the required
Secrets
are added and that they are correctly formatted. If errors are detected, please check the run log for details.
To skip the detailed instructions, click on Add Identifiers
Near the top middle of your LoopWorkspace
fork, click on the Actions
tab.
- If you have never used
Actions
on this repository before, and need instructions (in addition to what GitHub shows), please back up to First use of Actions Tab.
Refer to the graphic below for the numbered steps:
- Click on the
Actions
tab of yourLoopWorkspace
repository - On the left side, click on 1.
Validate Secrets
- On the right side, click
Run Workflow
to show a drop-down menu- You will see your default branch (typically this is
main
) - You can select a different branch, but typically, you run the default
- You will see your default branch (typically this is
-
Tap the green button that says
Run workflow
.
The Validate Secrets
Action should succeed or fail in a few minutes. Do not continue to the next step until this one succeeds.
- If you see the green check () continue to the next section
- If you see the red
X
():- Examine the Error tells how to view the file needed to diagnose your problem.
- Action: Validate Secrets Errors tells you what to search for in the file
- Resolve the error and repeat the Action: Validate Secrets
Step 6 of 12¶
Step 6 of 12 is
Add Identifiers
. This step has no Substeps.This should only be needed one time, unless the developers add or modify an identifier.
For example going from version 3.2.x to version 3.3 or higher requires this to be repeated. There will be clear instructions on to update page when you need to do this.
Add Identifiers
¶
Section Summary (click to open/close)
- Click on the "Actions" tab of your LoopWorkspace repository.
- On the left side, select "2. Add Identifiers".
- On the right side, click "Run Workflow", and tap the green
Run workflow
button. - Wait, and within a minute or two you should see a green checkmark indicating the workflow succeeded.
To skip the detailed instructions, click on Configure Identifiers for Loop.
Refer to the graphic below for the numbered steps:
- Click on the
Actions
tab of yourLoopWorkspace
repository - On the left side, click on 2.
Add Identifiers
- On the right side, click
Run Workflow
to show a drop-down menu- You will see your default branch (typically this is
main
) - You can select a different branch, but typically, you run the default
- You will see your default branch (typically this is
-
Tap the green button that says
Run workflow
.
The Add Identifiers
Action should succeed or fail in a few minutes. Do not continue to the next step until this one succeeds.
- If you see the green check () continue to the next section
- If you see the red
X
():- Examine the Error tells how to view the file needed to diagnose your problem.
- Action: Add Identifiers Errors tells you what to search for in the file
- Resolve the error and repeat the Action: Add Identifiers
Step 7 of 12¶
Step 7 of 12 is Configure Identifiers for Loop. This step has 2 Substeps, some of which may not be required but are numbered so you can check them off.
This should only be needed one time, unless the developers add or modify an identifier.
For example going from version 3.2.x to version 3.3 or higher requires this to be repeated. There will be clear instructions on to update page when you need to do this.
Configure Identifiers for Loop¶
Some steps can be skipped if you previously built the Loop app with a Mac using Xcode.
Please read carefully to avoid confusion.
Substep 7.1 for Step 7¶
Next section, Create
App Group
, is Substep 1 out of 2 for Step 7. This is only required one time and can be skipped if you previously built this app with Xcode.
Create App Group
¶
Section Summary (click to open/close)
If you have already built the Loop app via Xcode using this Apple ID, skip ahead to Previous Xcode Builders.
- Go to Register an
App Group
on the Apple Developer site. - For Description, use "Loop App Group".
- For Identifier, enter "group.com.TEAMID.loopkit.LoopGroup", substituting your team id for
TEAMID
. - Click "Continue" and then "Register".
To skip the detailed instructions, click on Add App Group
to Identifiers
The Loop
App Group already exists if you previously built the Loop app using Xcode with this Apple Developer ID. In that case, skip ahead to Previous Xcode Builders.
If you have never built the Loop app with Xcode using your TEAMID
, you need to create an App Group associated with your TEAMID
.
- Open this link: Register an App Group on the Apple Developer site.
- For
Description
, useLoop App Group
. - For
Identifier
, entergroup.com.TEAMID.loopkit.LoopGroup
, substituting your team id forTEAMID
. - Double-check the spelling - your
TEAMID
must be correct and theLoop
App Group must match the format shown in the previous step- A mistake here means you will not be able to build the Loop app until you fix it
- Click
Continue
and thenRegister
.
Identifiers for the Loop app (3.2.x and before)¶
If you ever built the Loop app using Mac, skip ahead to Previous Xcode Builders.
New Builders¶
Click this link: Certificates, Identifiers & Profiles: Identifiers List
on the Apple Developer site.
If you never built using Xcode, then after the Add Identifiers
Action, you will see the six items under NAME
in the table below with the associated IDENTIFIER
information. Your Developer ID
replaces the TEAMID
in the identifier.
Skip ahead to Table with Name and Identifier for Loop 3
.
Previous Xcode Builders¶
Click this link: Certificates, Identifiers & Profiles: Identifiers List
on the Apple Developer site.
Because you built the Loop app using Xcode, then the NAME
associated with at least the Loop identifier
will appear as XC com.TEAMID.loopkit.Loop
under the NAME
column. Ignore the NAME
column and key off what you see under the IDENTIFIER
column of the table. Only the six listed in the table below need to appear when building Loop 3
.
Table with Name and Identifier for Loop 3
¶
NAME |
IDENTIFIER |
---|---|
Loop |
com.TEAMID.loopkit.Loop |
Loop Intent Extension |
com.TEAMID.loopkit.Loop.Loop-Intent-Extension |
Loop Status Extension |
com.TEAMID.loopkit.Loop.statuswidget |
Small Status Widget |
com.TEAMID.loopkit.Loop.SmallStatusWidget |
WatchApp |
com.TEAMID.loopkit.Loop.LoopWatch |
WatchAppExtension |
com.TEAMID.loopkit.Loop.LoopWatch.watchkitextension |
Loop dev Builders
The name and identifier for "Small Status Widget
" has been renamed to "Loop Widget Extension
". This only affects those using the dev branch until the next release. At that time, this table will be updated.
If you are building with the dev branch, follow the directions at One-Time Changes.
Substep 7.2 for Step 7¶
Next section, Add or Review Configuration for
Loop Identifier
, is Substep 2 out of 2 for Step 7.This should only be needed one time, unless the developers add or modify an identifier.
For example going from version 3.2.x to version 3.3 or higher requires this to be repeated. There will be clear instructions on to update page when you need to do this.
Add or Review Configuration for Loop Identifier
¶
Section Summary (click to open/close)
Note 1 - If you previously built with Xcode, the Names
listed below may be different, but the Identifiers
will match. A table was provided above that lists both Names
and Identifiers
. The Add Identifier Action that you completed above generates 6 identifiers, but only 4 need to be modified as indicated in this step.
Note 2 - Depending on your build history, you may find some of the Identifiers are already configured - and you are just verifying the status; but in other cases, you will need to configure the Identifiers.
- Go to Certificates, Identifiers & Profiles on the Apple Developer site.
- For each of the following identifier names:
Loop
Loop Intent Extension
Loop Status Extension
Small Status Widget
(released code) /Loop Widget Extension
(dev branch)
- Click on the identifier's name.
- On the "App Groups" capabilities, click on the "Configure" button.
- Select the "Loop App Group"
- Click "Continue".
- For the
Loop Identifier
only, you must add a check box next toTime Sensitive Notifications
- This is only required for released code, it is automatically selected for the dev branch
- For the
- Click "Save".
- Click "Confirm".
- Remember to do this for each of the identifiers above.
To skip the detailed instructions, click on Create Loop App in App Store Connect
Find and click on the row for the Loop identifier
on the Certificates, Identifiers & Profiles: Identifiers List page. Look in the IDENTIFIER
column to find com.TEAMID.loopkit.Loop
. The name in the NAME
column may be different than Loop.
NAME |
IDENTIFIER |
---|---|
Loop |
com.TEAMID.loopkit.Loop |
The Edit Your App ID Configuration
screen will open. Take two actions for the Loop identifier
.
- In the
App Services
column, scroll down to theApp Groups
row- Ensure the check box (under the
Capabilities
column) forApp Groups
is checked - (
XC Loop
) - If the wordEdit
shows up underNOTES
, move on to step 2 below - If the word
Configure
shows up, tap on it- This opens the
App Group Assignment
screen - Check the box by
Loop
App Group that uses yourTEAMID
ingroup.com.TEAMID.loopkit.LoopGroup
and thenContinue
- This opens the
- Ensure the check box (under the
-
Continue scrolling down to the
Time Sensitive Notifications
row- Make sure the box next to
Time Sensitive Notifications
is checked as shown in the following graphic - This is only needed for the
Loop
identifier
- Make sure the box next to
-
Now scroll slowly back up to the top of the page. As you go, confirm that each of these is configured with a check mark; if any are missing, click to enable.
Time Sensitive Notifications
Siri
(formerly known asSiriKit
)Push Notifications
HealthKit
App Groups
(enabled withgroup.com.TEAMID.loopkit.LoopGroup
)
If you modified settings for an identifier, the Save
button at the top right will become active. Click on Save
before leaving this page - otherwise, the change does not take effect.
- Tap on
Save
- This opens the
Modify App Capabilities
confirmation screen - Click on
Confirm
If you did not need to make changes, the Save
button will not be active.
- Tap on the
< All Identifiers
button at the top left
The full list of Identifiers should be displayed again.
Add App Group
to Identifiers¶
You will now be checking the status for 3 more identifiers to ensure the App Group
is configured to use the Loop
App Group. You must add or confirm the App Group for these 3 identifiers (for released code):
NAME |
IDENTIFIER |
---|---|
Loop Intent Extension |
com.TEAMID.loopkit.Loop.Loop-Intent-Extension |
Loop Status Extension |
com.TEAMID.loopkit.Loop.statuswidget |
Small Status Widget |
com.TEAMID.loopkit.Loop.SmallStatusWidget |
Double-check when finished with this step
When you think you have completed this step, double check to make sure all 4 Identifiers
listed in the table have the App Group
added.
If not, Create Certificates
will succeed but Build Loop
will fail.
Building dev branch?¶
If you are building the dev branch, the Small Status Widget
was renamed. Look for it and add the App Group to it now.
NAME |
IDENTIFIER |
---|---|
Loop Widget Extension |
com.TEAMID.loopkit.Loop.LoopWidgetExtension |
Back to How-to Instruction for main or dev¶
Find and click on a given identifier row on the Certificates, Identifiers & Profiles: Identifiers List page.
The Edit Your App ID Configuration
screen will open. Take one action for each of these three identifiers.
Looking at the App Services
column, scroll down to the App Groups
row
- Ensure the check box (under the
Capabilities column
) forApp Groups
is checked - If the word
Edit
shows up underNOTES
, return to the identifiers list - If the word
Configure
shows up, tap on it- This opens the
App Group Assignment
screen - Check the box by
Loop App Group
that uses yourTEAMID
ingroup.com.TEAMID.loopkit.LoopGroup
and thenContinue
- This opens the
If you had to modify a given identifier, the Save
button at the top right will become active
- Tap on
Save
- This opens the
Modify App Capabilities confirmation
screen - Click on
Confirm
If you did not need to make changes, the Save
button will not be active.
- Tap on the
< All Identifiers
button at the top left
The full list of Identifiers should be displayed again.
Step 8 of 12¶
Step 8 of 12 is Create Loop App in App Store Connect. This step has two Substeps.
Substep 8.1 is required only one time.
If you are building other apps using this page as a guide, you must complete Substep 8.2 one time for each app.
Substep 8.1 for Step 8¶
Digital Service Act Compliance¶
In order to create an app you need to indicate whether you are a trader or a non-trader. You are a non-trader unless you use the same Developer ID to submit apps for sale.
Even if the graphic below does not match what you see exactly, it should assist in guiding you through the steps.
Open this link: App Store Connect / Apps
; log in if needed.
If you do not see the banner, shown in the top of the graphic below, asking you to Complete Compliance Requirements, you can skip ahead to Create Loop App in App Store Connect.
If you do see the banner, follow the numbered steps in the graphic below:
-
Click on the link that says "Complete Compliance Requirements" to open a new screen shown in the middle of the graphic below
-
Tap on the "Complete Compliance Requirements for Your Name" link to bring up a pop-up shown in the bottom of the graphic below
-
Select the "This is a non-trader provider account" radio button
-
Click Save
You do not need to add a bank account or fill out tax forms if you are only using the App Store to get your own app into TestFlight. You only need to have a paid account with a valid license agreement and have completed this compliance form. Ignore other requests from Apple.
Substep 8.2 for Step 8¶
Create Loop App in App Store Connect¶
Section Summary (click to open/close)
If you have created a Loop app in App Store Connect before, make sure you Remove Apple Vision Pro and then skip ahead to Create Certificates.
- Click on the link apps list to open 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.
Remove Apple Vision Pro from the app you just created.
To skip the detailed instructions, click on Create Certificates.
If you have created a Loop app
in App Store Connect before, skip ahead to Create Certificates.
If you have previously used some kind of remote build, like diawi
or TestFlight
, you may have your Loop in the App Store but can't see it. Don't worry - there are instructions for this case.
-
Open this link:
App Store Connect / Apps
to view your apps; log in if needed.- If you have never added an app to App Store Connect, you will not see the icons inside the red rectangle and should keep going, although some people report the search icon shows up for them
- If you have an app that is not shown, you will see a search icon and the
All Statuses
dropdown. If you get to step 3 and cannot find yourcom.TEAMID.loopkit.Loop
in the Bundle ID drop-down, this means you need to follow Find My Loop.
-
There might be a blue banner present at this time. If not, it will show up after you have at least one app.
- The information banner refers to "iOS Apps on Apple Vision Pro"
- You must wait until you have an app before you can edit the capabilities for the app - this will happen after the next step
-
Click the
Add Apps
button or the blue "plus" icon ( ) and selectNew App
as shown in the graphic below -
The
New App
dialog box opens and should appear similar to the graphic below. Before you fill anything out, make sure yourBundle ID
is available in the dropdown menu (it shows asChoose
in the graphic below). If you do not seecom.TEAMID.loopkit.Loop
, withTEAMID
matching yourTEAMID
in the dropdown menu; back out of this screen and follow the directions in Find My Loop instead.- Select
iOS
. - Enter a name: this will have to be unique
- You could start with
Loop_ABC
whereABC
are your initials - If that is already taken, you can add a number, for example,
Loop_ABC_123
- This name is what you see on the App Store Connect list and in the TestFlight app
- Once installed on your phone, you will see the Loop app with the standard
Loop Logo
- You can Change the App Store Connect Name later if you want
- You could start with
- Select your primary language.
- Choose the
Bundle ID
that matchescom.TEAMID.loopkit.Loop
SKU
can be anything; for example123
.- Select "
Full Access
".
- Select
-
One last check - if the
Bundle ID
has a number other than your actual 10-digitTEAMID
embedded in it, you will be creating an App in the App Store that you cannot use- In this case, do NOT select
Create
- Instead, go back and put the correct value into the
TEAMID
Secret and follow the steps in Delete Identifiers
- In this case, do NOT select
- Click
Create
but do not fill out the next form. That is for submitting to the app store and you will not be doing that.
Remove Apple Vision Pro¶
It is now time to edit the availability of your app on Apple Vision Pro. If you skip this step, you will get an annoying email telling you Apple Vision Pro is not supported by your app.
-
First click to return to the main App Store Connect. In the message section labeled iOS Apps on Apple Vision Pro, click on "Edit Availability", highlighted by the red rectangle in the graphic below.
-
This opens a new screen. By default, all your apps have Apple Vision Pro selected. Tap on the None button and then save to remove this.
-
If you later create a new app, you might need to perform the same task for the new app
You are done with this activity and can close the browser tab. It's time to head back to your GitHub account and Create Certificates
Find My Loop¶
This section is for people who were not able to follow the instructions in the last section because com.TEAMID.loopkit.Loop
, with TEAMID
matching your TEAMID
, was not in the dropdown menu for Bundle ID
.
There are two possible reasons:
- You did not complete Add
App Group
to Identifiers or one of the predecessor steps; review those steps - Your app is already in App Store Connect, but you cannot see it
You may have no memory of ever setting up Loop
in App Store Connect. If you previously used some kind of remote build, like diawi
, your Loop
may be there as a Removed App.
-
Open this link: App Store Connect / Apps, look for the
All Statuses
dropdown indicator, and selectRemoved Apps
-
Click on the App name:
-
Ensure this is the app you want by selecting
App Information
, highlighted on the left side in the graphic below.- Examine its
Bundle ID
(not in view in this graphic) - confirm it is correct. - The format should be:
com.TEAMID.loopkit.Loop
with your TEAMID included
- Examine its
-
Then scroll down to the bottom and choose
Restore App
. -
Make sure
User Access
is set toFull Access
and click onRestore
. -
You are done with this step and ready to Create Certificates
Step 9 of 12¶
Step 9 of 12 is
Create Certificates
. This step has no Substeps.The next section will be required again in the future for these cases:
- When your certificates have expired (after one year) and you need to Renew Certificates
- When the developers have modified the Identifiers; this requires Create Certificates to be run after you successfully run Add Identifiers and update the new Identifiers
Create Certificates
¶
Section Summary (click to open/close)
- Go back to the "Actions" tab of your LoopWorkspace repository in GitHub.
- On the left side, select "3. Create Certificates".
- On the right side, click "Run Workflow", and tap the green
Run workflow
button. - Wait, and within a minute or two you should see a green checkmark indicating the workflow succeeded.
To skip the detailed instructions, click on Build the Loop App
Refer to the graphic below for the numbered steps:
- Click on the "
Actions
" tab of yourLoopWorkspace
repository - On the left side, click on "
Create Certificates
" - On the right side, click "
Run Workflow
" to show a drop-down menu- You will see your default branch (typically
main
) - You can select a different branch, but typically, you run the default
- You will see your default branch (typically
-
Tap the green button that says "
Run workflow
". -
Wait a minute or two for the action to finish
- If this action fails, head over to Action: 3. Create Certificates Errors
- Once you've resolved the error, repeat the Actions Add Identifiers and then
Create Certificates
. (TheAdd Identifiers
might not be required but it is fast and should be done as a matter of routine.)
Step 10 of 12¶
Step 10 of 12 is Build the Loop App. This step has no Substeps.
The next section is repeated every time you need to manually build. With the next release, building can be configured to be automatic, but for now, plan to run this once a month so you always have a fresh build in your TestFlight app.
Build the Loop App¶
Section Summary (click to open/close)
- Click on the "Actions" tab of your LoopWorkspace repository.
- On the left side, select "4. Build Loop".
- On the right side, click "Run Workflow", and tap the green
Run workflow
button. - You have some time now. Go enjoy a coffee. The build should take about 20-30 minutes.
- You should get several emails
- one says the build succeeded (or failed)
- one says TestFlight is ready (typically half-hour after the build succeeds)
- Ignore the one that says you need to fix "issues" in your app. You are not selling the app in the app store; so no action is required. The app you built is for personal use for you or a family member.
- Your app should eventually appear on App Store Connect.
- For each phone/person you would like to support:
- Add them in Users and Access on App Store Connect.
- Add them to your TestFlight Internal Testing group.
To skip the detailed instructions, click on Set Up Users and Access (TestFlight).
Refer to the graphic below for the first four steps:
- Click on the "
Actions
" tab of yourLoopWorkspace
repository. - On the left side, click on "4.
Build Loop
". - On the right side, click "
Run Workflow
" to show a drop-down menu- You will see your default branch (typically
main
) - You can select a different branch, but typically, you run the default
- You will see your default branch (typically
-
Tap the green button that says "
Run workflow
". -
Wait a few minutes to make sure there is not an early failure
- If this action fails, head over to Action: Build Loop Errors
- Once you've resolved the error, it's a good idea to repeat all three steps in this order:
- Add Identifiers
- Create Certificates
- Build Loop
- If the process appears to be happening without an error, go do something else for a while. The build should take about 20-30 minutes.
- You should get several emails
- one says the build succeeded (or failed)
- one says TestFlight is ready (typically half-hour after the build succeeds)
- Ignore the one that says you need to fix "issues" in your app
- Your app should eventually appear on
App Store Connect
.
Apple Email to Ignore¶
You can ignore an email from Apple that there are things you must fix in your app:
- There is no action you need to take - the developers will handle any updates that are required before it affects your ability to build the app
- Other warnings only address issues if you were selling the app in the app store, but it is for your own personal use
Build Failed?¶
Did you get a red X? Head over to the Errors with Browser to page find a solution.
Successful Build¶
Congratulations
If you get the green check mark, your app successfully built. Just a few more steps.
Step 11 of 12¶
Step 11 of 12 is Set Up Users and Access (TestFlight). This step has no Substeps.
The next section is repeated if you need to add a User to your account. For example, you want to add another adult who can install the app on your child's phone or you want a spouse or friend to have a copy of the app on their phone as backup for a trip.
As a developer, you are already included as a user with the Role of Account Holder, Admin.
Set Up Users and Access (TestFlight)¶
Once the first build completes, you will be able to configure TestFlight for the app.
Add Each Users One Time
Once you add a user to have access to your TestFlight for this app, you don't need to do it again - it remains available to them across rebuilds and different versions for that app.
You are configuring a private capability for your family using an Internal Testing group. You need the Apple ID email address for each adult installing from your build. When building for a child, you will use your own Apple ID, not theirs. See TestFlight for a Child.
-
First you need to add the email address(es) to your App Store Connect Access Users list:
- Open this link: Users and Access
- You must provide a role for each person -
Customer Support
is a good choice - Once you have added them here, you'll be able to select them in the
TestFlight
group for your app
- You must provide a role for each person -
- Open this link: Users and Access
-
Open this link: App Store Connect / Apps to view your apps; log in if needed. Then select your Loop app. Click on the
TestFlight
tab then click the blue plus button () next toInternal Testing
to add a group. -
Fill out the name you want for the
Internal Testing
group- Be sure to check the box
Enable automatic distribution
- Click
Create
when done (this can always be modified later)
- Be sure to check the box
-
As soon as you create the group, you'll be asked who should be included
- Click in the box beside each person you want to include
- Each person in this group will get an email each time you update (build again) using the
GitHub Browser Build
method - Click
Add
when you are done - If building for a child, you will send the invitation to yourself because you will install for your child: See TestFlight for a Child
Step 12 of 12¶
Step 12 of 12 is Install on Phone. This step has no Substeps.
The next section is repeated for every phone that you want to install a given build from TestFlight. Because a TestFlight app only last 90 days, you should probably build and install at least every 60 days.
Install on Phone¶
The Install on Phone page walks you through the steps to use the TestFlight app to install the Loop app on a phone.
But wait - there's more.
- Caregivers who help manage a loved-ones diabetes often use other open-source apps that can be built the same way
- When you are done building and installing the Loop app, there are instructions to Build Other Apps with Browser
Extra Steps¶
Most people won't need the information on the rest of this page.
Already Have LoopWorkspace?¶
Some people may already have a copy of LoopWorkspace
.
If your copy is not from LoopKit
, follow the Delete and Start Fresh directions.
If your copy is from LoopKit
:
- Open your
LoopWorkspace
repository (https://github.com/username/LoopWorkspace
) where you use your GitHubusername
in the URL - Review the graphic in the Configure: Successful Fork section
- Make sure all the items highlighted by red rectangles are correct with the possible exception of your fork being up to date
- If you see a message that your fork is not up to date - tap on the
Sync fork
button and follow the instructions - Continue with Create
GitHub Personal Access Token
Delete and Start Fresh¶
If your fork is not from LoopKit
:
- Delete your LoopWorkspace repository
- Instructions to delete a repository are found at GitHub Docs
- Return to Fork LoopWorkspace and follow all the instructions
Delete Identifiers¶
When you have already built the Loop app with Xcode, the Identifier names will not match the directions and you might have trouble deciding which ones to configure. Your existing Loop
identifier will have a name that starts with XC
as shown below, where your 10-digit TEAMID
is used.
Name: XC com TEAMID loopkit Loop
Identifier: com.TEAMID.loopkit.Loop
The Identifier
that is associated with the Loop
identifier cannot be deleted if it is already in the App Store but all others can. If you attempt to delete the XC
Loop identifier, you may be told it cannot be deleted because it is in use in the app store. That's OK. Same for other identifiers (if you build a bunch of Apps). If a Bundle ID
has ever been associated with an app in the App Store, you cannot delete the Identifier
.
To make it easy when configuring the identifiers, go through and delete as many as you can.
- Open this link: Certificates, Identifiers & Profiles: Identifiers List on the Apple Developer site.
- Use the graphic below as a guide to removing identifiers
- Keep repeating the steps until you've removed all the identifiers you can (or want to) delete
- It is OK to delete an identifier even if it does have your correct
TEAMID
- If you try to delete the
Loop
identifier with yourTEAMID
, it will refuse, don't worry, just keep going
- If you try to delete the
- Note - this graphic indicates where on this page you can find your
TEAMID
- If you notice an identifier with a value embedded in it that does not have your
TEAMID
, then delete it if you can and UpdateSecrets
with your correctTEAMID
- If you try to delete a
Loop identifier
that does not have yourTEAMID
, but you already added to the App Store, it will refuse, don't worry, just keep going
- If you notice an identifier with a value embedded in it that does not have your
If coming here from the Errors with Browser page because you enter the wrong TEAMID
in Secrets
- return to that page once you've deleted as many identifiers as you can: Errors: Wrong TEAMID in Secrets.
If you were just trying to clean up the identifiers, then follow these steps:
- Run Action: Add Identifiers to add Identifiers with the documented short names
- If you did not complete the Add or Review Configuration for Loop Identifier step, do it now
- Complete the Add
App Group
to Identifiers - If you did not complete the Create Loop App in App Store Connect step, do it now
- Continue with Create Certificates and then Build the Loop App