-
Notifications
You must be signed in to change notification settings - Fork 635
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
* publish artifacts to s3 * publish artifacts to s3 with tophat url * run anywhere * zip before upload * refactor job * rearrange * zip the right folder * fix * missing " * another refactor * fix filename * another refactor * fix naming * username * testing real device * refactor again * force run * more updates * disable cache download * change signing defaults * target CI-9 * add xcode caching * fix aws src syntax * fix paths again * change order of actions * fix path * dont run while in draft * restore app store default profiles * switch profiles before building
- Loading branch information
1 parent
ffaa5a6
commit 2a9b11d
Showing
5 changed files
with
302 additions
and
98 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,111 @@ | ||
name: iOS builds | ||
on: | ||
pull_request: | ||
types: [opened, synchronize, reopened, ready_for_review] | ||
workflow_dispatch: | ||
|
||
jobs: | ||
# Job to install dependencies | ||
build: | ||
runs-on: ["self-hosted"] | ||
if: github.event.pull_request.draft == false | ||
concurrency: | ||
group: ${{ github.workflow }}-${{ github.ref }} | ||
cancel-in-progress: true | ||
permissions: | ||
contents: read | ||
steps: | ||
- name: Checkout repo | ||
uses: actions/checkout@v4 | ||
|
||
- name: Set up github keys | ||
run: git config core.sshCommand "ssh -i ~/.ssh/id_ed25519 -F /dev/null" | ||
|
||
- name: Clean iOS app | ||
run: yarn clean:ios > /dev/null 2>&1 || true | ||
|
||
- name: Set up ENV vars & scripts | ||
env: | ||
CI_SCRIPTS: ${{ secrets.CI_SCRIPTS }} | ||
run: | | ||
source ~/.zshrc | ||
git clone [email protected]:rainbow-me/rainbow-env.git | ||
mv rainbow-env/dotenv .env && rm -rf rainbow-env | ||
eval $CI_SCRIPTS | ||
- name: Get Yarn cache directory path | ||
id: yarn-cache-dir-path | ||
run: echo "dir=$(yarn config get cacheFolder)" >> $GITHUB_OUTPUT | ||
|
||
- name: Cache Yarn dependencies | ||
uses: actions/cache@v4 | ||
with: | ||
path: | | ||
${{ steps.yarn-cache-dir-path.outputs.dir }} | ||
.yarn/cache | ||
.yarn/install-state.gz | ||
key: ${{ runner.os }}-yarn-${{ hashFiles('**/yarn.lock') }} | ||
restore-keys: | | ||
${{ runner.os }}-yarn- | ||
- name: Install dependencies | ||
run: | | ||
yarn install && yarn setup | ||
- name: Version debug | ||
run: | | ||
npx react-native info | ||
- name: Install pods | ||
run: yarn install-bundle && yarn install-pods | ||
|
||
- uses: irgaly/xcode-cache@v1 | ||
with: | ||
key: xcode-cache-deriveddata-${{ github.workflow }}-${{ github.sha }} | ||
restore-keys: xcode-cache-deriveddata-${{ github.workflow }}- | ||
|
||
# TOPHAT iOS SIM | ||
- name: Build the app in release mode for simulator | ||
run: | | ||
sed -i'' -e "s/IS_TESTING=true/IS_TESTING=false/" .env && rm -f .env-e | ||
sed -i '' 's/match AppStore/match AdHoc/g' "ios/Rainbow.xcodeproj/project.pbxproj" | ||
xcodebuild -workspace ios/Rainbow.xcworkspace -scheme Rainbow -configuration Release -sdk iphonesimulator -derivedDataPath ios/build | ||
APP_DIR=$(find . -name "*.app" | head -n 1) | ||
cd $APP_DIR && zip -r ../../../../../../App.zip . | ||
# TOPHAT iOS DEVICE | ||
- name: Build the app in release mode for iOS devices | ||
env: | ||
FASTLANE_USER: ${{ secrets.FASTLANE_USER }} | ||
FASTLANE_PASSWORD: ${{ secrets.FASTLANE_PASSWORD }} | ||
MATCH_PASSWORD: ${{ secrets.MATCH_PASSWORD }} | ||
run: | | ||
cd ios && bundle exec fastlane ios build_device | ||
- name: Upload builds to AWS S3 | ||
env: | ||
AWS_BUCKET: rainbow-app-team-production | ||
AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }} | ||
AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }} | ||
BRANCH_NAME: ${{ github.head_ref || github.ref_name }} | ||
COMMIT_HASH: ${{ github.sha }} | ||
run: | | ||
APP_FILE=$(find . -name "App.zip" | head -n 1) | ||
aws s3 cp "${APP_FILE}" "s3://${AWS_BUCKET}/${BRANCH_NAME}/${COMMIT_HASH}.app.zip" | ||
IPA_FILE=./ios/build/Rainbow.ipa | ||
aws s3 cp "${IPA_FILE}" "s3://${AWS_BUCKET}/${BRANCH_NAME}/${COMMIT_HASH}.ipa" | ||
- name: Post comment to PR | ||
if: github.event_name == 'pull_request' | ||
env: | ||
TOPHAT_GITHUB_TOKEN: ${{ secrets.TOPHAT_GITHUB_TOKEN }} | ||
BRANCH_NAME: ${{ github.head_ref || github.ref_name }} | ||
COMMIT_HASH: ${{ github.sha }} | ||
run: | | ||
COMMENT="Launch in [simulator](http://localhost:29070/install/ios?virtual=https://app-team.p.rainbow.me/${BRANCH_NAME}/${COMMIT_HASH}.app.zip) or [device](http://localhost:29070/install/ios?physical=https://app-team.p.rainbow.me/${BRANCH_NAME}/${COMMIT_HASH}.ipa) for ${COMMIT_HASH}" | ||
curl -s -H "Authorization: token $TOPHAT_GITHUB_TOKEN" -X POST \ | ||
-d "{\"body\":\"$COMMENT\"}" \ | ||
"${{ github.event.pull_request.comments_url }}" | ||
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,16 +1,15 @@ | ||
name: iOS e2e tests | ||
|
||
on: [pull_request, workflow_dispatch] | ||
|
||
jobs: | ||
ios-e2e: | ||
# Job to install dependencies | ||
install-deps: | ||
runs-on: ["self-hosted"] | ||
concurrency: | ||
group: ${{ github.workflow }}-${{ github.ref }} | ||
cancel-in-progress: true | ||
|
||
permissions: | ||
contents: read | ||
|
||
steps: | ||
- name: Checkout repo | ||
uses: actions/checkout@v4 | ||
|
@@ -29,8 +28,7 @@ jobs: | |
git clone [email protected]:rainbow-me/rainbow-env.git | ||
mv rainbow-env/dotenv .env && rm -rf rainbow-env | ||
eval $CI_SCRIPTS | ||
sed -i'' -e "s/IS_TESTING=false/IS_TESTING=true/" .env && rm -f .env-e | ||
- name: Get Yarn cache directory path | ||
id: yarn-cache-dir-path | ||
run: echo "dir=$(yarn config get cacheFolder)" >> $GITHUB_OUTPUT | ||
|
@@ -48,7 +46,26 @@ jobs: | |
- name: Install dependencies | ||
run: | | ||
yarn cache clean --all && yarn install && yarn setup | ||
yarn install && yarn setup | ||
- name: Upload Yarn cache | ||
uses: actions/upload-artifact@v3 | ||
with: | ||
name: yarn-cache | ||
path: | | ||
.yarn/cache | ||
.yarn/install-state.gz | ||
# Job for linting and unit tests | ||
linting-and-unit-tests: | ||
runs-on: ["self-hosted"] | ||
needs: install-deps | ||
steps: | ||
- name: Download Yarn cache | ||
uses: actions/download-artifact@v3 | ||
with: | ||
name: yarn-cache | ||
path: .yarn | ||
|
||
- name: Check for frozen lockfile | ||
run: ./scripts/check-lockfile.sh | ||
|
@@ -62,24 +79,36 @@ jobs: | |
- name: Unit tests | ||
run: yarn test | ||
|
||
# iOS build and e2e tests | ||
e2e-ios: | ||
runs-on: ["self-hosted"] | ||
needs: install-deps | ||
steps: | ||
- name: Download Yarn cache | ||
uses: actions/download-artifact@v3 | ||
with: | ||
name: yarn-cache | ||
path: .yarn | ||
|
||
- name: Rebuild detox cache | ||
run: ./node_modules/.bin/detox clean-framework-cache && ./node_modules/.bin/detox build-framework-cache | ||
|
||
- name: Version debug | ||
run: | | ||
npx react-native info | ||
- name: Install pods | ||
run: yarn install-bundle && yarn install-pods | ||
|
||
- name: Fix permissions | ||
run: | | ||
chmod -R +x node_modules/react-native/scripts | ||
chmod -R +x node_modules/@sentry/react-native/scripts | ||
- name: Build the app in release mode | ||
run: yarn detox build --configuration ios.sim.release | ||
|
||
# change the '3' here to how many times you want the tests to rerun on failure | ||
|
||
- uses: irgaly/xcode-cache@v1 | ||
with: | ||
key: xcode-cache-deriveddata-${{ github.workflow }}-${{ github.sha }} | ||
restore-keys: xcode-cache-deriveddata-${{ github.workflow }}- | ||
|
||
# Detox iOS e2e tests | ||
- name: Run iOS e2e tests with retry | ||
run: ./scripts/run-retry-tests.sh 3 | ||
run: | | ||
sed -i'' -e "s/IS_TESTING=false/IS_TESTING=true/" .env && rm -f .env-e | ||
yarn detox build --configuration ios.sim.release | ||
./scripts/run-retry-tests.sh 3 | ||
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.