Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Tophat #6043

Merged
merged 35 commits into from
Sep 4, 2024
Merged

Tophat #6043

Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
35 commits
Select commit Hold shift + click to select a range
c997f82
publish artifacts to s3
brunobar79 Aug 26, 2024
2dde440
publish artifacts to s3 with tophat url
brunobar79 Aug 26, 2024
cef780e
run anywhere
brunobar79 Aug 26, 2024
1637339
zip before upload
brunobar79 Aug 26, 2024
9810227
Merge branch 'develop' of github.com:rainbow-me/rainbow into @bruno/p…
brunobar79 Aug 27, 2024
04087ae
refactor job
brunobar79 Aug 27, 2024
beae4d8
rearrange
brunobar79 Aug 27, 2024
ad91751
zip the right folder
brunobar79 Aug 27, 2024
741e71c
fix
brunobar79 Aug 27, 2024
9ec8622
missing "
brunobar79 Aug 27, 2024
2149271
another refactor
brunobar79 Aug 27, 2024
289c0c0
fix filename
brunobar79 Aug 28, 2024
b1f30f5
another refactor
brunobar79 Aug 28, 2024
ffee8bf
fix naming
brunobar79 Aug 28, 2024
78bda09
username
brunobar79 Aug 28, 2024
4c99b67
testing real device
brunobar79 Aug 28, 2024
bd8010a
refactor again
brunobar79 Aug 28, 2024
33819da
Merge branch '@bruno/publish-artifacts' of github.com:rainbow-me/rain…
brunobar79 Aug 28, 2024
5111112
force run
brunobar79 Aug 28, 2024
2c8c4b4
more updates
brunobar79 Aug 28, 2024
2b84472
disable cache download
brunobar79 Aug 28, 2024
923a859
change signing defaults
brunobar79 Aug 29, 2024
792c3d0
target CI-9
brunobar79 Aug 29, 2024
974b058
add xcode caching
brunobar79 Aug 29, 2024
c3d9c6d
Merge branch 'develop' of github.com:rainbow-me/rainbow into @bruno/p…
brunobar79 Aug 29, 2024
19d44ec
fix aws src syntax
brunobar79 Aug 29, 2024
950f13d
fix paths again
brunobar79 Aug 29, 2024
f65d177
change order of actions
brunobar79 Aug 29, 2024
a96302e
Merge branch 'develop' of github.com:rainbow-me/rainbow into @bruno/p…
brunobar79 Aug 29, 2024
ecc8bc5
Merge branch 'develop' of github.com:rainbow-me/rainbow into @bruno/p…
brunobar79 Aug 29, 2024
0c7a91f
fix path
brunobar79 Aug 29, 2024
bcaecad
Merge branch 'develop' of github.com:rainbow-me/rainbow into @bruno/p…
brunobar79 Aug 30, 2024
8df8612
dont run while in draft
brunobar79 Aug 30, 2024
7142a02
restore app store default profiles
brunobar79 Aug 30, 2024
31f2f16
switch profiles before building
brunobar79 Aug 30, 2024
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
111 changes: 111 additions & 0 deletions .github/workflows/macstadium-builds.yml
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 }}"



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
Expand All @@ -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
Expand All @@ -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
Expand All @@ -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

54 changes: 34 additions & 20 deletions ios/Rainbow.xcodeproj/project.pbxproj
Original file line number Diff line number Diff line change
Expand Up @@ -1652,12 +1652,14 @@
CLANG_WARN_STRICT_PROTOTYPES = YES;
CLANG_WARN_SUSPICIOUS_MOVE = YES;
CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
CODE_SIGN_IDENTITY = "iPhone Distribution";
CODE_SIGN_IDENTITY = "Apple Development";
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Distribution";
CODE_SIGN_STYLE = Manual;
COPY_PHASE_STRIP = NO;
CURRENT_PROJECT_VERSION = 1;
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
DEVELOPMENT_TEAM = L74NQAQB8H;
DEVELOPMENT_TEAM = "";
"DEVELOPMENT_TEAM[sdk=iphoneos*]" = L74NQAQB8H;
"EXCLUDED_ARCHS[sdk=iphonesimulator*]" = arm64;
GCC_C_LANGUAGE_STANDARD = gnu11;
GCC_NO_COMMON_BLOCKS = YES;
Expand All @@ -1671,7 +1673,8 @@
MTL_FAST_MATH = YES;
PRODUCT_BUNDLE_IDENTIFIER = me.rainbow.ImageNotification;
PRODUCT_NAME = "$(TARGET_NAME)";
PROVISIONING_PROFILE_SPECIFIER = "match AppStore me.rainbow.ImageNotification";
PROVISIONING_PROFILE_SPECIFIER = "";
"PROVISIONING_PROFILE_SPECIFIER[sdk=iphoneos*]" = "match AppStore me.rainbow.ImageNotification";
SKIP_INSTALL = YES;
SWIFT_EMIT_LOC_STRINGS = YES;
SWIFT_PRECOMPILE_BRIDGING_HEADER = NO;
Expand Down Expand Up @@ -1864,11 +1867,13 @@
ASSETCATALOG_COMPILER_OPTIMIZATION = "";
CLANG_ENABLE_MODULES = YES;
CODE_SIGN_ENTITLEMENTS = Rainbow/RainbowRelease.entitlements;
CODE_SIGN_IDENTITY = "iPhone Distribution";
CODE_SIGN_IDENTITY = "Apple Development";
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Distribution";
CODE_SIGN_STYLE = Manual;
CURRENT_PROJECT_VERSION = 1;
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
DEVELOPMENT_TEAM = L74NQAQB8H;
DEVELOPMENT_TEAM = "";
"DEVELOPMENT_TEAM[sdk=iphoneos*]" = L74NQAQB8H;
ENABLE_BITCODE = NO;
"EXCLUDED_ARCHS[sdk=iphonesimulator*]" = arm64;
FRAMEWORK_SEARCH_PATHS = (
Expand Down Expand Up @@ -1905,7 +1910,8 @@
PRODUCT_BUNDLE_IDENTIFIER = me.rainbow;
PRODUCT_NAME = Rainbow;
PROVISIONING_PROFILE = "";
PROVISIONING_PROFILE_SPECIFIER = "match AppStore me.rainbow";
PROVISIONING_PROFILE_SPECIFIER = "";
"PROVISIONING_PROFILE_SPECIFIER[sdk=iphoneos*]" = "match AppStore me.rainbow";
SWIFT_OBJC_BRIDGING_HEADER = "Rainbow-Bridging-Header.h";
SWIFT_PRECOMPILE_BRIDGING_HEADER = NO;
SWIFT_VERSION = 5.0;
Expand Down Expand Up @@ -2331,11 +2337,13 @@
CLANG_WARN_SUSPICIOUS_MOVE = YES;
CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
CODE_SIGN_ENTITLEMENTS = PriceWidgetExtension.entitlements;
CODE_SIGN_IDENTITY = "iPhone Distribution";
CODE_SIGN_IDENTITY = "Apple Development";
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Distribution";
CODE_SIGN_STYLE = Manual;
COPY_PHASE_STRIP = NO;
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
DEVELOPMENT_TEAM = L74NQAQB8H;
DEVELOPMENT_TEAM = "";
"DEVELOPMENT_TEAM[sdk=iphoneos*]" = L74NQAQB8H;
"EXCLUDED_ARCHS[sdk=iphonesimulator*]" = arm64;
GCC_C_LANGUAGE_STANDARD = gnu11;
GCC_NO_COMMON_BLOCKS = YES;
Expand All @@ -2345,7 +2353,8 @@
MTL_FAST_MATH = YES;
PRODUCT_BUNDLE_IDENTIFIER = me.rainbow.PriceWidget;
PRODUCT_NAME = "$(TARGET_NAME)";
PROVISIONING_PROFILE_SPECIFIER = "match AppStore me.rainbow.PriceWidget";
PROVISIONING_PROFILE_SPECIFIER = "";
"PROVISIONING_PROFILE_SPECIFIER[sdk=iphoneos*]" = "match AppStore me.rainbow.PriceWidget";
SKIP_INSTALL = YES;
SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule";
SWIFT_PRECOMPILE_BRIDGING_HEADER = NO;
Expand Down Expand Up @@ -2425,8 +2434,8 @@
CLANG_WARN_SUSPICIOUS_MOVE = YES;
CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
CODE_SIGN_ENTITLEMENTS = PriceWidgetExtension.entitlements;
CODE_SIGN_IDENTITY = "iPhone Distribution";
CODE_SIGN_STYLE = Manual;
CODE_SIGN_IDENTITY = "Apple Development";
CODE_SIGN_STYLE = Automatic;
COPY_PHASE_STRIP = NO;
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
DEVELOPMENT_TEAM = L74NQAQB8H;
Expand All @@ -2439,7 +2448,7 @@
MTL_FAST_MATH = YES;
PRODUCT_BUNDLE_IDENTIFIER = me.rainbow.PriceWidget;
PRODUCT_NAME = "$(TARGET_NAME)";
PROVISIONING_PROFILE_SPECIFIER = "match AppStore me.rainbow.PriceWidget";
PROVISIONING_PROFILE_SPECIFIER = "";
SKIP_INSTALL = YES;
SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule";
SWIFT_PRECOMPILE_BRIDGING_HEADER = NO;
Expand Down Expand Up @@ -2517,11 +2526,13 @@
CLANG_WARN_SUSPICIOUS_MOVE = YES;
CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
CODE_SIGN_ENTITLEMENTS = SelectTokenIntent/SelectTokenIntent.entitlements;
CODE_SIGN_IDENTITY = "iPhone Distribution";
CODE_SIGN_IDENTITY = "Apple Development";
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Distribution";
CODE_SIGN_STYLE = Manual;
COPY_PHASE_STRIP = NO;
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
DEVELOPMENT_TEAM = L74NQAQB8H;
DEVELOPMENT_TEAM = "";
"DEVELOPMENT_TEAM[sdk=iphoneos*]" = L74NQAQB8H;
"EXCLUDED_ARCHS[sdk=iphonesimulator*]" = arm64;
GCC_C_LANGUAGE_STANDARD = gnu11;
GCC_NO_COMMON_BLOCKS = YES;
Expand All @@ -2531,7 +2542,8 @@
MTL_FAST_MATH = YES;
PRODUCT_BUNDLE_IDENTIFIER = me.rainbow.SelectTokenIntent;
PRODUCT_NAME = "$(TARGET_NAME)";
PROVISIONING_PROFILE_SPECIFIER = "match AppStore me.rainbow.SelectTokenIntent";
PROVISIONING_PROFILE_SPECIFIER = "";
"PROVISIONING_PROFILE_SPECIFIER[sdk=iphoneos*]" = "match AppStore me.rainbow.SelectTokenIntent";
SKIP_INSTALL = YES;
SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule";
SWIFT_PRECOMPILE_BRIDGING_HEADER = NO;
Expand Down Expand Up @@ -2607,8 +2619,8 @@
CLANG_WARN_SUSPICIOUS_MOVE = YES;
CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
CODE_SIGN_ENTITLEMENTS = SelectTokenIntent/SelectTokenIntent.entitlements;
CODE_SIGN_IDENTITY = "iPhone Distribution";
CODE_SIGN_STYLE = Manual;
CODE_SIGN_IDENTITY = "Apple Development";
CODE_SIGN_STYLE = Automatic;
COPY_PHASE_STRIP = NO;
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
DEVELOPMENT_TEAM = L74NQAQB8H;
Expand All @@ -2621,7 +2633,7 @@
MTL_FAST_MATH = YES;
PRODUCT_BUNDLE_IDENTIFIER = me.rainbow.SelectTokenIntent;
PRODUCT_NAME = "$(TARGET_NAME)";
PROVISIONING_PROFILE_SPECIFIER = "match AppStore me.rainbow.SelectTokenIntent";
PROVISIONING_PROFILE_SPECIFIER = "";
SKIP_INSTALL = YES;
SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule";
SWIFT_PRECOMPILE_BRIDGING_HEADER = NO;
Expand Down Expand Up @@ -2711,7 +2723,8 @@
CLANG_WARN_STRICT_PROTOTYPES = YES;
CLANG_WARN_SUSPICIOUS_MOVE = YES;
CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
CODE_SIGN_IDENTITY = "iPhone Distribution";
CODE_SIGN_IDENTITY = "Apple Development";
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Distribution";
CODE_SIGN_STYLE = Manual;
COPY_PHASE_STRIP = NO;
CURRENT_PROJECT_VERSION = 1;
Expand Down Expand Up @@ -2929,7 +2942,8 @@
CLANG_WARN_STRICT_PROTOTYPES = YES;
CLANG_WARN_SUSPICIOUS_MOVE = YES;
CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
CODE_SIGN_IDENTITY = "iPhone Distribution";
CODE_SIGN_IDENTITY = "Apple Development";
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Distribution";
CODE_SIGN_STYLE = Manual;
COPY_PHASE_STRIP = NO;
CURRENT_PROJECT_VERSION = 1;
Expand Down
Loading
Loading