24
									
								
								frontend/.github/workflows/build_app_ios.yaml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										24
									
								
								frontend/.github/workflows/build_app_ios.yaml
									
									
									
									
										vendored
									
									
								
							| @@ -6,14 +6,17 @@ on: | |||||||
| jobs: | jobs: | ||||||
|   build: |   build: | ||||||
|     runs-on: macos-latest |     runs-on: macos-latest | ||||||
|  |     env: | ||||||
|  |       # $BUNDLE_GEMFILE must be set at the job level, so it is set for all steps | ||||||
|  |       BUNDLE_GEMFILE: ios/Gemfile | ||||||
|     steps: |     steps: | ||||||
|       - uses: actions/checkout@v4 |       - uses: actions/checkout@v4 | ||||||
|  |  | ||||||
|       - name: Set up ruby env |       - name: Set up ruby env | ||||||
|         uses: ruby/setup-ruby@v1 |         uses: ruby/setup-ruby@v1 | ||||||
|         with: |         with: | ||||||
|           ruby-version: 3.2.1 |           ruby-version: 3.3 | ||||||
|           bundler-cache: true |           bundler-cache: true # runs 'bundle install' and caches installed gems automatically | ||||||
|  |  | ||||||
|       - name: Install Flutter |       - name: Install Flutter | ||||||
|         uses: subosito/flutter-action@v2 |         uses: subosito/flutter-action@v2 | ||||||
| @@ -31,16 +34,24 @@ jobs: | |||||||
|           echo "BUILD_NAME=${REF_NAME//v}" >> $GITHUB_ENV |           echo "BUILD_NAME=${REF_NAME//v}" >> $GITHUB_ENV | ||||||
|  |  | ||||||
|       - name: Setup SSH key for match git repo |       - name: Setup SSH key for match git repo | ||||||
|         run: echo "$MATCH_REPO_SSH_KEY" | base64 --decode > ~/.ssh/id_rsa && chmod 600 ~/.ssh/id_rsa |         # and mark the host as known | ||||||
|  |         run: | | ||||||
|  |           echo $MATCH_REPO_SSH_KEY | base64 --decode > ~/.ssh/id_rsa | ||||||
|  |           chmod 600 ~/.ssh/id_rsa | ||||||
|  |           ssh-keyscan -p 2222 git.kluster.moll.re > ~/.ssh/known_hosts | ||||||
|         env: |         env: | ||||||
|           MATCH_REPO_SSH_KEY: ${{ secrets.IOS_MATCH_REPO_SSH_KEY_BASE64 }} |           MATCH_REPO_SSH_KEY: ${{ secrets.IOS_MATCH_REPO_SSH_KEY_BASE64 }} | ||||||
|  |  | ||||||
|       - name: Install fastlane |       - name: Install dependencies and clean up | ||||||
|         run: bundle install |         run: | | ||||||
|  |           flutter pub get | ||||||
|  |           bundle exec pod install | ||||||
|  |           flutter clean | ||||||
|  |           bundle exec pod cache clean --all | ||||||
|         working-directory: ios |         working-directory: ios | ||||||
|  |  | ||||||
|       - name: Run fastlane lane |       - name: Run fastlane lane | ||||||
|         run: bundle exec fastlane deploy_release |         run: bundle exec fastlane deploy_release --verbose | ||||||
|         working-directory: ios |         working-directory: ios | ||||||
|         env: |         env: | ||||||
|           BUILD_NUMBER: ${{ github.run_number }} |           BUILD_NUMBER: ${{ github.run_number }} | ||||||
| @@ -50,3 +61,4 @@ jobs: | |||||||
|           IOS_ASC_ISSUER_ID: ${{ secrets.IOS_ASC_ISSUER_ID }} |           IOS_ASC_ISSUER_ID: ${{ secrets.IOS_ASC_ISSUER_ID }} | ||||||
|           IOS_ASC_KEY: ${{ secrets.IOS_ASC_KEY }} |           IOS_ASC_KEY: ${{ secrets.IOS_ASC_KEY }} | ||||||
|           MATCH_PASSWORD: ${{ secrets.IOS_MATCH_PASSWORD }} |           MATCH_PASSWORD: ${{ secrets.IOS_MATCH_PASSWORD }} | ||||||
|  |           IOS_GOOGLE_MAPS_API_KEY: ${{ secrets.IOS_GOOGLE_MAPS_API_KEY }} | ||||||
|   | |||||||
| @@ -50,13 +50,12 @@ Secrets used by fastlane are stored on hashicorp vault and are fetched by the CI | |||||||
|  |  | ||||||
| ## Secrets | ## Secrets | ||||||
| These are mostly used by the CI/CD pipeline to deploy the application. The main usage for github actions is documented under [https://github.com/hashicorp/vault-action](https://github.com/hashicorp/vault-action). | These are mostly used by the CI/CD pipeline to deploy the application. The main usage for github actions is documented under [https://github.com/hashicorp/vault-action](https://github.com/hashicorp/vault-action). | ||||||
| **Global secrets** are used for both versions of the app (android and ios).  |  | ||||||
| - `GOOGLE_MAPS_API_KEY` is used to authenticate with the Google Maps API |  | ||||||
|  |  | ||||||
| **Platform-specific secrets** are used by the CI/CD pipeline to deploy to the respective app stores. | **Platform-specific secrets** are used by the CI/CD pipeline to deploy to the respective app stores. | ||||||
|  | - `GOOGLE_MAPS_API_KEY` is used to authenticate with the Google Maps API and is scoped to the android platform | ||||||
| - `ANDROID_KEYSTORE` is used to sign the android apk | - `ANDROID_KEYSTORE` is used to sign the android apk | ||||||
| - `ANDROID_GOOGLE_KEY` is used to authenticate with the Google Play Store api | - `ANDROID_GOOGLE_KEY` is used to authenticate with the Google Play Store api | ||||||
| - `IOS_GOOGLE_...` | - `IOS_GOOGLE_MAPS_API_KEY` is used to authenticate with the Google Maps API and is scoped to the ios platform | ||||||
| - `IOS_GOOGLE_...` | - `IOS_GOOGLE_...` | ||||||
| - `IOS_GOOGLE_...` | - `IOS_GOOGLE_...` | ||||||
| - `IOS_GOOGLE_...` | - `IOS_GOOGLE_...` | ||||||
| @@ -4,17 +4,15 @@ PODS: | |||||||
|     - Flutter |     - Flutter | ||||||
|   - geolocator_apple (1.2.0): |   - geolocator_apple (1.2.0): | ||||||
|     - Flutter |     - Flutter | ||||||
|   - Google-Maps-iOS-Utils (6.0.0): |   - Google-Maps-iOS-Utils (6.1.0): | ||||||
|     - GoogleMaps (~> 9.0) |     - GoogleMaps (~> 9.0) | ||||||
|   - google_maps_flutter_ios (0.0.1): |   - google_maps_flutter_ios (0.0.1): | ||||||
|     - Flutter |     - Flutter | ||||||
|     - Google-Maps-iOS-Utils (< 7.0, >= 5.0) |     - Google-Maps-iOS-Utils (< 7.0, >= 5.0) | ||||||
|     - GoogleMaps (< 10.0, >= 8.4) |     - GoogleMaps (< 10.0, >= 8.4) | ||||||
|   - GoogleMaps (9.1.1): |   - GoogleMaps (9.2.0): | ||||||
|     - GoogleMaps/Maps (= 9.1.1) |     - GoogleMaps/Maps (= 9.2.0) | ||||||
|   - GoogleMaps/Base (9.1.1) |   - GoogleMaps/Maps (9.2.0) | ||||||
|   - GoogleMaps/Maps (9.1.1): |  | ||||||
|     - GoogleMaps/Base |  | ||||||
|   - map_launcher (0.0.1): |   - map_launcher (0.0.1): | ||||||
|     - Flutter |     - Flutter | ||||||
|   - path_provider_foundation (0.0.1): |   - path_provider_foundation (0.0.1): | ||||||
| @@ -74,9 +72,9 @@ SPEC CHECKSUMS: | |||||||
|   Flutter: e0871f40cf51350855a761d2e70bf5af5b9b5de7 |   Flutter: e0871f40cf51350855a761d2e70bf5af5b9b5de7 | ||||||
|   geocoding_ios: bcbdaa6bddd7d3129c9bcb8acddc5d8778689768 |   geocoding_ios: bcbdaa6bddd7d3129c9bcb8acddc5d8778689768 | ||||||
|   geolocator_apple: d981750b9f47dbdb02427e1476d9a04397beb8d9 |   geolocator_apple: d981750b9f47dbdb02427e1476d9a04397beb8d9 | ||||||
|   Google-Maps-iOS-Utils: cfe6a0239c7ca634b7e001ad059a6707143dc8dc |   Google-Maps-iOS-Utils: 0a484b05ed21d88c9f9ebbacb007956edd508a96 | ||||||
|   google_maps_flutter_ios: 0291eb2aa252298a769b04d075e4a9d747ff7264 |   google_maps_flutter_ios: 0291eb2aa252298a769b04d075e4a9d747ff7264 | ||||||
|   GoogleMaps: 80ea184ed6bf44139f383a8b0e248ba3ec1cc8c9 |   GoogleMaps: 634ec3ca99698b31ca2253d64f017217d70cfb38 | ||||||
|   map_launcher: fe43bda6720bb73c12fcc1bdd86123ff49a4d4d6 |   map_launcher: fe43bda6720bb73c12fcc1bdd86123ff49a4d4d6 | ||||||
|   path_provider_foundation: 080d55be775b7414fd5a5ef3ac137b97b097e564 |   path_provider_foundation: 080d55be775b7414fd5a5ef3ac137b97b097e564 | ||||||
|   permission_handler_apple: 4ed2196e43d0651e8ff7ca3483a069d469701f2d |   permission_handler_apple: 4ed2196e43d0651e8ff7ca3483a069d469701f2d | ||||||
| @@ -84,6 +82,6 @@ SPEC CHECKSUMS: | |||||||
|   sqflite: c35dad70033b8862124f8337cc994a809fcd9fa3 |   sqflite: c35dad70033b8862124f8337cc994a809fcd9fa3 | ||||||
|   url_launcher_ios: 694010445543906933d732453a59da0a173ae33d |   url_launcher_ios: 694010445543906933d732453a59da0a173ae33d | ||||||
|  |  | ||||||
| PODFILE CHECKSUM: 819463e6a0290f5a72f145ba7cde16e8b6ef0796 | PODFILE CHECKSUM: bd1a78910c05ac1e3a220e80f392c61ab2cc8789 | ||||||
|  |  | ||||||
| COCOAPODS: 1.10.2 | COCOAPODS: 1.10.2 | ||||||
|   | |||||||
| @@ -8,9 +8,7 @@ import GoogleMaps | |||||||
|     _ application: UIApplication, |     _ application: UIApplication, | ||||||
|     didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]? |     didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]? | ||||||
|   ) -> Bool { |   ) -> Bool { | ||||||
|     // load the key from env |     GMSServices.provideAPIKey("IOS_GOOGLE_MAPS_API_KEY") | ||||||
|     let key = ProcessInfo.processInfo.environment["GOOGLE_MAPS_API_KEY"]! |  | ||||||
|     GMSServices.provideAPIKey(key) |  | ||||||
|     GeneratedPluginRegistrant.register(with: self) |     GeneratedPluginRegistrant.register(with: self) | ||||||
|     return super.application(application, didFinishLaunchingWithOptions: launchOptions) |     return super.application(application, didFinishLaunchingWithOptions: launchOptions) | ||||||
|   } |   } | ||||||
|   | |||||||
| @@ -10,4 +10,4 @@ IOS_ASC_ISSUER_ID="sample" | |||||||
| SIGNING_KEY_FILE_PATH="sample" | SIGNING_KEY_FILE_PATH="sample" | ||||||
| SIGNING_KEY_PASSWORD="sample" | SIGNING_KEY_PASSWORD="sample" | ||||||
|  |  | ||||||
| GOOGLE_MAPS_API_KEY="sample" | IOS_GOOGLE_MAPS_API_KEY="sample" | ||||||
|   | |||||||
| @@ -33,7 +33,7 @@ platform :ios do | |||||||
|       "flutter", |       "flutter", | ||||||
|       "build", |       "build", | ||||||
|       "ipa", |       "ipa", | ||||||
|       "--release", |       "--debug", | ||||||
|       "--build-name=#{build_name}", |       "--build-name=#{build_name}", | ||||||
|       "--build-number=#{build_number}", |       "--build-number=#{build_number}", | ||||||
|     ) |     ) | ||||||
| @@ -44,7 +44,9 @@ platform :ios do | |||||||
|       archive_path: "../build/ios/archive/Runner.xcarchive" |       archive_path: "../build/ios/archive/Runner.xcarchive" | ||||||
|     ) |     ) | ||||||
|  |  | ||||||
|     upload_to_testflight |     upload_to_testflight( | ||||||
|  |       skip_waiting_for_build_processing: true, | ||||||
|  |     ) | ||||||
|   end |   end | ||||||
|  |  | ||||||
|  |  | ||||||
| @@ -62,6 +64,16 @@ platform :ios do | |||||||
|       readonly: true, |       readonly: true, | ||||||
|     ) |     ) | ||||||
|  |  | ||||||
|  |     # replace secrets by real values, the stupid way | ||||||
|  |     sh( | ||||||
|  |       "sed", | ||||||
|  |       "-i", | ||||||
|  |       "", | ||||||
|  |       "s/IOS_GOOGLE_MAPS_API_KEY/#{ENV["IOS_GOOGLE_MAPS_API_KEY"]}/g", | ||||||
|  |       "../Runner/AppDelegate.swift" | ||||||
|  |  | ||||||
|  |     ) | ||||||
|  |  | ||||||
|     sh( |     sh( | ||||||
|       "flutter", |       "flutter", | ||||||
|       "build", |       "build", | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user