diff --git a/.github/workflows/ios_emerge_upload_adhoc.yml b/.github/workflows/ios_emerge_upload_adhoc.yml index b90b31b4..15dba2d5 100644 --- a/.github/workflows/ios_emerge_upload_adhoc.yml +++ b/.github/workflows/ios_emerge_upload_adhoc.yml @@ -50,7 +50,7 @@ jobs: SIGNING_KEY_PASSWORD: ${{ secrets.IOS_DIST_SIGNING_KEY_PASSWORD }} SIGNING_KEY_FILE_PATH: signing-cert.p12 EMERGE_API_TOKEN: ${{ secrets.EMERGE_API_KEY }} - SENTRY_AUTH_TOKEN: ${{ secrets.SENTRY_AUTH_TOKEN }} + SENTRY_AUTH_TOKEN: ${{ secrets.SENTRY_SENTRY_AUTH_TOKEN }} CONFIGURATION: AdHoc EMERGE_BUILD_TYPE: pull-request-adhoc PROV_PROFILE_NAME: HackerNews AdHoc Distribution diff --git a/.github/workflows/ios_emerge_upload_main.yml b/.github/workflows/ios_emerge_upload_main.yml index 42d4aa6c..c0ae2479 100644 --- a/.github/workflows/ios_emerge_upload_main.yml +++ b/.github/workflows/ios_emerge_upload_main.yml @@ -46,7 +46,7 @@ jobs: SIGNING_KEY_PASSWORD: ${{ secrets.IOS_DIST_SIGNING_KEY_PASSWORD }} SIGNING_KEY_FILE_PATH: signing-cert.p12 EMERGE_API_TOKEN: ${{ secrets.EMERGE_API_KEY }} - SENTRY_AUTH_TOKEN: ${{ secrets.SENTRY_AUTH_TOKEN }} + SENTRY_AUTH_TOKEN: ${{ secrets.SENTRY_SENTRY_AUTH_TOKEN }} CONFIGURATION: Release EMERGE_BUILD_TYPE: release diff --git a/.github/workflows/ios_emerge_upload_pr.yml b/.github/workflows/ios_emerge_upload_pr.yml index df11a44a..7a18866b 100644 --- a/.github/workflows/ios_emerge_upload_pr.yml +++ b/.github/workflows/ios_emerge_upload_pr.yml @@ -46,6 +46,6 @@ jobs: SIGNING_KEY_PASSWORD: ${{ secrets.IOS_DIST_SIGNING_KEY_PASSWORD }} SIGNING_KEY_FILE_PATH: signing-cert.p12 EMERGE_API_TOKEN: ${{ secrets.EMERGE_API_KEY }} - SENTRY_AUTH_TOKEN: ${{ secrets.SENTRY_AUTH_TOKEN }} + SENTRY_AUTH_TOKEN: ${{ secrets.SENTRY_SENTRY_AUTH_TOKEN }} CONFIGURATION: Release EMERGE_BUILD_TYPE: pull-request diff --git a/.github/workflows/ios_sentry_upload_pr.yml b/.github/workflows/ios_sentry_upload_pr.yml deleted file mode 100644 index 0fed7ea0..00000000 --- a/.github/workflows/ios_sentry_upload_pr.yml +++ /dev/null @@ -1,76 +0,0 @@ -name: Sentry PR iOS Upload (Size Analysis) - -on: - pull_request: - branches: [main] - paths: [ios/**, .github/workflows/ios_sentry_upload_pr.yml] - -jobs: - build: - runs-on: macos-15 - - defaults: - run: - working-directory: ./ios - - steps: - - name: Checkout - uses: actions/checkout@v5 - with: - fetch-depth: 0 - - - name: Select Xcode version - run: sudo xcode-select -s '/Applications/Xcode_16.4.app/Contents/Developer' - - - name: Set up Ruby env - uses: ruby/setup-ruby@v1 - with: - ruby-version: 3.1.4 - bundler-cache: true - - - name: Install Sentry CLI - run: | - curl -L -o sentry-cli https://github.com/getsentry/sentry-cli/releases/download/2.53.0-alpha/sentry-cli-Darwin-universal - chmod +x sentry-cli - sudo mv sentry-cli /usr/local/bin/ - - - name: Setup gems - run: exec ../.github/scripts/ios/setup.sh - - - name: Decode signing certificate into a file - env: - CERTIFICATE_BASE64: ${{ secrets.IOS_DIST_SIGNING_KEY_BASE64 }} - run: | - echo $CERTIFICATE_BASE64 | base64 --decode > signing-cert.p12 - - - name: Build XCArchive - run: bundle exec fastlane ios build_only - env: - ASC_KEY_ID: ${{ secrets.ASC_KEY_ID }} - ASC_ISSUER_ID: ${{ secrets.ASC_ISSUER_ID }} - ASC_KEY: ${{ secrets.ASC_PRIVATE_KEY }} - SIGNING_KEY_PASSWORD: ${{ secrets.IOS_DIST_SIGNING_KEY_PASSWORD }} - SIGNING_KEY_FILE_PATH: signing-cert.p12 - EMERGE_API_TOKEN: ${{ secrets.EMERGE_API_KEY }} - CONFIGURATION: Release - EMERGE_BUILD_TYPE: pull-request - - - name: Upload iOS size analysis binary to Sentry - run: | - sentry-cli \ - --log-level=debug \ - --auth-token ${{ secrets.SENTRY_SENTRY_AUTH_TOKEN }} \ - build \ - upload \ - ./build/HackerNews.xcarchive \ - --org sentry \ - --project launchpad-test-ios \ - --head-sha ${{ github.event.pull_request.head.sha }} \ - --base-sha ${{ github.event.pull_request.base.sha }} \ - --vcs-provider github \ - --head-repo-name ${{ github.repository }} \ - --base-repo-name ${{ github.repository }} \ - --head-ref ${{ github.head_ref }} \ - --base-ref ${{ github.base_ref }} \ - --pr-number ${{ github.event.number }} \ - --build-configuration Release diff --git a/ios/HackerNews/ContentView.swift b/ios/HackerNews/ContentView.swift index 421fdedb..4c71eda9 100644 --- a/ios/HackerNews/ContentView.swift +++ b/ios/HackerNews/ContentView.swift @@ -5,8 +5,8 @@ // Created by Trevor Elkins on 6/20/23.. // -import SwiftUI import Common +import SwiftUI struct ContentView: View { diff --git a/ios/fastlane/Fastfile b/ios/fastlane/Fastfile index 1717b2a5..0744e880 100644 --- a/ios/fastlane/Fastfile +++ b/ios/fastlane/Fastfile @@ -162,6 +162,7 @@ platform :ios do build_app_for_scheme(build_configuration: 'Release') upload_app emerge(tag: ENV['EMERGE_BUILD_TYPE']) + thin_asset_catalogs sentry_debug_files_upload( auth_token: ENV['SENTRY_AUTH_TOKEN'], org_slug: 'emerge-tools', @@ -170,8 +171,8 @@ platform :ios do ) sentry_upload_mobile_app( auth_token: ENV['SENTRY_AUTH_TOKEN'], - org_slug: 'emerge-tools', - project_slug: 'hackernews-ios' + org_slug: 'sentry', + project_slug: 'launchpad-test-ios' ) end @@ -184,10 +185,11 @@ platform :ios do tag: ENV['EMERGE_BUILD_TYPE'], app_id_suffix: ENV['APP_ID_SUFFIX'] ) + thin_asset_catalogs sentry_upload_mobile_app( auth_token: ENV['SENTRY_AUTH_TOKEN'], - org_slug: 'emerge-tools', - project_slug: 'hackernews-ios' + org_slug: 'sentry', + project_slug: 'launchpad-test-ios' ) end @@ -196,6 +198,51 @@ platform :ios do emerge_snapshot(scheme: "HackerNews") end + desc 'Thin asset catalogs in XCArchive' + lane :thin_asset_catalogs do |options| + UI.message('Finding and thinning asset catalogs in XCArchive...') + + xcarchive_path = lane_context[SharedValues::XCODEBUILD_ARCHIVE] + UI.message("Using archive: #{xcarchive_path}") + + Dir.chdir('..') do + car_files = Dir.glob("#{xcarchive_path}/**/*.app/**/*.car") + + if car_files.empty? + UI.message("No .car files found in XCArchive") + else + car_files.each do |car_file| + UI.message("Found asset catalog: #{car_file}") + + backup_file = "#{car_file}.backup" + FileUtils.cp(car_file, backup_file) + + command = [ + 'assetutil', + '-i', 'phone', + '-s', '3', + '-p', 'P3', + '-M', '4', + '-g', 'MTL6,1', + '-r', '13.0', + car_file, + '-o', car_file + ] + + success = system(*command) + + if success + UI.success("Successfully thinned: #{car_file}") + FileUtils.rm(backup_file) + else + UI.error("Failed to thin: #{car_file}, restoring backup") + FileUtils.mv(backup_file, car_file) + end + end + end + end + end + desc 'Build the iOS app only (no uploads)' lane :build_only do load_asc_api_key