2024-02-21 22:54:31 +01:00
---
name : Build and Submit iOS
on :
workflow_dispatch :
inputs :
profile :
type : choice
description : Build profile to use
options :
2024-04-04 00:14:44 +02:00
- testflight
2024-02-21 22:54:31 +01:00
- production
jobs :
build :
name : Build and Submit iOS
runs-on : macos-14
steps :
- name : Check for EXPO_TOKEN
run : >
if [ -z "${{ secrets.EXPO_TOKEN }}" ]; then
echo "You must provide an EXPO_TOKEN secret linked to this project's Expo account in this repo's secrets. Learn more: https://docs.expo.dev/eas-update/github-actions"
exit 1
fi
- name : ⬇️ Checkout
uses : actions/checkout@v4
2024-05-07 05:13:12 +02:00
with :
fetch-depth : 5
2024-02-21 22:54:31 +01:00
- name : 🔧 Setup Node
2024-02-27 02:35:06 +01:00
uses : actions/setup-node@v4
2024-02-21 22:54:31 +01:00
with :
2024-02-27 02:35:06 +01:00
node-version-file : .nvmrc
2024-02-21 22:54:31 +01:00
cache : yarn
2024-06-05 03:55:18 +02:00
- name : 🪛 Setup jq
uses : dcarbone/install-jq-action@v2
2024-02-21 22:54:31 +01:00
- name : 🔨 Setup EAS
uses : expo/expo-github-action@v8
with :
expo-version : latest
eas-version : latest
token : ${{ secrets.EXPO_TOKEN }}
- name : ⛏️ Setup EAS local builds
run : yarn global add eas-cli-local-build-plugin
- name : ⚙️ Install dependencies
run : yarn install
2024-05-29 10:50:06 +02:00
- uses : maxim-lobanov/setup-xcode@v1
with :
xcode-version : '15.3'
2024-02-21 22:54:31 +01:00
- name : ☕️ Setup Cocoapods
uses : maxim-lobanov/setup-cocoapods@v1
with :
version : 1.14 .3
- name : 💾 Cache Pods
uses : actions/cache@v3
id : pods-cache
with :
path : ./ios/Pods
# We'll use the yarn.lock for our hash since we don't yet have a Podfile.lock. Pod versions will not
# change unless the yarn version changes as well.
key : ${{ runner.os }}-pods-${{ hashFiles('yarn.lock') }}
2024-02-27 22:31:44 +01:00
- name : 🔤 Compile translations
run : yarn intl:build
2024-02-21 22:54:31 +01:00
- name : ✏️ Write environment variables
run : |
echo "${{ secrets.ENV_TOKEN }}" > .env
2024-05-05 01:33:10 +02:00
echo "EXPO_PUBLIC_BUNDLE_IDENTIFIER=$(git rev-parse --short HEAD)" >> .env
echo "EXPO_PUBLIC_BUNDLE_DATE=$(date -u +"%y%m%d%H")" >> .env
2024-02-21 22:54:31 +01:00
echo "${{ secrets.GOOGLE_SERVICES_TOKEN }}" > google-services.json
- name : 🏗️ EAS Build
2024-04-04 00:14:44 +02:00
run : yarn use-build-number-with-bump eas build -p ios --profile ${{ inputs.profile || 'testflight' }} --local --output build.ipa --non-interactive
2024-02-21 22:54:31 +01:00
- name : 🚀 Deploy
run : eas submit -p ios --non-interactive --path build.ipa
2024-05-29 01:38:24 +02:00
2024-06-05 03:55:18 +02:00
- name : 📚 Get version from package.json
id : get-build-info
run : bash scripts/setGitHubOutput.sh
- name : 🔔 Notify Slack of Production Build
if : ${{ inputs.profile == 'production' }}
uses : slackapi/slack-github-action@v1.25.0
with :
payload : |
{
"text": "iOS production build for App Store submission is ready!\n```Artifact: Check TestFlight to know when it is available\nVersion Number: ${{ steps.get-build-info.outputs.PACKAGE_VERSION }}\nBuild Number: ${{ steps.get-build-info.outputs.BSKY_IOS_BUILD_NUMBER }}```"
}
env :
SLACK_WEBHOOK_URL : ${{ secrets.SLACK_CLIENT_ALERT_WEBHOOK }}
SLACK_WEBHOOK_TYPE : INCOMING_WEBHOOK
2024-05-29 01:38:24 +02:00
- name : ⬇️ Restore Cache
id : get-base-commit
uses : actions/cache@v4
2024-05-29 10:50:06 +02:00
if : ${{ inputs.profile == 'testflight' }}
2024-05-29 01:38:24 +02:00
with :
path : most-recent-testflight-commit.txt
key : most-recent-testflight-commit
- name : ✏️ Write commit hash to cache
2024-05-29 10:50:06 +02:00
if : ${{ inputs.profile == 'testflight' }}
2024-05-29 01:38:24 +02:00
run : echo ${{ github.sha }} > most-recent-testflight-commit.txt