Some more pipeline-fixes #46
							
								
								
									
										24
									
								
								frontend/.github/workflows/build_app_ios.yaml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										24
									
								
								frontend/.github/workflows/build_app_ios.yaml
									
									
									
									
										vendored
									
									
								
							| @@ -6,14 +6,17 @@ on: | ||||
| jobs: | ||||
|   build: | ||||
|     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: | ||||
|       - uses: actions/checkout@v4 | ||||
|  | ||||
|       - name: Set up ruby env | ||||
|         uses: ruby/setup-ruby@v1 | ||||
|         with: | ||||
|           ruby-version: 3.2.1 | ||||
|           bundler-cache: true | ||||
|           ruby-version: 3.3 | ||||
|           bundler-cache: true # runs 'bundle install' and caches installed gems automatically | ||||
|  | ||||
|       - name: Install Flutter | ||||
|         uses: subosito/flutter-action@v2 | ||||
| @@ -31,16 +34,24 @@ jobs: | ||||
|           echo "BUILD_NAME=${REF_NAME//v}" >> $GITHUB_ENV | ||||
|  | ||||
|       - 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: | ||||
|           MATCH_REPO_SSH_KEY: ${{ secrets.IOS_MATCH_REPO_SSH_KEY_BASE64 }} | ||||
|  | ||||
|       - name: Install fastlane | ||||
|         run: bundle install | ||||
|       - name: Install dependencies and clean up | ||||
|         run: | | ||||
|           flutter pub get | ||||
|           bundle exec pod install | ||||
|           flutter clean | ||||
|           bundle exec pod cache clean --all | ||||
|         working-directory: ios | ||||
|  | ||||
|       - name: Run fastlane lane | ||||
|         run: bundle exec fastlane deploy_release | ||||
|         run: bundle exec fastlane deploy_release --verbose | ||||
|         working-directory: ios | ||||
|         env: | ||||
|           BUILD_NUMBER: ${{ github.run_number }} | ||||
| @@ -50,3 +61,4 @@ jobs: | ||||
|           IOS_ASC_ISSUER_ID: ${{ secrets.IOS_ASC_ISSUER_ID }} | ||||
|           IOS_ASC_KEY: ${{ secrets.IOS_ASC_KEY }} | ||||
|           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 | ||||
| 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. | ||||
| - `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_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_...` | ||||
| @@ -4,17 +4,15 @@ PODS: | ||||
|     - Flutter | ||||
|   - geolocator_apple (1.2.0): | ||||
|     - Flutter | ||||
|   - Google-Maps-iOS-Utils (6.0.0): | ||||
|   - Google-Maps-iOS-Utils (6.1.0): | ||||
|     - GoogleMaps (~> 9.0) | ||||
|   - google_maps_flutter_ios (0.0.1): | ||||
|     - Flutter | ||||
|     - Google-Maps-iOS-Utils (< 7.0, >= 5.0) | ||||
|     - GoogleMaps (< 10.0, >= 8.4) | ||||
|   - GoogleMaps (9.1.1): | ||||
|     - GoogleMaps/Maps (= 9.1.1) | ||||
|   - GoogleMaps/Base (9.1.1) | ||||
|   - GoogleMaps/Maps (9.1.1): | ||||
|     - GoogleMaps/Base | ||||
|   - GoogleMaps (9.2.0): | ||||
|     - GoogleMaps/Maps (= 9.2.0) | ||||
|   - GoogleMaps/Maps (9.2.0) | ||||
|   - map_launcher (0.0.1): | ||||
|     - Flutter | ||||
|   - path_provider_foundation (0.0.1): | ||||
| @@ -74,9 +72,9 @@ SPEC CHECKSUMS: | ||||
|   Flutter: e0871f40cf51350855a761d2e70bf5af5b9b5de7 | ||||
|   geocoding_ios: bcbdaa6bddd7d3129c9bcb8acddc5d8778689768 | ||||
|   geolocator_apple: d981750b9f47dbdb02427e1476d9a04397beb8d9 | ||||
|   Google-Maps-iOS-Utils: cfe6a0239c7ca634b7e001ad059a6707143dc8dc | ||||
|   Google-Maps-iOS-Utils: 0a484b05ed21d88c9f9ebbacb007956edd508a96 | ||||
|   google_maps_flutter_ios: 0291eb2aa252298a769b04d075e4a9d747ff7264 | ||||
|   GoogleMaps: 80ea184ed6bf44139f383a8b0e248ba3ec1cc8c9 | ||||
|   GoogleMaps: 634ec3ca99698b31ca2253d64f017217d70cfb38 | ||||
|   map_launcher: fe43bda6720bb73c12fcc1bdd86123ff49a4d4d6 | ||||
|   path_provider_foundation: 080d55be775b7414fd5a5ef3ac137b97b097e564 | ||||
|   permission_handler_apple: 4ed2196e43d0651e8ff7ca3483a069d469701f2d | ||||
| @@ -84,6 +82,6 @@ SPEC CHECKSUMS: | ||||
|   sqflite: c35dad70033b8862124f8337cc994a809fcd9fa3 | ||||
|   url_launcher_ios: 694010445543906933d732453a59da0a173ae33d | ||||
|  | ||||
| PODFILE CHECKSUM: 819463e6a0290f5a72f145ba7cde16e8b6ef0796 | ||||
| PODFILE CHECKSUM: bd1a78910c05ac1e3a220e80f392c61ab2cc8789 | ||||
|  | ||||
| COCOAPODS: 1.10.2 | ||||
|   | ||||
| @@ -8,9 +8,7 @@ import GoogleMaps | ||||
|     _ application: UIApplication, | ||||
|     didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]? | ||||
|   ) -> Bool { | ||||
|     // load the key from env | ||||
|     let key = ProcessInfo.processInfo.environment["GOOGLE_MAPS_API_KEY"]! | ||||
|     GMSServices.provideAPIKey(key) | ||||
|     GMSServices.provideAPIKey("IOS_GOOGLE_MAPS_API_KEY") | ||||
|     GeneratedPluginRegistrant.register(with: self) | ||||
|     return super.application(application, didFinishLaunchingWithOptions: launchOptions) | ||||
|   } | ||||
|   | ||||
| @@ -10,4 +10,4 @@ IOS_ASC_ISSUER_ID="sample" | ||||
| SIGNING_KEY_FILE_PATH="sample" | ||||
| SIGNING_KEY_PASSWORD="sample" | ||||
|  | ||||
| GOOGLE_MAPS_API_KEY="sample" | ||||
| IOS_GOOGLE_MAPS_API_KEY="sample" | ||||
|   | ||||
| @@ -33,7 +33,7 @@ platform :ios do | ||||
|       "flutter", | ||||
|       "build", | ||||
|       "ipa", | ||||
|       "--release", | ||||
|       "--debug", | ||||
|       "--build-name=#{build_name}", | ||||
|       "--build-number=#{build_number}", | ||||
|     ) | ||||
| @@ -44,7 +44,9 @@ platform :ios do | ||||
|       archive_path: "../build/ios/archive/Runner.xcarchive" | ||||
|     ) | ||||
|  | ||||
|     upload_to_testflight | ||||
|     upload_to_testflight( | ||||
|       skip_waiting_for_build_processing: true, | ||||
|     ) | ||||
|   end | ||||
|  | ||||
|  | ||||
| @@ -62,6 +64,16 @@ platform :ios do | ||||
|       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( | ||||
|       "flutter", | ||||
|       "build", | ||||
|   | ||||
		Reference in New Issue
	
	Block a user