From 08073e56be22387a038bbbe94e2671c913ea777c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B8rgen=20P=2E=20Tjern=C3=B8?= Date: Sat, 16 Jul 2022 12:49:26 -0700 Subject: [PATCH 01/48] Adapt Drew Crawford's incremental build tips These changes are adapted from http://faq.sealedabstract.com/github_actions/#xcode and should help the build be incremental. --- .github/workflows/publish_ios.yml | 37 +++++++++++++++++++++++++++++++ ios/fastlane/Fastfile | 3 ++- 2 files changed, 39 insertions(+), 1 deletion(-) diff --git a/.github/workflows/publish_ios.yml b/.github/workflows/publish_ios.yml index bb0d196..2b1cfaf 100644 --- a/.github/workflows/publish_ios.yml +++ b/.github/workflows/publish_ios.yml @@ -22,6 +22,40 @@ jobs: steps: - name: Check out from git uses: actions/checkout@v2 + # This retrieves the current date & week in a format that we can use for keying our + # cache on to help us pick the most recent cached data + - name: Fetch date for cache key + id: get-date + run: | + echo "::set-output name=week::$(/bin/date -u "+%U")" + echo "::set-output name=date::$(/bin/date -u "+%Y%m%d")" + echo "::set-output name=hour::$(/bin/date -u "+%H")" + echo "::set-output name=minute::$(/bin/date -u "+%M")" + shell: bash + # Attempt to fetch the DerivedData from cache, by preferring one from earlier this minute, then one earlier + # this hour, then one earlier today, finally one earlier this week, and at last, any time. + - uses: actions/cache@v2 + name: DerivedData cache + with: + path: .deriveddata-cache + key: deriveddata-${{ steps.get-date.outputs.week }}-${{ steps.get-date.outputs.date }}-${{ steps.get-date.outputs.hour }}-${{ steps.get-date.outputs.minute }} + restore-keys: | + deriveddata-${{ steps.get-date.outputs.week }}-${{ steps.get-date.outputs.date }}-${{ steps.get-date.outputs.hour }} + deriveddata-${{ steps.get-date.outputs.week }}-${{ steps.get-date.outputs.date }} + deriveddata-${{ steps.get-date.outputs.week }} + deriveddata + # Manually extract the derived data using tar so we can preserve permissions & extended file flags, which xcode + # relies on + - name: Extract DerivedData from cache + run: if [ -f .deriveddata-cache/cache.tar ]; then tar xvPpf .deriveddata-cache/cache.tar; else echo "No cache file"; fi + # Set the "modified time" of every file in the repository to be the time it was most recently modified in git -- this means that xcode + # can reliably use the `mtime` to see which files have changed. By default it's set to the time you check out. + - name: Update file mtimes + run: | + set +e + git submodule foreach 'rev=HEAD; for f in $(git ls-tree -r -t --full-name --name-only "$rev") ; do touch -t $(git log --pretty=format:%cd --date=format:%Y%m%d%H%M.%S -1 "$rev" -- "$f") "$f"; done' + rev=HEAD; for f in $(git ls-tree -r -t --full-name --name-only "$rev") ; do touch -t $(git log --pretty=format:%cd --date=format:%Y%m%d%H%M.%S -1 "$rev" -- "$f") "$f"; done + # Configure ruby according to our .ruby-version - name: Setup ruby & Bundler uses: ruby/setup-ruby@v1 @@ -49,3 +83,6 @@ jobs: MATCH_PASSWORD: ${{ secrets.MATCH_PASSWORD }} SSH_AUTH_SOCK: /tmp/ssh_agent.sock run: cd ios && bundle exec fastlane beta "build_name:${{ github.ref_name }}" + # Package up the derived data for the caching action, including permissions and fine grained timestamps. + - name: Package DerivedData for cache + run: mkdir -p .deriveddata-cache && tar cfPp .deriveddata-cache/cache.tar --format posix localDerivedData diff --git a/ios/fastlane/Fastfile b/ios/fastlane/Fastfile index 4c87860..e3d13ce 100644 --- a/ios/fastlane/Fastfile +++ b/ios/fastlane/Fastfile @@ -76,7 +76,8 @@ platform :ios do build_app( workspace: "Runner.xcworkspace", scheme: "Runner", - output_directory: "../build/ios/archive" + output_directory: "../build/ios/archive", + xcargs: "-IgnoreFileSystemDeviceInodeChanges=YES", ) upload_to_testflight( From d1d713dec2f0449916574a907532ef6b16bd1ad6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B8rgen=20P=2E=20Tjern=C3=B8?= Date: Sat, 16 Jul 2022 13:18:56 -0700 Subject: [PATCH 02/48] Fix invalid derived data path --- .github/workflows/publish_ios.yml | 4 ++-- ios/fastlane/Fastfile | 1 + 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/.github/workflows/publish_ios.yml b/.github/workflows/publish_ios.yml index 2b1cfaf..bea5037 100644 --- a/.github/workflows/publish_ios.yml +++ b/.github/workflows/publish_ios.yml @@ -83,6 +83,6 @@ jobs: MATCH_PASSWORD: ${{ secrets.MATCH_PASSWORD }} SSH_AUTH_SOCK: /tmp/ssh_agent.sock run: cd ios && bundle exec fastlane beta "build_name:${{ github.ref_name }}" - # Package up the derived data for the caching action, including permissions and fine grained timestamps. + # Package up the derived data for the caching action, including permissions and fine grained timestamps - name: Package DerivedData for cache - run: mkdir -p .deriveddata-cache && tar cfPp .deriveddata-cache/cache.tar --format posix localDerivedData + run: mkdir -p .deriveddata-cache && tar cfPp .deriveddata-cache/cache.tar --format posix build/ios/localDerivedData diff --git a/ios/fastlane/Fastfile b/ios/fastlane/Fastfile index e3d13ce..dfdc749 100644 --- a/ios/fastlane/Fastfile +++ b/ios/fastlane/Fastfile @@ -78,6 +78,7 @@ platform :ios do scheme: "Runner", output_directory: "../build/ios/archive", xcargs: "-IgnoreFileSystemDeviceInodeChanges=YES", + derived_data_path: "../build/ios/localDerivedData", ) upload_to_testflight( From 87c0f3f9e25fce6ff486e0b56e3ac3daa9bbd471 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B8rgen=20P=2E=20Tjern=C3=B8?= Date: Sat, 4 Feb 2023 12:56:40 -0800 Subject: [PATCH 03/48] Update iOS project --- ios/Flutter/AppFrameworkInfo.plist | 2 +- ios/Runner.xcodeproj/project.pbxproj | 6 ++++-- ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme | 2 +- ios/Runner/Info.plist | 4 ++++ 4 files changed, 10 insertions(+), 4 deletions(-) diff --git a/ios/Flutter/AppFrameworkInfo.plist b/ios/Flutter/AppFrameworkInfo.plist index 8d4492f..9625e10 100644 --- a/ios/Flutter/AppFrameworkInfo.plist +++ b/ios/Flutter/AppFrameworkInfo.plist @@ -21,6 +21,6 @@ CFBundleVersion 1.0 MinimumOSVersion - 9.0 + 11.0 diff --git a/ios/Runner.xcodeproj/project.pbxproj b/ios/Runner.xcodeproj/project.pbxproj index 4895b67..a8c4e98 100644 --- a/ios/Runner.xcodeproj/project.pbxproj +++ b/ios/Runner.xcodeproj/project.pbxproj @@ -3,7 +3,7 @@ archiveVersion = 1; classes = { }; - objectVersion = 50; + objectVersion = 54; objects = { /* Begin PBXBuildFile section */ @@ -127,7 +127,7 @@ 97C146E61CF9000F007C117D /* Project object */ = { isa = PBXProject; attributes = { - LastUpgradeCheck = 1320; + LastUpgradeCheck = 1300; ORGANIZATIONNAME = ""; TargetAttributes = { 97C146ED1CF9000F007C117D = { @@ -171,6 +171,7 @@ /* Begin PBXShellScriptBuildPhase section */ 3B06AD1E1E4923F5004D2608 /* Thin Binary */ = { isa = PBXShellScriptBuildPhase; + alwaysOutOfDate = 1; buildActionMask = 2147483647; files = ( ); @@ -185,6 +186,7 @@ }; 9740EEB61CF901F6004384FC /* Run Script */ = { isa = PBXShellScriptBuildPhase; + alwaysOutOfDate = 1; buildActionMask = 2147483647; files = ( ); diff --git a/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme b/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme index 6dd6010..c87d15a 100644 --- a/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme +++ b/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme @@ -1,6 +1,6 @@ UIViewControllerBasedStatusBarAppearance + CADisableMinimumFrameDurationOnPhone + + UIApplicationSupportsIndirectInputEvents + From d29ddbff5cf515d44a39829b74a0b800e68527d7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B8rgen=20P=2E=20Tjern=C3=B8?= Date: Sat, 4 Feb 2023 12:56:54 -0800 Subject: [PATCH 04/48] Update fastlane --- ios/Gemfile.lock | 84 ++++++++++++++++++++++++------------------------ 1 file changed, 42 insertions(+), 42 deletions(-) diff --git a/ios/Gemfile.lock b/ios/Gemfile.lock index 92da806..ddf005b 100644 --- a/ios/Gemfile.lock +++ b/ios/Gemfile.lock @@ -1,7 +1,7 @@ GEM remote: https://rubygems.org/ specs: - CFPropertyList (3.0.5) + CFPropertyList (3.0.6) rexml activesupport (6.1.6) concurrent-ruby (~> 1.0, >= 1.0.2) @@ -9,28 +9,28 @@ GEM minitest (>= 5.1) tzinfo (~> 2.0) zeitwerk (~> 2.3) - addressable (2.8.0) - public_suffix (>= 2.0.2, < 5.0) + addressable (2.8.1) + public_suffix (>= 2.0.2, < 6.0) algoliasearch (1.27.5) httpclient (~> 2.8, >= 2.8.3) json (>= 1.5.1) artifactory (3.0.15) atomos (0.1.3) aws-eventstream (1.2.0) - aws-partitions (1.590.0) - aws-sdk-core (3.131.1) + aws-partitions (1.705.0) + aws-sdk-core (3.170.0) aws-eventstream (~> 1, >= 1.0.2) - aws-partitions (~> 1, >= 1.525.0) - aws-sigv4 (~> 1.1) + aws-partitions (~> 1, >= 1.651.0) + aws-sigv4 (~> 1.5) jmespath (~> 1, >= 1.6.1) - aws-sdk-kms (1.57.0) - aws-sdk-core (~> 3, >= 3.127.0) + aws-sdk-kms (1.62.0) + aws-sdk-core (~> 3, >= 3.165.0) aws-sigv4 (~> 1.1) - aws-sdk-s3 (1.114.0) - aws-sdk-core (~> 3, >= 3.127.0) + aws-sdk-s3 (1.119.0) + aws-sdk-core (~> 3, >= 3.165.0) aws-sdk-kms (~> 1) aws-sigv4 (~> 1.4) - aws-sigv4 (1.5.0) + aws-sigv4 (1.5.2) aws-eventstream (~> 1, >= 1.0.2) babosa (1.0.4) claide (1.1.0) @@ -81,13 +81,13 @@ GEM rake (>= 12.0.0, < 14.0.0) domain_name (0.5.20190701) unf (>= 0.0.5, < 1.0.0) - dotenv (2.7.6) + dotenv (2.8.1) emoji_regex (3.2.3) escape (0.0.4) ethon (0.15.0) ffi (>= 1.15.0) - excon (0.92.3) - faraday (1.10.0) + excon (0.99.0) + faraday (1.10.3) faraday-em_http (~> 1.0) faraday-em_synchrony (~> 1.0) faraday-excon (~> 1.1) @@ -106,8 +106,8 @@ GEM faraday-em_synchrony (1.0.0) faraday-excon (1.1.0) faraday-httpclient (1.0.1) - faraday-multipart (1.0.3) - multipart-post (>= 1.2, < 3) + faraday-multipart (1.0.4) + multipart-post (~> 2) faraday-net_http (1.0.1) faraday-net_http_persistent (1.2.0) faraday-patron (1.0.0) @@ -116,7 +116,7 @@ GEM faraday_middleware (1.2.0) faraday (~> 1.0) fastimage (2.2.6) - fastlane (2.206.1) + fastlane (2.211.0) CFPropertyList (>= 2.3, < 4.0.0) addressable (>= 2.8, < 3.0.0) artifactory (~> 3.0) @@ -159,9 +159,9 @@ GEM fourflusher (2.3.1) fuzzy_match (2.0.4) gh_inspector (1.1.3) - google-apis-androidpublisher_v3 (0.21.0) - google-apis-core (>= 0.4, < 2.a) - google-apis-core (0.5.0) + google-apis-androidpublisher_v3 (0.33.0) + google-apis-core (>= 0.9.1, < 2.a) + google-apis-core (0.10.0) addressable (~> 2.5, >= 2.5.1) googleauth (>= 0.16.2, < 2.a) httpclient (>= 2.8.1, < 3.a) @@ -170,27 +170,27 @@ GEM retriable (>= 2.0, < 4.a) rexml webrick - google-apis-iamcredentials_v1 (0.10.0) - google-apis-core (>= 0.4, < 2.a) - google-apis-playcustomapp_v1 (0.7.0) - google-apis-core (>= 0.4, < 2.a) - google-apis-storage_v1 (0.14.0) - google-apis-core (>= 0.4, < 2.a) + google-apis-iamcredentials_v1 (0.16.0) + google-apis-core (>= 0.9.1, < 2.a) + google-apis-playcustomapp_v1 (0.12.0) + google-apis-core (>= 0.9.1, < 2.a) + google-apis-storage_v1 (0.19.0) + google-apis-core (>= 0.9.0, < 2.a) google-cloud-core (1.6.0) google-cloud-env (~> 1.0) google-cloud-errors (~> 1.0) google-cloud-env (1.6.0) faraday (>= 0.17.3, < 3.0) - google-cloud-errors (1.2.0) - google-cloud-storage (1.36.2) + google-cloud-errors (1.3.0) + google-cloud-storage (1.44.0) addressable (~> 2.8) digest-crc (~> 0.4) google-apis-iamcredentials_v1 (~> 0.1) - google-apis-storage_v1 (~> 0.1) + google-apis-storage_v1 (~> 0.19.0) google-cloud-core (~> 1.6) googleauth (>= 0.16.2, < 2.a) mini_mime (~> 1.0) - googleauth (1.1.3) + googleauth (1.3.0) faraday (>= 0.17.3, < 3.a) jwt (>= 1.4, < 3.0) memoist (~> 0.16) @@ -198,16 +198,16 @@ GEM os (>= 0.9, < 2.0) signet (>= 0.16, < 2.a) highline (2.0.3) - http-cookie (1.0.4) + http-cookie (1.0.5) domain_name (~> 0.5) httpclient (2.8.3) i18n (1.10.0) concurrent-ruby (~> 1.0) - jmespath (1.6.1) - json (2.6.2) - jwt (2.3.0) + jmespath (1.6.2) + json (2.6.3) + jwt (2.7.0) memoist (0.16.2) - mini_magick (4.11.0) + mini_magick (4.12.0) mini_mime (1.1.2) minitest (5.15.0) molinillo (0.8.0) @@ -233,12 +233,12 @@ GEM ruby2_keywords (0.0.5) rubyzip (2.3.2) security (0.1.3) - signet (0.16.1) + signet (0.17.0) addressable (~> 2.8) - faraday (>= 0.17.5, < 3.0) + faraday (>= 0.17.5, < 3.a) jwt (>= 1.5, < 3.0) multi_json (~> 1.10) - simctl (1.6.8) + simctl (1.6.10) CFPropertyList naturally terminal-notifier (2.0.0) @@ -256,11 +256,11 @@ GEM uber (0.1.0) unf (0.1.4) unf_ext - unf_ext (0.0.8.1) + unf_ext (0.0.8.2) unicode-display_width (1.8.0) - webrick (1.7.0) + webrick (1.8.1) word_wrap (1.0.0) - xcodeproj (1.21.0) + xcodeproj (1.22.0) CFPropertyList (>= 2.3.3, < 4.0) atomos (~> 0.1.3) claide (>= 1.0.2, < 2.0) From 96f5975fe0919a22d04b8be8dda0ced8d568f11e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B8rgen=20P=2E=20Tjern=C3=B8?= Date: Sat, 4 Feb 2023 12:57:12 -0800 Subject: [PATCH 05/48] Minor Flutter dependency updates --- pubspec.lock | 111 ++++++++++++++++++++++++++++++--------------------- 1 file changed, 66 insertions(+), 45 deletions(-) diff --git a/pubspec.lock b/pubspec.lock index 5605564..f37839e 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -5,58 +5,58 @@ packages: dependency: transitive description: name: async - url: "https://pub.dartlang.org" + sha256: bfe67ef28df125b7dddcea62755991f807aa39a2492a23e1550161692950bbe0 + url: "https://pub.dev" source: hosted - version: "2.8.2" + version: "2.10.0" boolean_selector: dependency: transitive description: name: boolean_selector - url: "https://pub.dartlang.org" + sha256: "6cfb5af12253eaf2b368f07bacc5a80d1301a071c73360d746b7f2e32d762c66" + url: "https://pub.dev" source: hosted - version: "2.1.0" + version: "2.1.1" characters: dependency: transitive description: name: characters - url: "https://pub.dartlang.org" + sha256: e6a326c8af69605aec75ed6c187d06b349707a27fbff8222ca9cc2cff167975c + url: "https://pub.dev" source: hosted - version: "1.2.0" - charcode: - dependency: transitive - description: - name: charcode - url: "https://pub.dartlang.org" - source: hosted - version: "1.3.1" + version: "1.2.1" clock: dependency: transitive description: name: clock - url: "https://pub.dartlang.org" + sha256: cb6d7f03e1de671e34607e909a7213e31d7752be4fb66a86d29fe1eb14bfb5cf + url: "https://pub.dev" source: hosted - version: "1.1.0" + version: "1.1.1" collection: dependency: transitive description: name: collection - url: "https://pub.dartlang.org" + sha256: cfc915e6923fe5ce6e153b0723c753045de46de1b4d63771530504004a45fae0 + url: "https://pub.dev" source: hosted - version: "1.16.0" + version: "1.17.0" cupertino_icons: dependency: "direct main" description: name: cupertino_icons - url: "https://pub.dartlang.org" + sha256: "1989d917fbe8e6b39806207df5a3fdd3d816cbd090fac2ce26fb45e9a71476e5" + url: "https://pub.dev" source: hosted version: "1.0.4" fake_async: dependency: transitive description: name: fake_async - url: "https://pub.dartlang.org" + sha256: "511392330127add0b769b75a987850d136345d9227c6b94c96a04cf4a391bf78" + url: "https://pub.dev" source: hosted - version: "1.3.0" + version: "1.3.1" flutter: dependency: "direct main" description: flutter @@ -66,7 +66,8 @@ packages: dependency: "direct dev" description: name: flutter_lints - url: "https://pub.dartlang.org" + sha256: b543301ad291598523947dc534aaddc5aaad597b709d2426d3a0e0d44c5cb493 + url: "https://pub.dev" source: hosted version: "1.0.4" flutter_test: @@ -74,41 +75,54 @@ packages: description: flutter source: sdk version: "0.0.0" + js: + dependency: transitive + description: + name: js + sha256: "5528c2f391ededb7775ec1daa69e65a2d61276f7552de2b5f7b8d34ee9fd4ab7" + url: "https://pub.dev" + source: hosted + version: "0.6.5" lints: dependency: transitive description: name: lints - url: "https://pub.dartlang.org" + sha256: a2c3d198cb5ea2e179926622d433331d8b58374ab8f29cdda6e863bd62fd369c + url: "https://pub.dev" source: hosted version: "1.0.1" matcher: dependency: transitive description: name: matcher - url: "https://pub.dartlang.org" + sha256: "16db949ceee371e9b99d22f88fa3a73c4e59fd0afed0bd25fc336eb76c198b72" + url: "https://pub.dev" source: hosted - version: "0.12.11" + version: "0.12.13" material_color_utilities: dependency: transitive description: name: material_color_utilities - url: "https://pub.dartlang.org" + sha256: d92141dc6fe1dad30722f9aa826c7fbc896d021d792f80678280601aff8cf724 + url: "https://pub.dev" source: hosted - version: "0.1.4" + version: "0.2.0" meta: dependency: transitive description: name: meta - url: "https://pub.dartlang.org" + sha256: "6c268b42ed578a53088d834796959e4a1814b5e9e164f147f580a386e5decf42" + url: "https://pub.dev" source: hosted - version: "1.7.0" + version: "1.8.0" path: dependency: transitive description: name: path - url: "https://pub.dartlang.org" + sha256: db9d4f58c908a4ba5953fcee2ae317c94889433e5024c27ce74a37f94267945b + url: "https://pub.dev" source: hosted - version: "1.8.1" + version: "1.8.2" sky_engine: dependency: transitive description: flutter @@ -118,50 +132,57 @@ packages: dependency: transitive description: name: source_span - url: "https://pub.dartlang.org" + sha256: dd904f795d4b4f3b870833847c461801f6750a9fa8e61ea5ac53f9422b31f250 + url: "https://pub.dev" source: hosted - version: "1.8.2" + version: "1.9.1" stack_trace: dependency: transitive description: name: stack_trace - url: "https://pub.dartlang.org" + sha256: c3c7d8edb15bee7f0f74debd4b9c5f3c2ea86766fe4178eb2a18eb30a0bdaed5 + url: "https://pub.dev" source: hosted - version: "1.10.0" + version: "1.11.0" stream_channel: dependency: transitive description: name: stream_channel - url: "https://pub.dartlang.org" + sha256: "83615bee9045c1d322bbbd1ba209b7a749c2cbcdcb3fdd1df8eb488b3279c1c8" + url: "https://pub.dev" source: hosted - version: "2.1.0" + version: "2.1.1" string_scanner: dependency: transitive description: name: string_scanner - url: "https://pub.dartlang.org" + sha256: "556692adab6cfa87322a115640c11f13cb77b3f076ddcc5d6ae3c20242bedcde" + url: "https://pub.dev" source: hosted - version: "1.1.0" + version: "1.2.0" term_glyph: dependency: transitive description: name: term_glyph - url: "https://pub.dartlang.org" + sha256: a29248a84fbb7c79282b40b8c72a1209db169a2e0542bce341da992fe1bc7e84 + url: "https://pub.dev" source: hosted - version: "1.2.0" + version: "1.2.1" test_api: dependency: transitive description: name: test_api - url: "https://pub.dartlang.org" + sha256: ad540f65f92caa91bf21dfc8ffb8c589d6e4dc0c2267818b4cc2792857706206 + url: "https://pub.dev" source: hosted - version: "0.4.9" + version: "0.4.16" vector_math: dependency: transitive description: name: vector_math - url: "https://pub.dartlang.org" + sha256: "80b3257d1492ce4d091729e3a67a60407d227c27241d6927be0130c98e741803" + url: "https://pub.dev" source: hosted - version: "2.1.2" + version: "2.1.4" sdks: - dart: ">=2.17.0-0 <3.0.0" + dart: ">=2.18.0 <3.0.0" From e4c8027eacec911bcd069fcf39b0673098ed927b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B8rgen=20P=2E=20Tjern=C3=B8?= Date: Sat, 4 Feb 2023 13:23:09 -0800 Subject: [PATCH 06/48] Allow local test builds without CI=1 --- ios/fastlane/Fastfile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ios/fastlane/Fastfile b/ios/fastlane/Fastfile index dfdc749..11d0380 100644 --- a/ios/fastlane/Fastfile +++ b/ios/fastlane/Fastfile @@ -29,7 +29,7 @@ platform :ios do lane :beta do |options| setup_ci if ENV['CI'] - is_example_repo = ENV['CI'] && ENV['GITHUB_REPOSITORY'] == 'jorgenpt/flutter_github_example' + is_example_repo = ENV['GITHUB_REPOSITORY'] == 'jorgenpt/flutter_github_example' if !is_example_repo && APP_IDENTIFIER == 'no.tjer.HelloWorld' then UI.user_error! "You need to update your Fastfile to use your own `APP_IDENTIFIER`" @@ -39,7 +39,7 @@ platform :ios do sync_code_signing( type: "appstore", app_identifier: APP_IDENTIFIER, - readonly: true + readonly: ENV.key?('CI') ) if !is_example_repo then From 301a134a8d67e107299873e379b3572d48d20b1b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B8rgen=20P=2E=20Tjern=C3=B8?= Date: Sat, 4 Feb 2023 16:31:56 -0800 Subject: [PATCH 07/48] Add a dependency to experiment with Pod caching --- ios/Flutter/Debug.xcconfig | 1 + ios/Flutter/Release.xcconfig | 1 + ios/Podfile | 43 ++++++++++ ios/Podfile.lock | 84 ++++++++++++++++++ ios/Runner.xcodeproj/project.pbxproj | 86 +++++++++++++++++++ .../contents.xcworkspacedata | 3 + pubspec.lock | 70 +++++++++++++++ pubspec.yaml | 3 +- 8 files changed, 290 insertions(+), 1 deletion(-) create mode 100644 ios/Podfile create mode 100644 ios/Podfile.lock diff --git a/ios/Flutter/Debug.xcconfig b/ios/Flutter/Debug.xcconfig index 592ceee..ec97fc6 100644 --- a/ios/Flutter/Debug.xcconfig +++ b/ios/Flutter/Debug.xcconfig @@ -1 +1,2 @@ +#include? "Pods/Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig" #include "Generated.xcconfig" diff --git a/ios/Flutter/Release.xcconfig b/ios/Flutter/Release.xcconfig index 592ceee..c4855bf 100644 --- a/ios/Flutter/Release.xcconfig +++ b/ios/Flutter/Release.xcconfig @@ -1 +1,2 @@ +#include? "Pods/Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig" #include "Generated.xcconfig" diff --git a/ios/Podfile b/ios/Podfile new file mode 100644 index 0000000..6f703e4 --- /dev/null +++ b/ios/Podfile @@ -0,0 +1,43 @@ +# Uncomment this line to define a global platform for your project +platform :ios, '14.0' + +# CocoaPods analytics sends network stats synchronously affecting flutter build latency. +ENV['COCOAPODS_DISABLE_STATS'] = 'true' + +project 'Runner', { + 'Debug' => :debug, + 'Profile' => :release, + 'Release' => :release, +} + +def flutter_root + generated_xcode_build_settings_path = File.expand_path(File.join('..', 'Flutter', 'Generated.xcconfig'), __FILE__) + unless File.exist?(generated_xcode_build_settings_path) + raise "#{generated_xcode_build_settings_path} must exist. If you're running pod install manually, make sure flutter pub get is executed first" + end + + File.foreach(generated_xcode_build_settings_path) do |line| + matches = line.match(/FLUTTER_ROOT\=(.*)/) + return matches[1].strip if matches + end + raise "FLUTTER_ROOT not found in #{generated_xcode_build_settings_path}. Try deleting Generated.xcconfig, then run flutter pub get" +end + +require File.expand_path(File.join('packages', 'flutter_tools', 'bin', 'podhelper'), flutter_root) + +flutter_ios_podfile_setup + +target 'Runner' do + pod 'FirebaseFirestore', :git => 'https://github.com/invertase/firestore-ios-sdk-frameworks.git', :tag => '10.3.0' + + use_frameworks! + use_modular_headers! + + flutter_install_all_ios_pods File.dirname(File.realpath(__FILE__)) +end + +post_install do |installer| + installer.pods_project.targets.each do |target| + flutter_additional_ios_build_settings(target) + end +end diff --git a/ios/Podfile.lock b/ios/Podfile.lock new file mode 100644 index 0000000..150ca31 --- /dev/null +++ b/ios/Podfile.lock @@ -0,0 +1,84 @@ +PODS: + - cloud_firestore (4.3.1): + - Firebase/Firestore (= 10.3.0) + - firebase_core + - Flutter + - nanopb (< 2.30910.0, >= 2.30908.0) + - Firebase/CoreOnly (10.3.0): + - FirebaseCore (= 10.3.0) + - Firebase/Firestore (10.3.0): + - Firebase/CoreOnly + - FirebaseFirestore (~> 10.3.0) + - firebase_core (2.4.1): + - Firebase/CoreOnly (= 10.3.0) + - Flutter + - FirebaseCore (10.3.0): + - FirebaseCoreInternal (~> 10.0) + - GoogleUtilities/Environment (~> 7.8) + - GoogleUtilities/Logger (~> 7.8) + - FirebaseCoreInternal (10.3.0): + - "GoogleUtilities/NSData+zlib (~> 7.8)" + - FirebaseFirestore (10.3.0): + - FirebaseFirestore/AutodetectLeveldb (= 10.3.0) + - FirebaseFirestore/AutodetectLeveldb (10.3.0): + - FirebaseFirestore/Base + - FirebaseFirestore/Base (10.3.0) + - Flutter (1.0.0) + - GoogleUtilities/Environment (7.10.0): + - PromisesObjC (< 3.0, >= 1.2) + - GoogleUtilities/Logger (7.10.0): + - GoogleUtilities/Environment + - "GoogleUtilities/NSData+zlib (7.10.0)" + - nanopb (2.30909.0): + - nanopb/decode (= 2.30909.0) + - nanopb/encode (= 2.30909.0) + - nanopb/decode (2.30909.0) + - nanopb/encode (2.30909.0) + - PromisesObjC (2.1.1) + +DEPENDENCIES: + - cloud_firestore (from `.symlinks/plugins/cloud_firestore/ios`) + - firebase_core (from `.symlinks/plugins/firebase_core/ios`) + - FirebaseFirestore (from `https://github.com/invertase/firestore-ios-sdk-frameworks.git`, tag `10.3.0`) + - Flutter (from `Flutter`) + +SPEC REPOS: + trunk: + - Firebase + - FirebaseCore + - FirebaseCoreInternal + - GoogleUtilities + - nanopb + - PromisesObjC + +EXTERNAL SOURCES: + cloud_firestore: + :path: ".symlinks/plugins/cloud_firestore/ios" + firebase_core: + :path: ".symlinks/plugins/firebase_core/ios" + FirebaseFirestore: + :git: https://github.com/invertase/firestore-ios-sdk-frameworks.git + :tag: 10.3.0 + Flutter: + :path: Flutter + +CHECKOUT OPTIONS: + FirebaseFirestore: + :git: https://github.com/invertase/firestore-ios-sdk-frameworks.git + :tag: 10.3.0 + +SPEC CHECKSUMS: + cloud_firestore: 5e5bb98722f66e820bf1aa7b3c98ffc9b2450ffb + Firebase: f92fc551ead69c94168d36c2b26188263860acd9 + firebase_core: bf59c32d2e53814f558efa20840c1902fa2fe461 + FirebaseCore: 988754646ab3bd4bdcb740f1bfe26b9f6c0d5f2a + FirebaseCoreInternal: 29b76f784d607df8b2a1259d73c3f04f1210137b + FirebaseFirestore: 7e640851187139eb7d2466370d1156099686170d + Flutter: f04841e97a9d0b0a8025694d0796dd46242b2854 + GoogleUtilities: bad72cb363809015b1f7f19beb1f1cd23c589f95 + nanopb: b552cce312b6c8484180ef47159bc0f65a1f0431 + PromisesObjC: ab77feca74fa2823e7af4249b8326368e61014cb + +PODFILE CHECKSUM: 9242d84c1634b89a2e0383710e8c7d23afc3f5b1 + +COCOAPODS: 1.11.3 diff --git a/ios/Runner.xcodeproj/project.pbxproj b/ios/Runner.xcodeproj/project.pbxproj index a8c4e98..54988bf 100644 --- a/ios/Runner.xcodeproj/project.pbxproj +++ b/ios/Runner.xcodeproj/project.pbxproj @@ -10,6 +10,7 @@ 1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */ = {isa = PBXBuildFile; fileRef = 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */; }; 3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */ = {isa = PBXBuildFile; fileRef = 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */; }; 74858FAF1ED2DC5600515810 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 74858FAE1ED2DC5600515810 /* AppDelegate.swift */; }; + 7A580568DE884B04EB4A8D1A /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B57F17F887861CCC6B39D367 /* Pods_Runner.framework */; }; 97C146FC1CF9000F007C117D /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FA1CF9000F007C117D /* Main.storyboard */; }; 97C146FE1CF9000F007C117D /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FD1CF9000F007C117D /* Assets.xcassets */; }; 97C147011CF9000F007C117D /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */; }; @@ -31,10 +32,12 @@ /* Begin PBXFileReference section */ 1498D2321E8E86230040F4C2 /* GeneratedPluginRegistrant.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GeneratedPluginRegistrant.h; sourceTree = ""; }; 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GeneratedPluginRegistrant.m; sourceTree = ""; }; + 1A6F8D955D4C224535D48BE5 /* Pods-Runner.profile.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.profile.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.profile.xcconfig"; sourceTree = ""; }; 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = AppFrameworkInfo.plist; path = Flutter/AppFrameworkInfo.plist; sourceTree = ""; }; 74858FAD1ED2DC5600515810 /* Runner-Bridging-Header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "Runner-Bridging-Header.h"; sourceTree = ""; }; 74858FAE1ED2DC5600515810 /* AppDelegate.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; 7AFA3C8E1D35360C0083082E /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; name = Release.xcconfig; path = Flutter/Release.xcconfig; sourceTree = ""; }; + 8E60D3430E10734494C2B30D /* Pods-Runner.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.debug.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig"; sourceTree = ""; }; 9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Debug.xcconfig; path = Flutter/Debug.xcconfig; sourceTree = ""; }; 9740EEB31CF90195004384FC /* Generated.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Generated.xcconfig; path = Flutter/Generated.xcconfig; sourceTree = ""; }; 97C146EE1CF9000F007C117D /* Runner.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Runner.app; sourceTree = BUILT_PRODUCTS_DIR; }; @@ -42,6 +45,8 @@ 97C146FD1CF9000F007C117D /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; 97C147001CF9000F007C117D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; }; 97C147021CF9000F007C117D /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + 9BF654901F18864CD878CDD4 /* Pods-Runner.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.release.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig"; sourceTree = ""; }; + B57F17F887861CCC6B39D367 /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -49,12 +54,24 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( + 7A580568DE884B04EB4A8D1A /* Pods_Runner.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXFrameworksBuildPhase section */ /* Begin PBXGroup section */ + 8851788EAA2E1C1712AA034E /* Pods */ = { + isa = PBXGroup; + children = ( + 8E60D3430E10734494C2B30D /* Pods-Runner.debug.xcconfig */, + 9BF654901F18864CD878CDD4 /* Pods-Runner.release.xcconfig */, + 1A6F8D955D4C224535D48BE5 /* Pods-Runner.profile.xcconfig */, + ); + name = Pods; + path = Pods; + sourceTree = ""; + }; 9740EEB11CF90186004384FC /* Flutter */ = { isa = PBXGroup; children = ( @@ -72,6 +89,8 @@ 9740EEB11CF90186004384FC /* Flutter */, 97C146F01CF9000F007C117D /* Runner */, 97C146EF1CF9000F007C117D /* Products */, + 8851788EAA2E1C1712AA034E /* Pods */, + F7E1A831467CAC907D1BAA12 /* Frameworks */, ); sourceTree = ""; }; @@ -98,6 +117,14 @@ path = Runner; sourceTree = ""; }; + F7E1A831467CAC907D1BAA12 /* Frameworks */ = { + isa = PBXGroup; + children = ( + B57F17F887861CCC6B39D367 /* Pods_Runner.framework */, + ); + name = Frameworks; + sourceTree = ""; + }; /* End PBXGroup section */ /* Begin PBXNativeTarget section */ @@ -105,12 +132,15 @@ isa = PBXNativeTarget; buildConfigurationList = 97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */; buildPhases = ( + 4C82CD0628B86693BB107A20 /* [CP] Check Pods Manifest.lock */, 9740EEB61CF901F6004384FC /* Run Script */, 97C146EA1CF9000F007C117D /* Sources */, 97C146EB1CF9000F007C117D /* Frameworks */, 97C146EC1CF9000F007C117D /* Resources */, 9705A1C41CF9048500538489 /* Embed Frameworks */, 3B06AD1E1E4923F5004D2608 /* Thin Binary */, + 5020AFA7CB45833683C433C7 /* [CP] Embed Pods Frameworks */, + 2C9FDB8C239E3625254DAB09 /* [CP] Copy Pods Resources */, ); buildRules = ( ); @@ -169,6 +199,23 @@ /* End PBXResourcesBuildPhase section */ /* Begin PBXShellScriptBuildPhase section */ + 2C9FDB8C239E3625254DAB09 /* [CP] Copy Pods Resources */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-resources-${CONFIGURATION}-input-files.xcfilelist", + ); + name = "[CP] Copy Pods Resources"; + outputFileListPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-resources-${CONFIGURATION}-output-files.xcfilelist", + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-resources.sh\"\n"; + showEnvVarsInLog = 0; + }; 3B06AD1E1E4923F5004D2608 /* Thin Binary */ = { isa = PBXShellScriptBuildPhase; alwaysOutOfDate = 1; @@ -184,6 +231,45 @@ shellPath = /bin/sh; shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" embed_and_thin"; }; + 4C82CD0628B86693BB107A20 /* [CP] Check Pods Manifest.lock */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + ); + inputPaths = ( + "${PODS_PODFILE_DIR_PATH}/Podfile.lock", + "${PODS_ROOT}/Manifest.lock", + ); + name = "[CP] Check Pods Manifest.lock"; + outputFileListPaths = ( + ); + outputPaths = ( + "$(DERIVED_FILE_DIR)/Pods-Runner-checkManifestLockResult.txt", + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; + showEnvVarsInLog = 0; + }; + 5020AFA7CB45833683C433C7 /* [CP] Embed Pods Frameworks */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-input-files.xcfilelist", + ); + name = "[CP] Embed Pods Frameworks"; + outputFileListPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-output-files.xcfilelist", + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks.sh\"\n"; + showEnvVarsInLog = 0; + }; 9740EEB61CF901F6004384FC /* Run Script */ = { isa = PBXShellScriptBuildPhase; alwaysOutOfDate = 1; diff --git a/ios/Runner.xcworkspace/contents.xcworkspacedata b/ios/Runner.xcworkspace/contents.xcworkspacedata index 1d526a1..21a3cc1 100644 --- a/ios/Runner.xcworkspace/contents.xcworkspacedata +++ b/ios/Runner.xcworkspace/contents.xcworkspacedata @@ -4,4 +4,7 @@ + + diff --git a/pubspec.lock b/pubspec.lock index f37839e..a07acc1 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -1,6 +1,14 @@ # Generated by pub # See https://dart.dev/tools/pub/glossary#lockfile packages: + _flutterfire_internals: + dependency: transitive + description: + name: _flutterfire_internals + sha256: "3ff770dfff04a67b0863dff205a0936784de1b87a5e99b11c693fc10e66a9ce3" + url: "https://pub.dev" + source: hosted + version: "1.0.12" async: dependency: transitive description: @@ -33,6 +41,30 @@ packages: url: "https://pub.dev" source: hosted version: "1.1.1" + cloud_firestore: + dependency: "direct main" + description: + name: cloud_firestore + sha256: a851106a2169c15614047b75ea10d0346650352c6669ab482306572aa4ed9a7d + url: "https://pub.dev" + source: hosted + version: "4.3.1" + cloud_firestore_platform_interface: + dependency: transitive + description: + name: cloud_firestore_platform_interface + sha256: "1fac512fef2bfe84ca7f372defbd9dd8efb108be96854db9023739a5b2aa9977" + url: "https://pub.dev" + source: hosted + version: "5.10.1" + cloud_firestore_web: + dependency: transitive + description: + name: cloud_firestore_web + sha256: "3fd9581c1447b6e8db6d0f19d0140b196a70ecf582bd1f71e7141fe9abf10ddb" + url: "https://pub.dev" + source: hosted + version: "3.2.1" collection: dependency: transitive description: @@ -57,6 +89,30 @@ packages: url: "https://pub.dev" source: hosted version: "1.3.1" + firebase_core: + dependency: transitive + description: + name: firebase_core + sha256: c129209ba55f3d4272c89fb4a4994c15bea77fb6de63a82d45fb6bc5c94e4355 + url: "https://pub.dev" + source: hosted + version: "2.4.1" + firebase_core_platform_interface: + dependency: transitive + description: + name: firebase_core_platform_interface + sha256: "5fab93f5b354648efa62e7cc829c90efb68c8796eecf87e0888cae2d5f3accd4" + url: "https://pub.dev" + source: hosted + version: "4.5.2" + firebase_core_web: + dependency: transitive + description: + name: firebase_core_web + sha256: "18b35ce111b0a4266abf723c825bcf9d4e2519d13638cc7f06f2a8dd960c75bc" + url: "https://pub.dev" + source: hosted + version: "2.1.0" flutter: dependency: "direct main" description: flutter @@ -75,6 +131,11 @@ packages: description: flutter source: sdk version: "0.0.0" + flutter_web_plugins: + dependency: transitive + description: flutter + source: sdk + version: "0.0.0" js: dependency: transitive description: @@ -123,6 +184,14 @@ packages: url: "https://pub.dev" source: hosted version: "1.8.2" + plugin_platform_interface: + dependency: transitive + description: + name: plugin_platform_interface + sha256: dbf0f707c78beedc9200146ad3cb0ab4d5da13c246336987be6940f026500d3a + url: "https://pub.dev" + source: hosted + version: "2.1.3" sky_engine: dependency: transitive description: flutter @@ -186,3 +255,4 @@ packages: version: "2.1.4" sdks: dart: ">=2.18.0 <3.0.0" + flutter: ">=1.20.0" diff --git a/pubspec.yaml b/pubspec.yaml index ba0d942..7cace6f 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -29,7 +29,8 @@ environment: dependencies: flutter: sdk: flutter - + + cloud_firestore: ^4.3.1 # The following adds the Cupertino Icons font to your application. # Use with the CupertinoIcons class for iOS style icons. From 70eaaf6210e51e2d50feb3a9e0faf9e3b5e1f4e6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B8rgen=20P=2E=20Tjern=C3=B8?= Date: Sat, 4 Feb 2023 16:40:58 -0800 Subject: [PATCH 08/48] Attempt caching of pods --- .github/workflows/publish_ios.yml | 22 +++++++++++++++++++--- 1 file changed, 19 insertions(+), 3 deletions(-) diff --git a/.github/workflows/publish_ios.yml b/.github/workflows/publish_ios.yml index bea5037..5b5ce59 100644 --- a/.github/workflows/publish_ios.yml +++ b/.github/workflows/publish_ios.yml @@ -44,10 +44,19 @@ jobs: deriveddata-${{ steps.get-date.outputs.week }}-${{ steps.get-date.outputs.date }} deriveddata-${{ steps.get-date.outputs.week }} deriveddata + - uses: actions/cache@v2 + name: Pods cache + with: + path: .pods-cache + key: ios-pods-${{ hashFiles(ios/Podfile.lock) }} + restore-keys: | + ios-pods- # Manually extract the derived data using tar so we can preserve permissions & extended file flags, which xcode # relies on - - name: Extract DerivedData from cache - run: if [ -f .deriveddata-cache/cache.tar ]; then tar xvPpf .deriveddata-cache/cache.tar; else echo "No cache file"; fi + - name: Extract data from cache + run: | + if [ -f .deriveddata-cache/cache.tar ]; then tar xvPpf .deriveddata-cache/cache.tar; else echo "No deriveddata cache file"; fi + if [ -f .pods-cache/cache.tar ]; then tar xvPpf .pods-cache/cache.tar; else echo "No pods cache file"; fi # Set the "modified time" of every file in the repository to be the time it was most recently modified in git -- this means that xcode # can reliably use the `mtime` to see which files have changed. By default it's set to the time you check out. - name: Update file mtimes @@ -85,4 +94,11 @@ jobs: run: cd ios && bundle exec fastlane beta "build_name:${{ github.ref_name }}" # Package up the derived data for the caching action, including permissions and fine grained timestamps - name: Package DerivedData for cache - run: mkdir -p .deriveddata-cache && tar cfPp .deriveddata-cache/cache.tar --format posix build/ios/localDerivedData + run: | + mkdir -p .deriveddata-cache + tar cfPp .deriveddata-cache/cache.tar --format posix build/ios/localDerivedData + if [ -d "build/ios/Pods.build" ]; then + tar cfPp .pods-cache/cache.tar --format posix ios/Pods build/ios/Pods.build build/ios/pod_inputs.fingerprint + else + rm -f .pods-cache/cache.tar + fi From 49c383e1aa9a48d9fae0a7293f44ff320f80a03d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B8rgen=20P=2E=20Tjern=C3=B8?= Date: Sat, 4 Feb 2023 16:50:17 -0800 Subject: [PATCH 09/48] Fixup hashFiles call --- .github/workflows/publish_ios.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/publish_ios.yml b/.github/workflows/publish_ios.yml index 5b5ce59..0bcb2cb 100644 --- a/.github/workflows/publish_ios.yml +++ b/.github/workflows/publish_ios.yml @@ -48,7 +48,7 @@ jobs: name: Pods cache with: path: .pods-cache - key: ios-pods-${{ hashFiles(ios/Podfile.lock) }} + key: ios-pods-${{ hashFiles('ios/Podfile.lock') }} restore-keys: | ios-pods- # Manually extract the derived data using tar so we can preserve permissions & extended file flags, which xcode From e79dfc6f37b59e7c2cf094c817528396fe17f389 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B8rgen=20P=2E=20Tjern=C3=B8?= Date: Sat, 4 Feb 2023 17:06:44 -0800 Subject: [PATCH 10/48] Upgrade to actions/cache@v3 --- .github/workflows/publish_ios.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/publish_ios.yml b/.github/workflows/publish_ios.yml index 0bcb2cb..a6437b9 100644 --- a/.github/workflows/publish_ios.yml +++ b/.github/workflows/publish_ios.yml @@ -34,7 +34,7 @@ jobs: shell: bash # Attempt to fetch the DerivedData from cache, by preferring one from earlier this minute, then one earlier # this hour, then one earlier today, finally one earlier this week, and at last, any time. - - uses: actions/cache@v2 + - uses: actions/cache@v3 name: DerivedData cache with: path: .deriveddata-cache @@ -44,7 +44,7 @@ jobs: deriveddata-${{ steps.get-date.outputs.week }}-${{ steps.get-date.outputs.date }} deriveddata-${{ steps.get-date.outputs.week }} deriveddata - - uses: actions/cache@v2 + - uses: actions/cache@v3 name: Pods cache with: path: .pods-cache From a1283b0603974bc82082da1f51775a774bc4ce62 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B8rgen=20P=2E=20Tjern=C3=B8?= Date: Sat, 4 Feb 2023 17:07:02 -0800 Subject: [PATCH 11/48] Try to fix pod caching --- .github/workflows/publish_ios.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/publish_ios.yml b/.github/workflows/publish_ios.yml index a6437b9..311c6de 100644 --- a/.github/workflows/publish_ios.yml +++ b/.github/workflows/publish_ios.yml @@ -95,9 +95,9 @@ jobs: # Package up the derived data for the caching action, including permissions and fine grained timestamps - name: Package DerivedData for cache run: | - mkdir -p .deriveddata-cache + mkdir -p .deriveddata-cache .pods-cache tar cfPp .deriveddata-cache/cache.tar --format posix build/ios/localDerivedData - if [ -d "build/ios/Pods.build" ]; then + if [[ -d "ios/Pods" ]]; then tar cfPp .pods-cache/cache.tar --format posix ios/Pods build/ios/Pods.build build/ios/pod_inputs.fingerprint else rm -f .pods-cache/cache.tar From ee2ec4fc219f39dbb5dad473795916b478cd4ddb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B8rgen=20P=2E=20Tjern=C3=B8?= Date: Sat, 4 Feb 2023 17:17:48 -0800 Subject: [PATCH 12/48] Better output grouping inside Fastfile --- ios/fastlane/Fastfile | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/ios/fastlane/Fastfile b/ios/fastlane/Fastfile index 11d0380..fdda99d 100644 --- a/ios/fastlane/Fastfile +++ b/ios/fastlane/Fastfile @@ -36,11 +36,13 @@ platform :ios do end # Download code signing certificates using `match` (and the `MATCH_PASSWORD` secret) + $stdout << "::group::Sync code signing\n" sync_code_signing( type: "appstore", app_identifier: APP_IDENTIFIER, readonly: ENV.key?('CI') ) + $stdout << "::endgroup::\n" if !is_example_repo then if APPSTORECONNECT_ISSUER_ID == '69a6de83-feb7-47e3-e053-5b8c7c11a4d1' then @@ -52,10 +54,12 @@ platform :ios do end # We expose the key data using `APP_STORE_CONNECT_API_KEY_KEY` secret on GH + $stdout << "::group::Load App Store Connect API key\n" app_store_connect_api_key( key_id: APPSTORECONNECT_KEY_ID, issuer_id: APPSTORECONNECT_ISSUER_ID ) + $stdout << "::endgroup::\n" # Figure out the build number (and optionally build name) new_build_number = (latest_testflight_build_number + 1) @@ -65,14 +69,17 @@ platform :ios do end # Prep the xcodeproject from Flutter without building (`--config-only`) + $stdout << "::group::Configure project\n" sh( "flutter", "build", "ios", "--config-only", "--release", "--no-pub", "--no-codesign", "--build-number", new_build_number.to_s, *extra_config_args ) + $stdout << "::endgroup::\n" # Build & sign using Runner.xcworkspace + $stdout << "::group::Build app\n" build_app( workspace: "Runner.xcworkspace", scheme: "Runner", @@ -80,11 +87,14 @@ platform :ios do xcargs: "-IgnoreFileSystemDeviceInodeChanges=YES", derived_data_path: "../build/ios/localDerivedData", ) + $stdout << "::endgroup::\n" + $stdout << "::group::Upload to TestFlight\n" upload_to_testflight( # This takes a long time, so don't waste GH runner minutes (but it means manually needing to # set the build live for external testers). skip_waiting_for_build_processing: true, ) + $stdout << "::endgroup::\n" end end From 0ad43870f9aa287a8f4435c58e947bcd130ff27a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B8rgen=20P=2E=20Tjern=C3=B8?= Date: Sat, 4 Feb 2023 17:24:58 -0800 Subject: [PATCH 13/48] Experiment with caching stuff --- .github/workflows/publish_ios.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/workflows/publish_ios.yml b/.github/workflows/publish_ios.yml index 311c6de..f0a6a00 100644 --- a/.github/workflows/publish_ios.yml +++ b/.github/workflows/publish_ios.yml @@ -98,7 +98,8 @@ jobs: mkdir -p .deriveddata-cache .pods-cache tar cfPp .deriveddata-cache/cache.tar --format posix build/ios/localDerivedData if [[ -d "ios/Pods" ]]; then - tar cfPp .pods-cache/cache.tar --format posix ios/Pods build/ios/Pods.build build/ios/pod_inputs.fingerprint + find build/ios + tar cfPp .pods-cache/cache.tar --format posix ios/Pods else rm -f .pods-cache/cache.tar fi From ea3b42a54d50c35fcde8ab452b0263e304838ae9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B8rgen=20P=2E=20Tjern=C3=B8?= Date: Sat, 4 Feb 2023 17:27:12 -0800 Subject: [PATCH 14/48] Fix use of deprecated workflow behavior --- .github/workflows/publish_ios.yml | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/.github/workflows/publish_ios.yml b/.github/workflows/publish_ios.yml index f0a6a00..053de65 100644 --- a/.github/workflows/publish_ios.yml +++ b/.github/workflows/publish_ios.yml @@ -21,16 +21,16 @@ jobs: steps: - name: Check out from git - uses: actions/checkout@v2 + uses: actions/checkout@v3 # This retrieves the current date & week in a format that we can use for keying our # cache on to help us pick the most recent cached data - name: Fetch date for cache key id: get-date run: | - echo "::set-output name=week::$(/bin/date -u "+%U")" - echo "::set-output name=date::$(/bin/date -u "+%Y%m%d")" - echo "::set-output name=hour::$(/bin/date -u "+%H")" - echo "::set-output name=minute::$(/bin/date -u "+%M")" + echo "week=$(/bin/date -u "+%U")" >> $GITHUB_OUTPUT + echo "date=$(/bin/date -u "+%Y%m%d")" >> $GITHUB_OUTPUT + echo "hour=$(/bin/date -u "+%H")" >> $GITHUB_OUTPUT + echo "minute=$(/bin/date -u "+%M")" >> $GITHUB_OUTPUT shell: bash # Attempt to fetch the DerivedData from cache, by preferring one from earlier this minute, then one earlier # this hour, then one earlier today, finally one earlier this week, and at last, any time. From 7e4cd2de83d25e48a42a0c7d3b0c107447851f7e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B8rgen=20P=2E=20Tjern=C3=B8?= Date: Sat, 4 Feb 2023 17:33:17 -0800 Subject: [PATCH 15/48] Force macOS 12 builder --- .github/workflows/publish_ios.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/publish_ios.yml b/.github/workflows/publish_ios.yml index 053de65..9dafd58 100644 --- a/.github/workflows/publish_ios.yml +++ b/.github/workflows/publish_ios.yml @@ -12,7 +12,7 @@ on: jobs: build_and_publish: - runs-on: macos-latest + runs-on: macos-12 env: # Point the `ruby/setup-ruby` action at this Gemfile, so it From 59683b3ab8bb9741f2b4691ea2bd7293660f7e8c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B8rgen=20P=2E=20Tjern=C3=B8?= Date: Sat, 4 Feb 2023 17:35:13 -0800 Subject: [PATCH 16/48] Improve some grouping --- ios/fastlane/Fastfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ios/fastlane/Fastfile b/ios/fastlane/Fastfile index fdda99d..c26476b 100644 --- a/ios/fastlane/Fastfile +++ b/ios/fastlane/Fastfile @@ -61,6 +61,7 @@ platform :ios do ) $stdout << "::endgroup::\n" + $stdout << "::group::Configure project\n" # Figure out the build number (and optionally build name) new_build_number = (latest_testflight_build_number + 1) extra_config_args = [] @@ -69,7 +70,6 @@ platform :ios do end # Prep the xcodeproject from Flutter without building (`--config-only`) - $stdout << "::group::Configure project\n" sh( "flutter", "build", "ios", "--config-only", "--release", "--no-pub", "--no-codesign", From df0b2b93b7285dfd099d24070ae94e4f7475dace Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B8rgen=20P=2E=20Tjern=C3=B8?= Date: Sat, 4 Feb 2023 17:37:06 -0800 Subject: [PATCH 17/48] Include pod_inputs.fingerprints in cache --- .github/workflows/publish_ios.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/publish_ios.yml b/.github/workflows/publish_ios.yml index 9dafd58..6cd40f1 100644 --- a/.github/workflows/publish_ios.yml +++ b/.github/workflows/publish_ios.yml @@ -99,7 +99,7 @@ jobs: tar cfPp .deriveddata-cache/cache.tar --format posix build/ios/localDerivedData if [[ -d "ios/Pods" ]]; then find build/ios - tar cfPp .pods-cache/cache.tar --format posix ios/Pods + tar cfPp .pods-cache/cache.tar --format posix ios/Pods build/ios/pod_inputs.fingerprint else rm -f .pods-cache/cache.tar fi From 28e3c0d9d9f9d3da4b7d858edf66d7dca039b46c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B8rgen=20P=2E=20Tjern=C3=B8?= Date: Sat, 4 Feb 2023 17:44:22 -0800 Subject: [PATCH 18/48] Include some more paths to cocoapods cache --- .github/workflows/publish_ios.yml | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/.github/workflows/publish_ios.yml b/.github/workflows/publish_ios.yml index 6cd40f1..dd4bf34 100644 --- a/.github/workflows/publish_ios.yml +++ b/.github/workflows/publish_ios.yml @@ -47,8 +47,11 @@ jobs: - uses: actions/cache@v3 name: Pods cache with: - path: .pods-cache - key: ios-pods-${{ hashFiles('ios/Podfile.lock') }} + path: | + .pods-cache + ~/Library/Caches/CocoaPods + ~/.cocoapods + key: ios-pods-${{ hashFiles('ios/Podfile.lock') }}-v2 restore-keys: | ios-pods- # Manually extract the derived data using tar so we can preserve permissions & extended file flags, which xcode From 1814330cd110b1b2be8ae54f8ac2ef0574fcb38c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B8rgen=20P=2E=20Tjern=C3=B8?= Date: Sat, 3 Feb 2024 14:52:57 -0800 Subject: [PATCH 19/48] Bump Flutter version --- .github/workflows/publish_ios.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/publish_ios.yml b/.github/workflows/publish_ios.yml index dd4bf34..13bf752 100644 --- a/.github/workflows/publish_ios.yml +++ b/.github/workflows/publish_ios.yml @@ -78,7 +78,7 @@ jobs: uses: subosito/flutter-action@v2 with: cache: true - flutter-version: 3.7.1 + flutter-version: 3.19.6 # Start an ssh-agent that will provide the SSH key from the # SSH_PRIVATE_KEY secret to `fastlane match` - name: Setup SSH key From 1298db130335a5318194213bac3cfc7622a8164b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B8rgen=20P=2E=20Tjern=C3=B8?= Date: Sat, 3 Feb 2024 14:53:05 -0800 Subject: [PATCH 20/48] Reformat --- .github/workflows/publish_ios.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/publish_ios.yml b/.github/workflows/publish_ios.yml index 13bf752..3d45f86 100644 --- a/.github/workflows/publish_ios.yml +++ b/.github/workflows/publish_ios.yml @@ -22,7 +22,7 @@ jobs: steps: - name: Check out from git uses: actions/checkout@v3 - # This retrieves the current date & week in a format that we can use for keying our + # This retrieves the current date & week in a format that we can use for keying our # cache on to help us pick the most recent cached data - name: Fetch date for cache key id: get-date @@ -85,8 +85,8 @@ jobs: env: SSH_AUTH_SOCK: /tmp/ssh_agent.sock run: | - ssh-agent -a $SSH_AUTH_SOCK > /dev/null - ssh-add - <<< "${{ secrets.SSH_PRIVATE_KEY }}" + ssh-agent -a $SSH_AUTH_SOCK > /dev/null + ssh-add - <<< "${{ secrets.SSH_PRIVATE_KEY }}" - name: Download dependencies run: flutter pub get - name: Build & Publish to TestFlight with Fastlane From 7188e0a4846bc536d03bc9de1d23923740282cec Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B8rgen=20P=2E=20Tjern=C3=B8?= Date: Sat, 3 Feb 2024 14:53:53 -0800 Subject: [PATCH 21/48] Try new beta runner --- .github/workflows/publish_ios.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/publish_ios.yml b/.github/workflows/publish_ios.yml index 3d45f86..fba6ae6 100644 --- a/.github/workflows/publish_ios.yml +++ b/.github/workflows/publish_ios.yml @@ -12,7 +12,7 @@ on: jobs: build_and_publish: - runs-on: macos-12 + runs-on: macos-14 # Current beta runner (M1), should be faster env: # Point the `ruby/setup-ruby` action at this Gemfile, so it From bedbbe014d70e2ffc973666315d5dc154f84efe4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B8rgen=20P=2E=20Tjern=C3=B8?= Date: Sat, 3 Feb 2024 15:00:43 -0800 Subject: [PATCH 22/48] `bundle lock --add-platform arm64-darwin-22` --- ios/Gemfile.lock | 1 + 1 file changed, 1 insertion(+) diff --git a/ios/Gemfile.lock b/ios/Gemfile.lock index ddf005b..8b9efb4 100644 --- a/ios/Gemfile.lock +++ b/ios/Gemfile.lock @@ -274,6 +274,7 @@ GEM zeitwerk (2.5.4) PLATFORMS + arm64-darwin-22 x86_64-darwin-19 x86_64-darwin-21 From cc8c4472c539473d560366cf08147f6a9b6cc6a1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B8rgen=20P=2E=20Tjern=C3=B8?= Date: Sat, 3 Feb 2024 15:02:24 -0800 Subject: [PATCH 23/48] Switch to node20 actions Fixes a build warning --- .github/workflows/publish_ios.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/publish_ios.yml b/.github/workflows/publish_ios.yml index fba6ae6..98e91a6 100644 --- a/.github/workflows/publish_ios.yml +++ b/.github/workflows/publish_ios.yml @@ -21,7 +21,7 @@ jobs: steps: - name: Check out from git - uses: actions/checkout@v3 + uses: actions/checkout@v4 # This retrieves the current date & week in a format that we can use for keying our # cache on to help us pick the most recent cached data - name: Fetch date for cache key @@ -34,7 +34,7 @@ jobs: shell: bash # Attempt to fetch the DerivedData from cache, by preferring one from earlier this minute, then one earlier # this hour, then one earlier today, finally one earlier this week, and at last, any time. - - uses: actions/cache@v3 + - uses: actions/cache@v4 name: DerivedData cache with: path: .deriveddata-cache @@ -44,7 +44,7 @@ jobs: deriveddata-${{ steps.get-date.outputs.week }}-${{ steps.get-date.outputs.date }} deriveddata-${{ steps.get-date.outputs.week }} deriveddata - - uses: actions/cache@v3 + - uses: actions/cache@v4 name: Pods cache with: path: | From eceb070304f4dc600bd769a317900c1be58d546e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B8rgen=20P=2E=20Tjern=C3=B8?= Date: Sat, 3 Feb 2024 15:05:38 -0800 Subject: [PATCH 24/48] Fix typo'd flutter-version --- .github/workflows/publish_ios.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/publish_ios.yml b/.github/workflows/publish_ios.yml index 98e91a6..fe93b73 100644 --- a/.github/workflows/publish_ios.yml +++ b/.github/workflows/publish_ios.yml @@ -78,7 +78,7 @@ jobs: uses: subosito/flutter-action@v2 with: cache: true - flutter-version: 3.19.6 + flutter-version: 3.16.9 # Start an ssh-agent that will provide the SSH key from the # SSH_PRIVATE_KEY secret to `fastlane match` - name: Setup SSH key From 1dac47bb193679a1a7ba3c32b5cf4802949694b5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B8rgen=20P=2E=20Tjern=C3=B8?= Date: Sat, 3 Feb 2024 15:13:20 -0800 Subject: [PATCH 25/48] Temporarily disable TestFlight uploads --- ios/fastlane/Fastfile | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/ios/fastlane/Fastfile b/ios/fastlane/Fastfile index c26476b..62608b8 100644 --- a/ios/fastlane/Fastfile +++ b/ios/fastlane/Fastfile @@ -89,12 +89,12 @@ platform :ios do ) $stdout << "::endgroup::\n" - $stdout << "::group::Upload to TestFlight\n" - upload_to_testflight( - # This takes a long time, so don't waste GH runner minutes (but it means manually needing to - # set the build live for external testers). - skip_waiting_for_build_processing: true, - ) - $stdout << "::endgroup::\n" + # $stdout << "::group::Upload to TestFlight\n" + # upload_to_testflight( + # # This takes a long time, so don't waste GH runner minutes (but it means manually needing to + # # set the build live for external testers). + # skip_waiting_for_build_processing: true, + # ) + # $stdout << "::endgroup::\n" end end From ec67dea1ea24b283191c96e52d852017f813d85e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B8rgen=20P=2E=20Tjern=C3=B8?= Date: Sat, 3 Feb 2024 15:14:50 -0800 Subject: [PATCH 26/48] Bump fastlane --- ios/Gemfile.lock | 155 ++++++++++++++++++++++++----------------------- 1 file changed, 79 insertions(+), 76 deletions(-) diff --git a/ios/Gemfile.lock b/ios/Gemfile.lock index 8b9efb4..c4f60a0 100644 --- a/ios/Gemfile.lock +++ b/ios/Gemfile.lock @@ -3,46 +3,52 @@ GEM specs: CFPropertyList (3.0.6) rexml - activesupport (6.1.6) + activesupport (7.1.3) + base64 + bigdecimal concurrent-ruby (~> 1.0, >= 1.0.2) + connection_pool (>= 2.2.5) + drb i18n (>= 1.6, < 2) minitest (>= 5.1) + mutex_m tzinfo (~> 2.0) - zeitwerk (~> 2.3) - addressable (2.8.1) + addressable (2.8.6) public_suffix (>= 2.0.2, < 6.0) algoliasearch (1.27.5) httpclient (~> 2.8, >= 2.8.3) json (>= 1.5.1) artifactory (3.0.15) atomos (0.1.3) - aws-eventstream (1.2.0) - aws-partitions (1.705.0) - aws-sdk-core (3.170.0) - aws-eventstream (~> 1, >= 1.0.2) + aws-eventstream (1.3.0) + aws-partitions (1.887.0) + aws-sdk-core (3.191.0) + aws-eventstream (~> 1, >= 1.3.0) aws-partitions (~> 1, >= 1.651.0) - aws-sigv4 (~> 1.5) + aws-sigv4 (~> 1.8) jmespath (~> 1, >= 1.6.1) - aws-sdk-kms (1.62.0) - aws-sdk-core (~> 3, >= 3.165.0) + aws-sdk-kms (1.77.0) + aws-sdk-core (~> 3, >= 3.191.0) aws-sigv4 (~> 1.1) - aws-sdk-s3 (1.119.0) - aws-sdk-core (~> 3, >= 3.165.0) + aws-sdk-s3 (1.143.0) + aws-sdk-core (~> 3, >= 3.191.0) aws-sdk-kms (~> 1) - aws-sigv4 (~> 1.4) - aws-sigv4 (1.5.2) + aws-sigv4 (~> 1.8) + aws-sigv4 (1.8.0) aws-eventstream (~> 1, >= 1.0.2) babosa (1.0.4) + base64 (0.2.0) + bigdecimal (3.1.6) claide (1.1.0) - cocoapods (1.11.3) + cocoapods (1.15.0) addressable (~> 2.8) claide (>= 1.0.2, < 2.0) - cocoapods-core (= 1.11.3) + cocoapods-core (= 1.15.0) cocoapods-deintegrate (>= 1.0.3, < 2.0) - cocoapods-downloader (>= 1.4.0, < 2.0) + cocoapods-downloader (>= 2.1, < 3.0) cocoapods-plugins (>= 1.0.0, < 2.0) cocoapods-search (>= 1.0.0, < 2.0) - cocoapods-trunk (>= 1.4.0, < 2.0) + cocoapods-trunk (>= 1.6.0, < 2.0) cocoapods-try (>= 1.1.0, < 2.0) colored2 (~> 3.1) escape (~> 0.0.4) @@ -50,10 +56,10 @@ GEM gh_inspector (~> 1.0) molinillo (~> 0.8.0) nap (~> 1.0) - ruby-macho (>= 1.0, < 3.0) - xcodeproj (>= 1.21.0, < 2.0) - cocoapods-core (1.11.3) - activesupport (>= 5.0, < 7) + ruby-macho (>= 2.3.0, < 3.0) + xcodeproj (>= 1.23.0, < 2.0) + cocoapods-core (1.15.0) + activesupport (>= 5.0, < 8) addressable (~> 2.8) algoliasearch (~> 1.0) concurrent-ruby (~> 1.1) @@ -63,7 +69,7 @@ GEM public_suffix (~> 4.0) typhoeus (~> 1.0) cocoapods-deintegrate (1.0.5) - cocoapods-downloader (1.6.3) + cocoapods-downloader (2.1) cocoapods-plugins (1.0.0) nap cocoapods-search (1.0.1) @@ -75,18 +81,20 @@ GEM colored2 (3.1.2) commander (4.6.0) highline (~> 2.0.0) - concurrent-ruby (1.1.10) + concurrent-ruby (1.2.3) + connection_pool (2.4.1) declarative (0.0.20) - digest-crc (0.6.4) + digest-crc (0.6.5) rake (>= 12.0.0, < 14.0.0) - domain_name (0.5.20190701) - unf (>= 0.0.5, < 1.0.0) + domain_name (0.6.20240107) dotenv (2.8.1) + drb (2.2.0) + ruby2_keywords emoji_regex (3.2.3) escape (0.0.4) - ethon (0.15.0) + ethon (0.16.0) ffi (>= 1.15.0) - excon (0.99.0) + excon (0.109.0) faraday (1.10.3) faraday-em_http (~> 1.0) faraday-em_synchrony (~> 1.0) @@ -115,8 +123,8 @@ GEM faraday-retry (1.0.3) faraday_middleware (1.2.0) faraday (~> 1.0) - fastimage (2.2.6) - fastlane (2.211.0) + fastimage (2.3.0) + fastlane (2.219.0) CFPropertyList (>= 2.3, < 4.0.0) addressable (>= 2.8, < 3.0.0) artifactory (~> 3.0) @@ -135,33 +143,35 @@ GEM gh_inspector (>= 1.1.2, < 2.0.0) google-apis-androidpublisher_v3 (~> 0.3) google-apis-playcustomapp_v1 (~> 0.1) + google-cloud-env (>= 1.6.0, < 2.0.0) google-cloud-storage (~> 1.31) highline (~> 2.0) + http-cookie (~> 1.0.5) json (< 3.0.0) jwt (>= 2.1.0, < 3) mini_magick (>= 4.9.4, < 5.0.0) - multipart-post (~> 2.0.0) + multipart-post (>= 2.0.0, < 3.0.0) naturally (~> 2.2) - optparse (~> 0.1.1) + optparse (>= 0.1.1) plist (>= 3.1.0, < 4.0.0) rubyzip (>= 2.0.0, < 3.0.0) security (= 0.1.3) simctl (~> 1.6.3) terminal-notifier (>= 2.0.0, < 3.0.0) - terminal-table (>= 1.4.5, < 2.0.0) + terminal-table (~> 3) tty-screen (>= 0.6.3, < 1.0.0) tty-spinner (>= 0.8.0, < 1.0.0) word_wrap (~> 1.0.0) xcodeproj (>= 1.13.0, < 2.0.0) xcpretty (~> 0.3.0) xcpretty-travis-formatter (>= 0.0.3) - ffi (1.15.5) + ffi (1.16.3) fourflusher (2.3.1) fuzzy_match (2.0.4) gh_inspector (1.1.3) - google-apis-androidpublisher_v3 (0.33.0) - google-apis-core (>= 0.9.1, < 2.a) - google-apis-core (0.10.0) + google-apis-androidpublisher_v3 (0.54.0) + google-apis-core (>= 0.11.0, < 2.a) + google-apis-core (0.11.3) addressable (~> 2.5, >= 2.5.1) googleauth (>= 0.16.2, < 2.a) httpclient (>= 2.8.1, < 3.a) @@ -169,31 +179,29 @@ GEM representable (~> 3.0) retriable (>= 2.0, < 4.a) rexml - webrick - google-apis-iamcredentials_v1 (0.16.0) - google-apis-core (>= 0.9.1, < 2.a) - google-apis-playcustomapp_v1 (0.12.0) - google-apis-core (>= 0.9.1, < 2.a) - google-apis-storage_v1 (0.19.0) - google-apis-core (>= 0.9.0, < 2.a) - google-cloud-core (1.6.0) - google-cloud-env (~> 1.0) + google-apis-iamcredentials_v1 (0.17.0) + google-apis-core (>= 0.11.0, < 2.a) + google-apis-playcustomapp_v1 (0.13.0) + google-apis-core (>= 0.11.0, < 2.a) + google-apis-storage_v1 (0.31.0) + google-apis-core (>= 0.11.0, < 2.a) + google-cloud-core (1.6.1) + google-cloud-env (>= 1.0, < 3.a) google-cloud-errors (~> 1.0) google-cloud-env (1.6.0) faraday (>= 0.17.3, < 3.0) - google-cloud-errors (1.3.0) - google-cloud-storage (1.44.0) + google-cloud-errors (1.3.1) + google-cloud-storage (1.47.0) addressable (~> 2.8) digest-crc (~> 0.4) google-apis-iamcredentials_v1 (~> 0.1) - google-apis-storage_v1 (~> 0.19.0) + google-apis-storage_v1 (~> 0.31.0) google-cloud-core (~> 1.6) googleauth (>= 0.16.2, < 2.a) mini_mime (~> 1.0) - googleauth (1.3.0) + googleauth (1.8.1) faraday (>= 0.17.3, < 3.a) jwt (>= 1.4, < 3.0) - memoist (~> 0.16) multi_json (~> 1.11) os (>= 0.9, < 2.0) signet (>= 0.16, < 2.a) @@ -201,39 +209,39 @@ GEM http-cookie (1.0.5) domain_name (~> 0.5) httpclient (2.8.3) - i18n (1.10.0) + i18n (1.14.1) concurrent-ruby (~> 1.0) jmespath (1.6.2) - json (2.6.3) - jwt (2.7.0) - memoist (0.16.2) + json (2.7.1) + jwt (2.7.1) mini_magick (4.12.0) - mini_mime (1.1.2) - minitest (5.15.0) + mini_mime (1.1.5) + minitest (5.21.2) molinillo (0.8.0) multi_json (1.15.0) - multipart-post (2.0.0) + multipart-post (2.3.0) + mutex_m (0.2.0) nanaimo (0.3.0) nap (1.1.0) naturally (2.2.1) netrc (0.11.0) - optparse (0.1.1) + optparse (0.4.0) os (1.1.4) - plist (3.6.0) + plist (3.7.1) public_suffix (4.0.7) - rake (13.0.6) + rake (13.1.0) representable (3.2.0) declarative (< 0.1.0) trailblazer-option (>= 0.1.1, < 0.2.0) uber (< 0.2.0) retriable (3.1.2) - rexml (3.2.5) + rexml (3.2.6) rouge (2.0.7) ruby-macho (2.5.1) ruby2_keywords (0.0.5) rubyzip (2.3.2) security (0.1.3) - signet (0.17.0) + signet (0.18.0) addressable (~> 2.8) faraday (>= 0.17.5, < 3.a) jwt (>= 1.5, < 3.0) @@ -242,25 +250,21 @@ GEM CFPropertyList naturally terminal-notifier (2.0.0) - terminal-table (1.8.0) - unicode-display_width (~> 1.1, >= 1.1.1) + terminal-table (3.0.2) + unicode-display_width (>= 1.1.1, < 3) trailblazer-option (0.1.2) tty-cursor (0.7.1) - tty-screen (0.8.1) + tty-screen (0.8.2) tty-spinner (0.9.3) tty-cursor (~> 0.7) - typhoeus (1.4.0) + typhoeus (1.4.1) ethon (>= 0.9.0) - tzinfo (2.0.4) + tzinfo (2.0.6) concurrent-ruby (~> 1.0) uber (0.1.0) - unf (0.1.4) - unf_ext - unf_ext (0.0.8.2) - unicode-display_width (1.8.0) - webrick (1.8.1) + unicode-display_width (2.5.0) word_wrap (1.0.0) - xcodeproj (1.22.0) + xcodeproj (1.24.0) CFPropertyList (>= 2.3.3, < 4.0) atomos (~> 0.1.3) claide (>= 1.0.2, < 2.0) @@ -271,7 +275,6 @@ GEM rouge (~> 2.0.7) xcpretty-travis-formatter (1.0.1) xcpretty (~> 0.2, >= 0.0.7) - zeitwerk (2.5.4) PLATFORMS arm64-darwin-22 From cd706a9f633c380b9b9b75ffa04a2d9bd52d15ca Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B8rgen=20P=2E=20Tjern=C3=B8?= Date: Sun, 4 Feb 2024 11:26:20 -0800 Subject: [PATCH 27/48] Try using irgaly/xcode-cache@v1 --- .github/workflows/publish_ios.yml | 36 +++++++++---------------------- 1 file changed, 10 insertions(+), 26 deletions(-) diff --git a/.github/workflows/publish_ios.yml b/.github/workflows/publish_ios.yml index fe93b73..0a1fbd4 100644 --- a/.github/workflows/publish_ios.yml +++ b/.github/workflows/publish_ios.yml @@ -13,7 +13,8 @@ on: jobs: build_and_publish: runs-on: macos-14 # Current beta runner (M1), should be faster - + permissions: + actions: write env: # Point the `ruby/setup-ruby` action at this Gemfile, so it # caches dependencies for us. @@ -22,29 +23,14 @@ jobs: steps: - name: Check out from git uses: actions/checkout@v4 - # This retrieves the current date & week in a format that we can use for keying our - # cache on to help us pick the most recent cached data - - name: Fetch date for cache key - id: get-date - run: | - echo "week=$(/bin/date -u "+%U")" >> $GITHUB_OUTPUT - echo "date=$(/bin/date -u "+%Y%m%d")" >> $GITHUB_OUTPUT - echo "hour=$(/bin/date -u "+%H")" >> $GITHUB_OUTPUT - echo "minute=$(/bin/date -u "+%M")" >> $GITHUB_OUTPUT - shell: bash - # Attempt to fetch the DerivedData from cache, by preferring one from earlier this minute, then one earlier - # this hour, then one earlier today, finally one earlier this week, and at last, any time. - - uses: actions/cache@v4 - name: DerivedData cache + # Attempt to fetch the Xcode build info from cache + - uses: irgaly/xcode-cache@v1 with: - path: .deriveddata-cache - key: deriveddata-${{ steps.get-date.outputs.week }}-${{ steps.get-date.outputs.date }}-${{ steps.get-date.outputs.hour }}-${{ steps.get-date.outputs.minute }} - restore-keys: | - deriveddata-${{ steps.get-date.outputs.week }}-${{ steps.get-date.outputs.date }}-${{ steps.get-date.outputs.hour }} - deriveddata-${{ steps.get-date.outputs.week }}-${{ steps.get-date.outputs.date }} - deriveddata-${{ steps.get-date.outputs.week }} - deriveddata - - uses: actions/cache@v4 + key: xcode-cache-deriveddata-${{ github.workflow }}-${{ github.sha }} + restore-keys: xcode-cache-deriveddata-${{ github.workflow }}- + deriveddata-directory: build/ios/localDerivedData + delete-used-deriveddata-cache: true + - uses: actions/cache@v3 name: Pods cache with: path: | @@ -58,7 +44,6 @@ jobs: # relies on - name: Extract data from cache run: | - if [ -f .deriveddata-cache/cache.tar ]; then tar xvPpf .deriveddata-cache/cache.tar; else echo "No deriveddata cache file"; fi if [ -f .pods-cache/cache.tar ]; then tar xvPpf .pods-cache/cache.tar; else echo "No pods cache file"; fi # Set the "modified time" of every file in the repository to be the time it was most recently modified in git -- this means that xcode # can reliably use the `mtime` to see which files have changed. By default it's set to the time you check out. @@ -98,8 +83,7 @@ jobs: # Package up the derived data for the caching action, including permissions and fine grained timestamps - name: Package DerivedData for cache run: | - mkdir -p .deriveddata-cache .pods-cache - tar cfPp .deriveddata-cache/cache.tar --format posix build/ios/localDerivedData + mkdir -p .pods-cache if [[ -d "ios/Pods" ]]; then find build/ios tar cfPp .pods-cache/cache.tar --format posix ios/Pods build/ios/pod_inputs.fingerprint From 45becfedc08e26983a8826104de1c3c0a6dba748 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B8rgen=20P=2E=20Tjern=C3=B8?= Date: Sun, 4 Feb 2024 11:34:38 -0800 Subject: [PATCH 28/48] Don't manually set mtimes xcode-cache already does it, and the data from GH might not be accurate enough? --- .github/workflows/publish_ios.yml | 8 -------- 1 file changed, 8 deletions(-) diff --git a/.github/workflows/publish_ios.yml b/.github/workflows/publish_ios.yml index 0a1fbd4..69f37bd 100644 --- a/.github/workflows/publish_ios.yml +++ b/.github/workflows/publish_ios.yml @@ -45,14 +45,6 @@ jobs: - name: Extract data from cache run: | if [ -f .pods-cache/cache.tar ]; then tar xvPpf .pods-cache/cache.tar; else echo "No pods cache file"; fi - # Set the "modified time" of every file in the repository to be the time it was most recently modified in git -- this means that xcode - # can reliably use the `mtime` to see which files have changed. By default it's set to the time you check out. - - name: Update file mtimes - run: | - set +e - git submodule foreach 'rev=HEAD; for f in $(git ls-tree -r -t --full-name --name-only "$rev") ; do touch -t $(git log --pretty=format:%cd --date=format:%Y%m%d%H%M.%S -1 "$rev" -- "$f") "$f"; done' - rev=HEAD; for f in $(git ls-tree -r -t --full-name --name-only "$rev") ; do touch -t $(git log --pretty=format:%cd --date=format:%Y%m%d%H%M.%S -1 "$rev" -- "$f") "$f"; done - # Configure ruby according to our .ruby-version - name: Setup ruby & Bundler uses: ruby/setup-ruby@v1 From 5bdf54ca58fb0b9e40d00336279220e0b5ec2b77 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B8rgen=20P=2E=20Tjern=C3=B8?= Date: Sun, 4 Feb 2024 11:35:19 -0800 Subject: [PATCH 29/48] Disable analytics & cli animations --- .github/workflows/publish_ios.yml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.github/workflows/publish_ios.yml b/.github/workflows/publish_ios.yml index 69f37bd..b18bed9 100644 --- a/.github/workflows/publish_ios.yml +++ b/.github/workflows/publish_ios.yml @@ -56,6 +56,9 @@ jobs: with: cache: true flutter-version: 3.16.9 + - name: Configure flutter + run: | + flutter config --no-cli-animations --disable-analytics # Start an ssh-agent that will provide the SSH key from the # SSH_PRIVATE_KEY secret to `fastlane match` - name: Setup SSH key From d936fca50d341e81fb32e788a974149b20fd4a42 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B8rgen=20P=2E=20Tjern=C3=B8?= Date: Sun, 4 Feb 2024 11:37:48 -0800 Subject: [PATCH 30/48] Run mtime-restoring action *after* extracting pods --- .github/workflows/publish_ios.yml | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/.github/workflows/publish_ios.yml b/.github/workflows/publish_ios.yml index b18bed9..82f50f1 100644 --- a/.github/workflows/publish_ios.yml +++ b/.github/workflows/publish_ios.yml @@ -23,13 +23,6 @@ jobs: steps: - name: Check out from git uses: actions/checkout@v4 - # Attempt to fetch the Xcode build info from cache - - uses: irgaly/xcode-cache@v1 - with: - key: xcode-cache-deriveddata-${{ github.workflow }}-${{ github.sha }} - restore-keys: xcode-cache-deriveddata-${{ github.workflow }}- - deriveddata-directory: build/ios/localDerivedData - delete-used-deriveddata-cache: true - uses: actions/cache@v3 name: Pods cache with: @@ -45,6 +38,13 @@ jobs: - name: Extract data from cache run: | if [ -f .pods-cache/cache.tar ]; then tar xvPpf .pods-cache/cache.tar; else echo "No pods cache file"; fi + # Attempt to fetch the Xcode build info from cache + - uses: irgaly/xcode-cache@v1 + with: + key: xcode-cache-deriveddata-${{ github.workflow }}-${{ github.sha }} + restore-keys: xcode-cache-deriveddata-${{ github.workflow }}- + deriveddata-directory: build/ios/localDerivedData + delete-used-deriveddata-cache: true # Configure ruby according to our .ruby-version - name: Setup ruby & Bundler uses: ruby/setup-ruby@v1 From 2b70d238b2ae104765cb77ba92e1db110347c5bb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B8rgen=20P=2E=20Tjern=C3=B8?= Date: Sun, 4 Feb 2024 12:02:21 -0800 Subject: [PATCH 31/48] Final combo, maybe --- .github/workflows/publish_ios.yml | 22 +++++++++++++++------- ios/fastlane/Fastfile | 2 -- 2 files changed, 15 insertions(+), 9 deletions(-) diff --git a/.github/workflows/publish_ios.yml b/.github/workflows/publish_ios.yml index 82f50f1..9d27289 100644 --- a/.github/workflows/publish_ios.yml +++ b/.github/workflows/publish_ios.yml @@ -23,6 +23,8 @@ jobs: steps: - name: Check out from git uses: actions/checkout@v4 + + ## Caching of outputs & dependencies - uses: actions/cache@v3 name: Pods cache with: @@ -33,7 +35,7 @@ jobs: key: ios-pods-${{ hashFiles('ios/Podfile.lock') }}-v2 restore-keys: | ios-pods- - # Manually extract the derived data using tar so we can preserve permissions & extended file flags, which xcode + # Manually extract the derived data using tar so we can preserve permissions & extended file flags, which Xcode # relies on - name: Extract data from cache run: | @@ -43,8 +45,9 @@ jobs: with: key: xcode-cache-deriveddata-${{ github.workflow }}-${{ github.sha }} restore-keys: xcode-cache-deriveddata-${{ github.workflow }}- - deriveddata-directory: build/ios/localDerivedData delete-used-deriveddata-cache: true + + ## Set up tools # Configure ruby according to our .ruby-version - name: Setup ruby & Bundler uses: ruby/setup-ruby@v1 @@ -57,8 +60,9 @@ jobs: cache: true flutter-version: 3.16.9 - name: Configure flutter - run: | - flutter config --no-cli-animations --disable-analytics + run: flutter config --no-cli-animations --disable-analytics + - name: Configure xcbuild + run: defaults write com.apple.dt.XCBuild IgnoreFileSystemDeviceInodeChanges -bool YES # Start an ssh-agent that will provide the SSH key from the # SSH_PRIVATE_KEY secret to `fastlane match` - name: Setup SSH key @@ -67,16 +71,20 @@ jobs: run: | ssh-agent -a $SSH_AUTH_SOCK > /dev/null ssh-add - <<< "${{ secrets.SSH_PRIVATE_KEY }}" + + ## Build project - name: Download dependencies - run: flutter pub get + run: flutter pub get --offline --enforce-lockfile || flutter pub get --enforce-lockfile - name: Build & Publish to TestFlight with Fastlane env: APP_STORE_CONNECT_API_KEY_KEY: ${{ secrets.APP_STORE_CONNECT_API_KEY_KEY }} MATCH_PASSWORD: ${{ secrets.MATCH_PASSWORD }} SSH_AUTH_SOCK: /tmp/ssh_agent.sock run: cd ios && bundle exec fastlane beta "build_name:${{ github.ref_name }}" - # Package up the derived data for the caching action, including permissions and fine grained timestamps - - name: Package DerivedData for cache + + ## Prepare cache data + # Package up the Cocoapods cache for the caching action, including permissions and fine grained timestamps + - name: Package Cocoapods for cache run: | mkdir -p .pods-cache if [[ -d "ios/Pods" ]]; then diff --git a/ios/fastlane/Fastfile b/ios/fastlane/Fastfile index 62608b8..074aed7 100644 --- a/ios/fastlane/Fastfile +++ b/ios/fastlane/Fastfile @@ -84,8 +84,6 @@ platform :ios do workspace: "Runner.xcworkspace", scheme: "Runner", output_directory: "../build/ios/archive", - xcargs: "-IgnoreFileSystemDeviceInodeChanges=YES", - derived_data_path: "../build/ios/localDerivedData", ) $stdout << "::endgroup::\n" From 40eb192fbce8b5cc3ad72a54fac58ee79be33876 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B8rgen=20P=2E=20Tjern=C3=B8?= Date: Sun, 4 Feb 2024 12:11:12 -0800 Subject: [PATCH 32/48] More thorough pods caching? --- .github/workflows/publish_ios.yml | 15 ++++++--------- 1 file changed, 6 insertions(+), 9 deletions(-) diff --git a/.github/workflows/publish_ios.yml b/.github/workflows/publish_ios.yml index 9d27289..b080f53 100644 --- a/.github/workflows/publish_ios.yml +++ b/.github/workflows/publish_ios.yml @@ -19,6 +19,9 @@ jobs: # Point the `ruby/setup-ruby` action at this Gemfile, so it # caches dependencies for us. BUNDLE_GEMFILE: ${{ github.workspace }}/ios/Gemfile + # Point all Cocoapods operations to a custom subdirectory + CP_HOME_RELATIVE: build/cocoapods + CP_HOME_DIR: ${{ github.workspace }}/build/cocoapods steps: - name: Check out from git @@ -30,8 +33,6 @@ jobs: with: path: | .pods-cache - ~/Library/Caches/CocoaPods - ~/.cocoapods key: ios-pods-${{ hashFiles('ios/Podfile.lock') }}-v2 restore-keys: | ios-pods- @@ -86,10 +87,6 @@ jobs: # Package up the Cocoapods cache for the caching action, including permissions and fine grained timestamps - name: Package Cocoapods for cache run: | - mkdir -p .pods-cache - if [[ -d "ios/Pods" ]]; then - find build/ios - tar cfPp .pods-cache/cache.tar --format posix ios/Pods build/ios/pod_inputs.fingerprint - else - rm -f .pods-cache/cache.tar - fi + mkdir -p .pods-cache "$CP_HOME_RELATIVE" ios/Pods + find build/ios + tar cfPp .pods-cache/cache.tar --format posix "$CP_HOME_RELATIVE" ios/Pods build/ios/pod_inputs.fingerprint From b138e38dd5b09ac2f34a3791e406d4ae737c3773 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B8rgen=20P=2E=20Tjern=C3=B8?= Date: Sun, 4 Feb 2024 12:13:34 -0800 Subject: [PATCH 33/48] Bump flutter_lints and `upgrade` deps --- pubspec.lock | 104 +++++++++++++++++++++++++++------------------------ pubspec.yaml | 7 ++-- 2 files changed, 59 insertions(+), 52 deletions(-) diff --git a/pubspec.lock b/pubspec.lock index a07acc1..e4a369c 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -5,18 +5,18 @@ packages: dependency: transitive description: name: _flutterfire_internals - sha256: "3ff770dfff04a67b0863dff205a0936784de1b87a5e99b11c693fc10e66a9ce3" + sha256: "78f9e0914a5b85de1257a0c1d1af92c4e22f86448133dfc967651ca606a87a82" url: "https://pub.dev" source: hosted - version: "1.0.12" + version: "1.3.20" async: dependency: transitive description: name: async - sha256: bfe67ef28df125b7dddcea62755991f807aa39a2492a23e1550161692950bbe0 + sha256: "947bfcf187f74dbc5e146c9eb9c0f10c9f8b30743e341481c1e2ed3ecc18c20c" url: "https://pub.dev" source: hosted - version: "2.10.0" + version: "2.11.0" boolean_selector: dependency: transitive description: @@ -29,10 +29,10 @@ packages: dependency: transitive description: name: characters - sha256: e6a326c8af69605aec75ed6c187d06b349707a27fbff8222ca9cc2cff167975c + sha256: "04a925763edad70e8443c99234dc3328f442e811f1d8fd1a72f1c8ad0f69a605" url: "https://pub.dev" source: hosted - version: "1.2.1" + version: "1.3.0" clock: dependency: transitive description: @@ -45,42 +45,42 @@ packages: dependency: "direct main" description: name: cloud_firestore - sha256: a851106a2169c15614047b75ea10d0346650352c6669ab482306572aa4ed9a7d + sha256: "2a262eb881e7f13de2b33d4a81a6841166e0c148041eb081be4044beb5f89c9c" url: "https://pub.dev" source: hosted - version: "4.3.1" + version: "4.15.3" cloud_firestore_platform_interface: dependency: transitive description: name: cloud_firestore_platform_interface - sha256: "1fac512fef2bfe84ca7f372defbd9dd8efb108be96854db9023739a5b2aa9977" + sha256: "7589195ebc5051069e6105838cb855a95df83ad76f70f8f5d82f8302cae9422b" url: "https://pub.dev" source: hosted - version: "5.10.1" + version: "6.1.4" cloud_firestore_web: dependency: transitive description: name: cloud_firestore_web - sha256: "3fd9581c1447b6e8db6d0f19d0140b196a70ecf582bd1f71e7141fe9abf10ddb" + sha256: "816b22e8d69e1cd627fe0c7574668b9ed595799f66ce6fd087cc3ecd4c99f771" url: "https://pub.dev" source: hosted - version: "3.2.1" + version: "3.10.3" collection: dependency: transitive description: name: collection - sha256: cfc915e6923fe5ce6e153b0723c753045de46de1b4d63771530504004a45fae0 + sha256: ee67cb0715911d28db6bf4af1026078bd6f0128b07a5f66fb2ed94ec6783c09a url: "https://pub.dev" source: hosted - version: "1.17.0" + version: "1.18.0" cupertino_icons: dependency: "direct main" description: name: cupertino_icons - sha256: "1989d917fbe8e6b39806207df5a3fdd3d816cbd090fac2ce26fb45e9a71476e5" + sha256: d57953e10f9f8327ce64a508a355f0b1ec902193f66288e8cb5070e7c47eeb2d url: "https://pub.dev" source: hosted - version: "1.0.4" + version: "1.0.6" fake_async: dependency: transitive description: @@ -93,26 +93,26 @@ packages: dependency: transitive description: name: firebase_core - sha256: c129209ba55f3d4272c89fb4a4994c15bea77fb6de63a82d45fb6bc5c94e4355 + sha256: "0b066f2dc196de65f4e57dc851984acba751a7929bffaee69464b3f75e175a5c" url: "https://pub.dev" source: hosted - version: "2.4.1" + version: "2.25.3" firebase_core_platform_interface: dependency: transitive description: name: firebase_core_platform_interface - sha256: "5fab93f5b354648efa62e7cc829c90efb68c8796eecf87e0888cae2d5f3accd4" + sha256: c437ae5d17e6b5cc7981cf6fd458a5db4d12979905f9aafd1fea930428a9fe63 url: "https://pub.dev" source: hosted - version: "4.5.2" + version: "5.0.0" firebase_core_web: dependency: transitive description: name: firebase_core_web - sha256: "18b35ce111b0a4266abf723c825bcf9d4e2519d13638cc7f06f2a8dd960c75bc" + sha256: df9d4ce37b97ecbe4347fb21887cb61383e3e95f8cf8d6c2de5999ef58e8b312 url: "https://pub.dev" source: hosted - version: "2.1.0" + version: "2.11.3" flutter: dependency: "direct main" description: flutter @@ -122,10 +122,10 @@ packages: dependency: "direct dev" description: name: flutter_lints - sha256: b543301ad291598523947dc534aaddc5aaad597b709d2426d3a0e0d44c5cb493 + sha256: e2a421b7e59244faef694ba7b30562e489c2b489866e505074eb005cd7060db7 url: "https://pub.dev" source: hosted - version: "1.0.4" + version: "3.0.1" flutter_test: dependency: "direct dev" description: flutter @@ -140,58 +140,58 @@ packages: dependency: transitive description: name: js - sha256: "5528c2f391ededb7775ec1daa69e65a2d61276f7552de2b5f7b8d34ee9fd4ab7" + sha256: f2c445dce49627136094980615a031419f7f3eb393237e4ecd97ac15dea343f3 url: "https://pub.dev" source: hosted - version: "0.6.5" + version: "0.6.7" lints: dependency: transitive description: name: lints - sha256: a2c3d198cb5ea2e179926622d433331d8b58374ab8f29cdda6e863bd62fd369c + sha256: cbf8d4b858bb0134ef3ef87841abdf8d63bfc255c266b7bf6b39daa1085c4290 url: "https://pub.dev" source: hosted - version: "1.0.1" + version: "3.0.0" matcher: dependency: transitive description: name: matcher - sha256: "16db949ceee371e9b99d22f88fa3a73c4e59fd0afed0bd25fc336eb76c198b72" + sha256: "1803e76e6653768d64ed8ff2e1e67bea3ad4b923eb5c56a295c3e634bad5960e" url: "https://pub.dev" source: hosted - version: "0.12.13" + version: "0.12.16" material_color_utilities: dependency: transitive description: name: material_color_utilities - sha256: d92141dc6fe1dad30722f9aa826c7fbc896d021d792f80678280601aff8cf724 + sha256: "9528f2f296073ff54cb9fee677df673ace1218163c3bc7628093e7eed5203d41" url: "https://pub.dev" source: hosted - version: "0.2.0" + version: "0.5.0" meta: dependency: transitive description: name: meta - sha256: "6c268b42ed578a53088d834796959e4a1814b5e9e164f147f580a386e5decf42" + sha256: a6e590c838b18133bb482a2745ad77c5bb7715fb0451209e1a7567d416678b8e url: "https://pub.dev" source: hosted - version: "1.8.0" + version: "1.10.0" path: dependency: transitive description: name: path - sha256: db9d4f58c908a4ba5953fcee2ae317c94889433e5024c27ce74a37f94267945b + sha256: "8829d8a55c13fc0e37127c29fedf290c102f4e40ae94ada574091fe0ff96c917" url: "https://pub.dev" source: hosted - version: "1.8.2" + version: "1.8.3" plugin_platform_interface: dependency: transitive description: name: plugin_platform_interface - sha256: dbf0f707c78beedc9200146ad3cb0ab4d5da13c246336987be6940f026500d3a + sha256: "4820fbfdb9478b1ebae27888254d445073732dae3d6ea81f0b7e06d5dedc3f02" url: "https://pub.dev" source: hosted - version: "2.1.3" + version: "2.1.8" sky_engine: dependency: transitive description: flutter @@ -201,26 +201,26 @@ packages: dependency: transitive description: name: source_span - sha256: dd904f795d4b4f3b870833847c461801f6750a9fa8e61ea5ac53f9422b31f250 + sha256: "53e943d4206a5e30df338fd4c6e7a077e02254531b138a15aec3bd143c1a8b3c" url: "https://pub.dev" source: hosted - version: "1.9.1" + version: "1.10.0" stack_trace: dependency: transitive description: name: stack_trace - sha256: c3c7d8edb15bee7f0f74debd4b9c5f3c2ea86766fe4178eb2a18eb30a0bdaed5 + sha256: "73713990125a6d93122541237550ee3352a2d84baad52d375a4cad2eb9b7ce0b" url: "https://pub.dev" source: hosted - version: "1.11.0" + version: "1.11.1" stream_channel: dependency: transitive description: name: stream_channel - sha256: "83615bee9045c1d322bbbd1ba209b7a749c2cbcdcb3fdd1df8eb488b3279c1c8" + sha256: ba2aa5d8cc609d96bbb2899c28934f9e1af5cddbd60a827822ea467161eb54e7 url: "https://pub.dev" source: hosted - version: "2.1.1" + version: "2.1.2" string_scanner: dependency: transitive description: @@ -241,10 +241,10 @@ packages: dependency: transitive description: name: test_api - sha256: ad540f65f92caa91bf21dfc8ffb8c589d6e4dc0c2267818b4cc2792857706206 + sha256: "5c2f730018264d276c20e4f1503fd1308dfbbae39ec8ee63c5236311ac06954b" url: "https://pub.dev" source: hosted - version: "0.4.16" + version: "0.6.1" vector_math: dependency: transitive description: @@ -253,6 +253,14 @@ packages: url: "https://pub.dev" source: hosted version: "2.1.4" + web: + dependency: transitive + description: + name: web + sha256: afe077240a270dcfd2aafe77602b4113645af95d0ad31128cc02bce5ac5d5152 + url: "https://pub.dev" + source: hosted + version: "0.3.0" sdks: - dart: ">=2.18.0 <3.0.0" - flutter: ">=1.20.0" + dart: ">=3.2.0 <4.0.0" + flutter: ">=3.3.0" diff --git a/pubspec.yaml b/pubspec.yaml index 7cace6f..0750a6d 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -3,7 +3,7 @@ description: Test for iOS deploy on GH # The following line prevents the package from being accidentally published to # pub.dev using `flutter pub publish`. This is preferred for private packages. -publish_to: 'none' # Remove this line if you wish to publish to pub.dev +publish_to: "none" # Remove this line if you wish to publish to pub.dev # The following defines the version and build number for your application. # A version number is three numbers separated by dots, like 1.2.43 @@ -29,7 +29,7 @@ environment: dependencies: flutter: sdk: flutter - + cloud_firestore: ^4.3.1 # The following adds the Cupertino Icons font to your application. @@ -45,14 +45,13 @@ dev_dependencies: # activated in the `analysis_options.yaml` file located at the root of your # package. See that file for information about deactivating specific lint # rules and activating additional ones. - flutter_lints: ^1.0.0 + flutter_lints: ^3.0.0 # For information on the generic Dart part of this file, see the # following page: https://dart.dev/tools/pub/pubspec # The following section is specific to Flutter. flutter: - # The following line ensures that the Material Icons font is # included with your application, so that you can use the icons in # the material Icons class. From 18ad7793fe533b3ce1fd8cb2fafcfe972cc89455 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B8rgen=20P=2E=20Tjern=C3=B8?= Date: Sun, 4 Feb 2024 12:22:18 -0800 Subject: [PATCH 34/48] Bump firestore pod & `bundle exec pod update` --- ios/Podfile | 2 +- ios/Podfile.lock | 120 ++++++++++++++++++--------- ios/Runner.xcodeproj/project.pbxproj | 18 ---- 3 files changed, 80 insertions(+), 60 deletions(-) diff --git a/ios/Podfile b/ios/Podfile index 6f703e4..15a341e 100644 --- a/ios/Podfile +++ b/ios/Podfile @@ -28,7 +28,7 @@ require File.expand_path(File.join('packages', 'flutter_tools', 'bin', 'podhelpe flutter_ios_podfile_setup target 'Runner' do - pod 'FirebaseFirestore', :git => 'https://github.com/invertase/firestore-ios-sdk-frameworks.git', :tag => '10.3.0' + pod 'FirebaseFirestore', :git => 'https://github.com/invertase/firestore-ios-sdk-frameworks.git', :tag => '10.20.0' use_frameworks! use_modular_headers! diff --git a/ios/Podfile.lock b/ios/Podfile.lock index 150ca31..7494e9c 100644 --- a/ios/Podfile.lock +++ b/ios/Podfile.lock @@ -1,53 +1,82 @@ PODS: - - cloud_firestore (4.3.1): - - Firebase/Firestore (= 10.3.0) + - cloud_firestore (4.15.3): + - Firebase/Firestore (= 10.20.0) - firebase_core - Flutter - nanopb (< 2.30910.0, >= 2.30908.0) - - Firebase/CoreOnly (10.3.0): - - FirebaseCore (= 10.3.0) - - Firebase/Firestore (10.3.0): + - Firebase/CoreOnly (10.20.0): + - FirebaseCore (= 10.20.0) + - Firebase/Firestore (10.20.0): - Firebase/CoreOnly - - FirebaseFirestore (~> 10.3.0) - - firebase_core (2.4.1): - - Firebase/CoreOnly (= 10.3.0) + - FirebaseFirestore (~> 10.20.0) + - firebase_core (2.25.3): + - Firebase/CoreOnly (= 10.20.0) - Flutter - - FirebaseCore (10.3.0): + - FirebaseCore (10.20.0): - FirebaseCoreInternal (~> 10.0) - - GoogleUtilities/Environment (~> 7.8) - - GoogleUtilities/Logger (~> 7.8) - - FirebaseCoreInternal (10.3.0): + - GoogleUtilities/Environment (~> 7.12) + - GoogleUtilities/Logger (~> 7.12) + - FirebaseCoreExtension (10.20.0): + - FirebaseCore (~> 10.0) + - FirebaseCoreInternal (10.20.0): - "GoogleUtilities/NSData+zlib (~> 7.8)" - - FirebaseFirestore (10.3.0): - - FirebaseFirestore/AutodetectLeveldb (= 10.3.0) - - FirebaseFirestore/AutodetectLeveldb (10.3.0): - - FirebaseFirestore/Base - - FirebaseFirestore/Base (10.3.0) + - FirebaseFirestore (10.20.0): + - FirebaseFirestoreBinary (= 9.20.1) + - FirebaseFirestoreAbseilBinary (1.2022062300.0) + - FirebaseFirestoreBinary (9.20.1): + - FirebaseCore (= 10.20.0) + - FirebaseCoreExtension (= 10.20.0) + - FirebaseFirestoreInternalBinary (= 10.20.0) + - FirebaseSharedSwift (= 10.20.0) + - FirebaseFirestoreGRPCBoringSSLBinary (1.49.1) + - FirebaseFirestoreGRPCCoreBinary (1.49.1): + - FirebaseFirestoreAbseilBinary (= 1.2022062300.0) + - FirebaseFirestoreGRPCBoringSSLBinary (= 1.49.1) + - FirebaseFirestoreGRPCCPPBinary (1.49.1): + - FirebaseFirestoreAbseilBinary (= 1.2022062300.0) + - FirebaseFirestoreGRPCCoreBinary (= 1.49.1) + - FirebaseFirestoreInternalBinary (10.20.0): + - FirebaseCore (= 10.20.0) + - FirebaseFirestoreAbseilBinary (= 1.2022062300.0) + - FirebaseFirestoreGRPCCPPBinary (= 1.49.1) + - leveldb-library (~> 1.22) + - nanopb (< 2.30910.0, >= 2.30908.0) + - FirebaseSharedSwift (10.20.0) - Flutter (1.0.0) - - GoogleUtilities/Environment (7.10.0): + - GoogleUtilities/Environment (7.12.0): - PromisesObjC (< 3.0, >= 1.2) - - GoogleUtilities/Logger (7.10.0): + - GoogleUtilities/Logger (7.12.0): - GoogleUtilities/Environment - - "GoogleUtilities/NSData+zlib (7.10.0)" - - nanopb (2.30909.0): - - nanopb/decode (= 2.30909.0) - - nanopb/encode (= 2.30909.0) - - nanopb/decode (2.30909.0) - - nanopb/encode (2.30909.0) - - PromisesObjC (2.1.1) + - "GoogleUtilities/NSData+zlib (7.12.0)" + - leveldb-library (1.22.2) + - nanopb (2.30909.1): + - nanopb/decode (= 2.30909.1) + - nanopb/encode (= 2.30909.1) + - nanopb/decode (2.30909.1) + - nanopb/encode (2.30909.1) + - PromisesObjC (2.3.1) DEPENDENCIES: - cloud_firestore (from `.symlinks/plugins/cloud_firestore/ios`) - firebase_core (from `.symlinks/plugins/firebase_core/ios`) - - FirebaseFirestore (from `https://github.com/invertase/firestore-ios-sdk-frameworks.git`, tag `10.3.0`) + - FirebaseFirestore (from `https://github.com/invertase/firestore-ios-sdk-frameworks.git`, tag `10.20.0`) - Flutter (from `Flutter`) SPEC REPOS: trunk: - Firebase - FirebaseCore + - FirebaseCoreExtension - FirebaseCoreInternal + - FirebaseFirestoreAbseilBinary + - FirebaseFirestoreBinary + - FirebaseFirestoreGRPCBoringSSLBinary + - FirebaseFirestoreGRPCCoreBinary + - FirebaseFirestoreGRPCCPPBinary + - FirebaseFirestoreInternalBinary + - FirebaseSharedSwift - GoogleUtilities + - leveldb-library - nanopb - PromisesObjC @@ -58,27 +87,36 @@ EXTERNAL SOURCES: :path: ".symlinks/plugins/firebase_core/ios" FirebaseFirestore: :git: https://github.com/invertase/firestore-ios-sdk-frameworks.git - :tag: 10.3.0 + :tag: 10.20.0 Flutter: :path: Flutter CHECKOUT OPTIONS: FirebaseFirestore: :git: https://github.com/invertase/firestore-ios-sdk-frameworks.git - :tag: 10.3.0 + :tag: 10.20.0 SPEC CHECKSUMS: - cloud_firestore: 5e5bb98722f66e820bf1aa7b3c98ffc9b2450ffb - Firebase: f92fc551ead69c94168d36c2b26188263860acd9 - firebase_core: bf59c32d2e53814f558efa20840c1902fa2fe461 - FirebaseCore: 988754646ab3bd4bdcb740f1bfe26b9f6c0d5f2a - FirebaseCoreInternal: 29b76f784d607df8b2a1259d73c3f04f1210137b - FirebaseFirestore: 7e640851187139eb7d2466370d1156099686170d - Flutter: f04841e97a9d0b0a8025694d0796dd46242b2854 - GoogleUtilities: bad72cb363809015b1f7f19beb1f1cd23c589f95 - nanopb: b552cce312b6c8484180ef47159bc0f65a1f0431 - PromisesObjC: ab77feca74fa2823e7af4249b8326368e61014cb + cloud_firestore: c956777ddc3fba2d5f633e307db2db6337ebb81c + Firebase: 10c8cb12fb7ad2ae0c09ffc86cd9c1ab392a0031 + firebase_core: 96a734ae596de989b81a66f8a205f54485263555 + FirebaseCore: 28045c1560a2600d284b9c45a904fe322dc890b6 + FirebaseCoreExtension: 0659f035b88c5a7a15a9763c48c2e6ca8c0a2977 + FirebaseCoreInternal: efeeb171ac02d623bdaefe121539939821e10811 + FirebaseFirestore: 979ccf1f44df221a762841e9fa10c653151e941d + FirebaseFirestoreAbseilBinary: fc2004a2da6b5978e974ca49c2e463f5e542a78f + FirebaseFirestoreBinary: 2c0e90804b11110efbac1338408a144c7928b347 + FirebaseFirestoreGRPCBoringSSLBinary: 85a615c0b7e97173d6af581c9879baac663d9743 + FirebaseFirestoreGRPCCoreBinary: bf6ed68cea8ad7b24ba091b53374e91a5211a91f + FirebaseFirestoreGRPCCPPBinary: cff111ba3ae5bea45a6562e8bd8750d4a7e2ebc6 + FirebaseFirestoreInternalBinary: fd49261dc34f45113d26d22c16d0e4ec70259b8f + FirebaseSharedSwift: 2fbf73618288b7a36b2014b957745dcdd781389e + Flutter: e0871f40cf51350855a761d2e70bf5af5b9b5de7 + GoogleUtilities: 0759d1a57ebb953965c2dfe0ba4c82e95ccc2e34 + leveldb-library: f03246171cce0484482ec291f88b6d563699ee06 + nanopb: d4d75c12cd1316f4a64e3c6963f879ecd4b5e0d5 + PromisesObjC: c50d2056b5253dadbd6c2bea79b0674bd5a52fa4 -PODFILE CHECKSUM: 9242d84c1634b89a2e0383710e8c7d23afc3f5b1 +PODFILE CHECKSUM: 5fe907dfb293f1ba993c861d7f1eab73052ad0a9 -COCOAPODS: 1.11.3 +COCOAPODS: 1.15.0 diff --git a/ios/Runner.xcodeproj/project.pbxproj b/ios/Runner.xcodeproj/project.pbxproj index 54988bf..8b93e4c 100644 --- a/ios/Runner.xcodeproj/project.pbxproj +++ b/ios/Runner.xcodeproj/project.pbxproj @@ -140,7 +140,6 @@ 9705A1C41CF9048500538489 /* Embed Frameworks */, 3B06AD1E1E4923F5004D2608 /* Thin Binary */, 5020AFA7CB45833683C433C7 /* [CP] Embed Pods Frameworks */, - 2C9FDB8C239E3625254DAB09 /* [CP] Copy Pods Resources */, ); buildRules = ( ); @@ -199,23 +198,6 @@ /* End PBXResourcesBuildPhase section */ /* Begin PBXShellScriptBuildPhase section */ - 2C9FDB8C239E3625254DAB09 /* [CP] Copy Pods Resources */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputFileListPaths = ( - "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-resources-${CONFIGURATION}-input-files.xcfilelist", - ); - name = "[CP] Copy Pods Resources"; - outputFileListPaths = ( - "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-resources-${CONFIGURATION}-output-files.xcfilelist", - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-resources.sh\"\n"; - showEnvVarsInLog = 0; - }; 3B06AD1E1E4923F5004D2608 /* Thin Binary */ = { isa = PBXShellScriptBuildPhase; alwaysOutOfDate = 1; From eb3c2787196b8082103b38c3f85ced6575da3593 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B8rgen=20P=2E=20Tjern=C3=B8?= Date: Sun, 4 Feb 2024 12:22:56 -0800 Subject: [PATCH 35/48] cache@v4 --- .github/workflows/publish_ios.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/publish_ios.yml b/.github/workflows/publish_ios.yml index b080f53..900a728 100644 --- a/.github/workflows/publish_ios.yml +++ b/.github/workflows/publish_ios.yml @@ -28,7 +28,7 @@ jobs: uses: actions/checkout@v4 ## Caching of outputs & dependencies - - uses: actions/cache@v3 + - uses: actions/cache@v4 name: Pods cache with: path: | From ff4a21667c1ddcb9b488b1af25bb0d697eca855c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B8rgen=20P=2E=20Tjern=C3=B8?= Date: Sun, 4 Feb 2024 12:33:46 -0800 Subject: [PATCH 36/48] Verbose --- .github/workflows/publish_ios.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/publish_ios.yml b/.github/workflows/publish_ios.yml index 900a728..ab0b87c 100644 --- a/.github/workflows/publish_ios.yml +++ b/.github/workflows/publish_ios.yml @@ -47,6 +47,7 @@ jobs: key: xcode-cache-deriveddata-${{ github.workflow }}-${{ github.sha }} restore-keys: xcode-cache-deriveddata-${{ github.workflow }}- delete-used-deriveddata-cache: true + verbose: true ## Set up tools # Configure ruby according to our .ruby-version From 5d0e0abcc80c3fc82d95b26debd81675d69b1ed7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B8rgen=20P=2E=20Tjern=C3=B8?= Date: Sun, 4 Feb 2024 12:53:45 -0800 Subject: [PATCH 37/48] Upgrade settings --- ios/Flutter/AppFrameworkInfo.plist | 2 +- ios/Runner.xcodeproj/project.pbxproj | 3 ++- ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme | 2 +- 3 files changed, 4 insertions(+), 3 deletions(-) diff --git a/ios/Flutter/AppFrameworkInfo.plist b/ios/Flutter/AppFrameworkInfo.plist index 9625e10..7c56964 100644 --- a/ios/Flutter/AppFrameworkInfo.plist +++ b/ios/Flutter/AppFrameworkInfo.plist @@ -21,6 +21,6 @@ CFBundleVersion 1.0 MinimumOSVersion - 11.0 + 12.0 diff --git a/ios/Runner.xcodeproj/project.pbxproj b/ios/Runner.xcodeproj/project.pbxproj index 8b93e4c..c3f5536 100644 --- a/ios/Runner.xcodeproj/project.pbxproj +++ b/ios/Runner.xcodeproj/project.pbxproj @@ -156,7 +156,7 @@ 97C146E61CF9000F007C117D /* Project object */ = { isa = PBXProject; attributes = { - LastUpgradeCheck = 1300; + LastUpgradeCheck = 1430; ORGANIZATIONNAME = ""; TargetAttributes = { 97C146ED1CF9000F007C117D = { @@ -205,6 +205,7 @@ files = ( ); inputPaths = ( + "${TARGET_BUILD_DIR}/${INFOPLIST_PATH}", ); name = "Thin Binary"; outputPaths = ( diff --git a/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme b/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme index c87d15a..a6b826d 100644 --- a/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme +++ b/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme @@ -1,6 +1,6 @@ Date: Sun, 4 Feb 2024 13:01:03 -0800 Subject: [PATCH 38/48] Explicit `pod install` --- .github/workflows/publish_ios.yml | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/.github/workflows/publish_ios.yml b/.github/workflows/publish_ios.yml index ab0b87c..a875743 100644 --- a/.github/workflows/publish_ios.yml +++ b/.github/workflows/publish_ios.yml @@ -76,7 +76,9 @@ jobs: ## Build project - name: Download dependencies - run: flutter pub get --offline --enforce-lockfile || flutter pub get --enforce-lockfile + run: | + flutter pub get --offline --enforce-lockfile || flutter pub get --enforce-lockfile + cd ios && bundle exec pod install --deployment - name: Build & Publish to TestFlight with Fastlane env: APP_STORE_CONNECT_API_KEY_KEY: ${{ secrets.APP_STORE_CONNECT_API_KEY_KEY }} From f9da097c562dc8bbc0fbebc7ee35774eb4f05064 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B8rgen=20P=2E=20Tjern=C3=B8?= Date: Sun, 4 Feb 2024 12:57:31 -0800 Subject: [PATCH 39/48] Use Podfile mtimes from git --- .github/workflows/publish_ios.yml | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/.github/workflows/publish_ios.yml b/.github/workflows/publish_ios.yml index a875743..ed98f95 100644 --- a/.github/workflows/publish_ios.yml +++ b/.github/workflows/publish_ios.yml @@ -41,6 +41,11 @@ jobs: - name: Extract data from cache run: | if [ -f .pods-cache/cache.tar ]; then tar xvPpf .pods-cache/cache.tar; else echo "No pods cache file"; fi + # Flutter uses Podfile & Podfile.lock's relative mtimes to determine if it needs to run `pod install` again + - name: Update Podfile mtimes + run: | + set +e + rev=HEAD; for f in ios/Podfile ios/Podfile.lock; do touch -t $(git log --pretty=format:%cd --date=format:%Y%m%d%H%M.%S -1 "$rev" -- "$f") "$f"; done # Attempt to fetch the Xcode build info from cache - uses: irgaly/xcode-cache@v1 with: From 4e8d58c8ade3476faf0c9fe28b14ccacc19999c8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B8rgen=20P=2E=20Tjern=C3=B8?= Date: Sun, 4 Feb 2024 13:13:59 -0800 Subject: [PATCH 40/48] Include build/ios/Pods.build in cache --- .github/workflows/publish_ios.yml | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/.github/workflows/publish_ios.yml b/.github/workflows/publish_ios.yml index ed98f95..dea83bc 100644 --- a/.github/workflows/publish_ios.yml +++ b/.github/workflows/publish_ios.yml @@ -95,6 +95,5 @@ jobs: # Package up the Cocoapods cache for the caching action, including permissions and fine grained timestamps - name: Package Cocoapods for cache run: | - mkdir -p .pods-cache "$CP_HOME_RELATIVE" ios/Pods - find build/ios - tar cfPp .pods-cache/cache.tar --format posix "$CP_HOME_RELATIVE" ios/Pods build/ios/pod_inputs.fingerprint + mkdir -p .pods-cache "$CP_HOME_RELATIVE" ios/Pods build/ios/Pods.build + tar cfPp .pods-cache/cache.tar --format posix "$CP_HOME_RELATIVE" ios/Pods build/ios/Pods.build build/ios/pod_inputs.fingerprint From e9a38a4a87792ff2cbbb2dc711cc514cd6d1f253 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B8rgen=20P=2E=20Tjern=C3=B8?= Date: Sun, 4 Feb 2024 13:18:44 -0800 Subject: [PATCH 41/48] Try reordering so xcode-cache happens after pod install --- .github/workflows/publish_ios.yml | 41 ++++++++++++++++--------------- 1 file changed, 21 insertions(+), 20 deletions(-) diff --git a/.github/workflows/publish_ios.yml b/.github/workflows/publish_ios.yml index dea83bc..3ab079e 100644 --- a/.github/workflows/publish_ios.yml +++ b/.github/workflows/publish_ios.yml @@ -27,6 +27,23 @@ jobs: - name: Check out from git uses: actions/checkout@v4 + ## Set up tools + # Configure ruby according to our .ruby-version + - name: Setup ruby & Bundler + uses: ruby/setup-ruby@v1 + with: + bundler-cache: true + # Set up flutter (feel free to adjust the version below) + - name: Setup flutter + uses: subosito/flutter-action@v2 + with: + cache: true + flutter-version: 3.16.9 + - name: Configure flutter & xcbuild + run: | + flutter config --no-cli-animations --disable-analytics + defaults write com.apple.dt.XCBuild IgnoreFileSystemDeviceInodeChanges -bool YES + ## Caching of outputs & dependencies - uses: actions/cache@v4 name: Pods cache @@ -46,6 +63,10 @@ jobs: run: | set +e rev=HEAD; for f in ios/Podfile ios/Podfile.lock; do touch -t $(git log --pretty=format:%cd --date=format:%Y%m%d%H%M.%S -1 "$rev" -- "$f") "$f"; done + - name: Download dependencies + run: | + flutter pub get --offline --enforce-lockfile || flutter pub get --enforce-lockfile + cd ios && bundle exec pod install --deployment # Attempt to fetch the Xcode build info from cache - uses: irgaly/xcode-cache@v1 with: @@ -54,22 +75,6 @@ jobs: delete-used-deriveddata-cache: true verbose: true - ## Set up tools - # Configure ruby according to our .ruby-version - - name: Setup ruby & Bundler - uses: ruby/setup-ruby@v1 - with: - bundler-cache: true - # Set up flutter (feel free to adjust the version below) - - name: Setup flutter - uses: subosito/flutter-action@v2 - with: - cache: true - flutter-version: 3.16.9 - - name: Configure flutter - run: flutter config --no-cli-animations --disable-analytics - - name: Configure xcbuild - run: defaults write com.apple.dt.XCBuild IgnoreFileSystemDeviceInodeChanges -bool YES # Start an ssh-agent that will provide the SSH key from the # SSH_PRIVATE_KEY secret to `fastlane match` - name: Setup SSH key @@ -80,10 +85,6 @@ jobs: ssh-add - <<< "${{ secrets.SSH_PRIVATE_KEY }}" ## Build project - - name: Download dependencies - run: | - flutter pub get --offline --enforce-lockfile || flutter pub get --enforce-lockfile - cd ios && bundle exec pod install --deployment - name: Build & Publish to TestFlight with Fastlane env: APP_STORE_CONNECT_API_KEY_KEY: ${{ secrets.APP_STORE_CONNECT_API_KEY_KEY }} From 37a8faf3c5f7de8b010591a0c14004cb498672c3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B8rgen=20P=2E=20Tjern=C3=B8?= Date: Sun, 4 Feb 2024 13:50:54 -0800 Subject: [PATCH 42/48] Try explicitly timestamping source in pub-cache --- .github/workflows/publish_ios.yml | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/.github/workflows/publish_ios.yml b/.github/workflows/publish_ios.yml index 3ab079e..40d5b13 100644 --- a/.github/workflows/publish_ios.yml +++ b/.github/workflows/publish_ios.yml @@ -34,7 +34,8 @@ jobs: with: bundler-cache: true # Set up flutter (feel free to adjust the version below) - - name: Setup flutter + - id: setup-flutter + name: Setup flutter uses: subosito/flutter-action@v2 with: cache: true @@ -69,10 +70,22 @@ jobs: cd ios && bundle exec pod install --deployment # Attempt to fetch the Xcode build info from cache - uses: irgaly/xcode-cache@v1 + env: + PUB_BASE: ${{ steps.setup-flutter.outputs.CACHE-PATH }}/.pub-cache with: key: xcode-cache-deriveddata-${{ github.workflow }}-${{ github.sha }} restore-keys: xcode-cache-deriveddata-${{ github.workflow }}- delete-used-deriveddata-cache: true + restore-mtime-targets: | + ${{ env.PUB_BASE }}/.pub-cache/**/*.m + ${{ env.PUB_BASE }}/.pub-cache/**/*.mm + ${{ env.PUB_BASE }}/.pub-cache/**/*.h + ${{ env.PUB_BASE }}/.pub-cache/**/*.c + ${{ env.PUB_BASE }}/.pub-cache/**/*.cc + ${{ env.PUB_BASE }}/.pub-cache/**/*.cpp + ${{ env.PUB_BASE }}/.pub-cache/**/*.hpp + ${{ env.PUB_BASE }}/.pub-cache/**/*.hxx + ${{ env.PUB_BASE }}/.pub-cache/**/*.plist verbose: true # Start an ssh-agent that will provide the SSH key from the From e0205135cca547a9807ec2a5eaa1b19c3bf00b83 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B8rgen=20P=2E=20Tjern=C3=B8?= Date: Sun, 4 Feb 2024 13:57:03 -0800 Subject: [PATCH 43/48] Fix bad .pub-cache path --- .github/workflows/publish_ios.yml | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/.github/workflows/publish_ios.yml b/.github/workflows/publish_ios.yml index 40d5b13..34dd737 100644 --- a/.github/workflows/publish_ios.yml +++ b/.github/workflows/publish_ios.yml @@ -77,15 +77,15 @@ jobs: restore-keys: xcode-cache-deriveddata-${{ github.workflow }}- delete-used-deriveddata-cache: true restore-mtime-targets: | - ${{ env.PUB_BASE }}/.pub-cache/**/*.m - ${{ env.PUB_BASE }}/.pub-cache/**/*.mm - ${{ env.PUB_BASE }}/.pub-cache/**/*.h - ${{ env.PUB_BASE }}/.pub-cache/**/*.c - ${{ env.PUB_BASE }}/.pub-cache/**/*.cc - ${{ env.PUB_BASE }}/.pub-cache/**/*.cpp - ${{ env.PUB_BASE }}/.pub-cache/**/*.hpp - ${{ env.PUB_BASE }}/.pub-cache/**/*.hxx - ${{ env.PUB_BASE }}/.pub-cache/**/*.plist + ${{ env.PUB_BASE }}/**/*.m + ${{ env.PUB_BASE }}/**/*.mm + ${{ env.PUB_BASE }}/**/*.h + ${{ env.PUB_BASE }}/**/*.c + ${{ env.PUB_BASE }}/**/*.cc + ${{ env.PUB_BASE }}/**/*.cpp + ${{ env.PUB_BASE }}/**/*.hpp + ${{ env.PUB_BASE }}/**/*.hxx + ${{ env.PUB_BASE }}/**/*.plist verbose: true # Start an ssh-agent that will provide the SSH key from the From 6cb43f552ea349c1ac587b955245ec9dbe82e28a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B8rgen=20P=2E=20Tjern=C3=B8?= Date: Sun, 4 Feb 2024 14:13:51 -0800 Subject: [PATCH 44/48] Use my own fork of flutter-action --- .github/workflows/publish_ios.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/publish_ios.yml b/.github/workflows/publish_ios.yml index 34dd737..1b1626c 100644 --- a/.github/workflows/publish_ios.yml +++ b/.github/workflows/publish_ios.yml @@ -36,7 +36,7 @@ jobs: # Set up flutter (feel free to adjust the version below) - id: setup-flutter name: Setup flutter - uses: subosito/flutter-action@v2 + uses: jorgenpt/flutter-action@improved-caching with: cache: true flutter-version: 3.16.9 From 9855749d7d914c14ff58fde4c8877fd693bab0a6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B8rgen=20P=2E=20Tjern=C3=B8?= Date: Sun, 4 Feb 2024 14:22:59 -0800 Subject: [PATCH 45/48] Remove explicit .pub-cache timestamping --- .github/workflows/publish_ios.yml | 12 ------------ 1 file changed, 12 deletions(-) diff --git a/.github/workflows/publish_ios.yml b/.github/workflows/publish_ios.yml index 1b1626c..7de6f66 100644 --- a/.github/workflows/publish_ios.yml +++ b/.github/workflows/publish_ios.yml @@ -70,22 +70,10 @@ jobs: cd ios && bundle exec pod install --deployment # Attempt to fetch the Xcode build info from cache - uses: irgaly/xcode-cache@v1 - env: - PUB_BASE: ${{ steps.setup-flutter.outputs.CACHE-PATH }}/.pub-cache with: key: xcode-cache-deriveddata-${{ github.workflow }}-${{ github.sha }} restore-keys: xcode-cache-deriveddata-${{ github.workflow }}- delete-used-deriveddata-cache: true - restore-mtime-targets: | - ${{ env.PUB_BASE }}/**/*.m - ${{ env.PUB_BASE }}/**/*.mm - ${{ env.PUB_BASE }}/**/*.h - ${{ env.PUB_BASE }}/**/*.c - ${{ env.PUB_BASE }}/**/*.cc - ${{ env.PUB_BASE }}/**/*.cpp - ${{ env.PUB_BASE }}/**/*.hpp - ${{ env.PUB_BASE }}/**/*.hxx - ${{ env.PUB_BASE }}/**/*.plist verbose: true # Start an ssh-agent that will provide the SSH key from the From c47fed4810bfeb5bd3f487f25f5b848c1cebe7d6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B8rgen=20P=2E=20Tjern=C3=B8?= Date: Sun, 4 Feb 2024 17:03:09 -0800 Subject: [PATCH 46/48] Archive info about file mtimes --- .github/workflows/publish_ios.yml | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/.github/workflows/publish_ios.yml b/.github/workflows/publish_ios.yml index 7de6f66..bc20b69 100644 --- a/.github/workflows/publish_ios.yml +++ b/.github/workflows/publish_ios.yml @@ -86,12 +86,18 @@ jobs: ssh-add - <<< "${{ secrets.SSH_PRIVATE_KEY }}" ## Build project + - run: find $HOME -exec stat -f "%N %Fm" {} \; > prebuild.txt - name: Build & Publish to TestFlight with Fastlane env: APP_STORE_CONNECT_API_KEY_KEY: ${{ secrets.APP_STORE_CONNECT_API_KEY_KEY }} MATCH_PASSWORD: ${{ secrets.MATCH_PASSWORD }} SSH_AUTH_SOCK: /tmp/ssh_agent.sock run: cd ios && bundle exec fastlane beta "build_name:${{ github.ref_name }}" + - run: find $HOME -exec stat -f "%N %Fm" {} \; > postbuild.txt + - uses: actions/upload-artifact@v4 + with: + name: build-manifest-${{ github.run_number }} + path: "*build.txt" ## Prepare cache data # Package up the Cocoapods cache for the caching action, including permissions and fine grained timestamps From fe33e91f2cccc0bef96f650dbc68a58dda050aa0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B8rgen=20P=2E=20Tjern=C3=B8?= Date: Sun, 4 Feb 2024 18:11:15 -0800 Subject: [PATCH 47/48] Cache flutter build directory --- .github/workflows/publish_ios.yml | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/.github/workflows/publish_ios.yml b/.github/workflows/publish_ios.yml index bc20b69..e2cc1b7 100644 --- a/.github/workflows/publish_ios.yml +++ b/.github/workflows/publish_ios.yml @@ -47,13 +47,21 @@ jobs: ## Caching of outputs & dependencies - uses: actions/cache@v4 - name: Pods cache + name: flutter build cache with: path: | .pods-cache key: ios-pods-${{ hashFiles('ios/Podfile.lock') }}-v2 restore-keys: | ios-pods- + - uses: actions/cache@v4 + name: Pods cache + with: + path: | + .dart_tool/flutter_build + key: dart_tool-build-${{ hashFiles('pubspec.lock') }} + restore-keys: | + dart_tool-build- # Manually extract the derived data using tar so we can preserve permissions & extended file flags, which Xcode # relies on - name: Extract data from cache From 3eb81657551dd02e98808ad53a7a4e02dbb165fd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B8rgen=20P=2E=20Tjern=C3=B8?= Date: Sun, 4 Feb 2024 18:12:30 -0800 Subject: [PATCH 48/48] Ignore directory mtimes in manifest --- .github/workflows/publish_ios.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/publish_ios.yml b/.github/workflows/publish_ios.yml index e2cc1b7..29f8862 100644 --- a/.github/workflows/publish_ios.yml +++ b/.github/workflows/publish_ios.yml @@ -94,14 +94,14 @@ jobs: ssh-add - <<< "${{ secrets.SSH_PRIVATE_KEY }}" ## Build project - - run: find $HOME -exec stat -f "%N %Fm" {} \; > prebuild.txt + - run: find $HOME -type f -exec stat -f "%N %Fm" {} \; > prebuild.txt - name: Build & Publish to TestFlight with Fastlane env: APP_STORE_CONNECT_API_KEY_KEY: ${{ secrets.APP_STORE_CONNECT_API_KEY_KEY }} MATCH_PASSWORD: ${{ secrets.MATCH_PASSWORD }} SSH_AUTH_SOCK: /tmp/ssh_agent.sock run: cd ios && bundle exec fastlane beta "build_name:${{ github.ref_name }}" - - run: find $HOME -exec stat -f "%N %Fm" {} \; > postbuild.txt + - run: find $HOME -type f -exec stat -f "%N %Fm" {} \; > postbuild.txt - uses: actions/upload-artifact@v4 with: name: build-manifest-${{ github.run_number }}