Skip to content

Commit

Permalink
ci: inject Firebase configuration
Browse files Browse the repository at this point in the history
  • Loading branch information
Marc-Antoine-Soucy authored and Soap-141 committed Jun 18, 2024
1 parent 832aac5 commit 3f97977
Show file tree
Hide file tree
Showing 6 changed files with 81 additions and 18 deletions.
8 changes: 4 additions & 4 deletions build/steps-build-android.yml
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,10 @@ steps:

- template: templates/flutter-install.yml

- template : templates/replace-firebase-config.yml
parameters:
pathToSrc: '${{ parameters.pathToSrc }}'

- task: DownloadSecureFile@1
name: keyStore
displayName: "Download Keystore from Secure Files"
Expand All @@ -44,8 +48,6 @@ steps:
inputs:
secureFile: ${{ parameters.androidKeyStorePropertiesFile }}

# TODO: If Production -> Download the google-services.json for production.

# The file copied inside the source directory must be aligned with the name chosen in '/src/app/lib/android/app/build.gradle' where 'key.properties' is loaded.
- task: PowerShell@2
displayName: Copy Signing Configuration Files
Expand All @@ -58,8 +60,6 @@ steps:
Copy-Item -Path '$(keyStore.secureFilePath)' -Destination '${{ parameters.pathToSrc }}\app\android\app\${{ parameters.androidKeystoreFile }}'
Write-Host 'Key store copied to ${{ parameters.pathToSrc }}/app/android/app/${{ parameters.androidKeystoreFile }}.'
# TODO: If Production -> Copy downloaded the google-services.json for production in the Android application folder.

- template: templates/flutter-prepare.yml
parameters:
projectDirectory: '${{ parameters.pathToSrc }}/app'
Expand Down
4 changes: 4 additions & 0 deletions build/steps-build-ios.yml
Original file line number Diff line number Diff line change
Expand Up @@ -47,6 +47,10 @@ steps:
provisioningProfileLocation: 'secureFiles'
provProfileSecureFile: ${{ parameters.iosProvisioningProfileFile }}

- template : templates/replace-firebase-config.yml
parameters:
pathToSrc: '${{ parameters.pathToSrc }}'

# Flutter project signing process goes through exportOptions.plist file which holds secure information about signing.
- task: DownloadSecureFile@1
name: exportOptions
Expand Down
50 changes: 50 additions & 0 deletions build/templates/replace-firebase-config.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
parameters:
- name: pathToSrc
type: string
default: ''

steps:
- task: DownloadSecureFile@1
name: firebaseJson
displayName: "Download Keystore from Secure Files"
inputs:
secureFile: ${{ if eq(variables['ApplicationEnvironment'], 'Production') }}:
then:
- $(FirebaseJson)
else:
- $(InternalFirebaseJson)

- task: DownloadSecureFile@1
name: firebaseOptionsDart
displayName: "Download Keystore from Secure Files"
inputs:
secureFile: ${{ if eq(variables['ApplicationEnvironment'], 'Production') }}:
then:
- $(FirebaseOptionsDart)
else:
- $(InternalFirebaseOptionsDart)

- task: DownloadSecureFile@1
name: googleServicesJson
displayName: "Download Keystore from Secure Files"
inputs:
secureFile: ${{ if eq(variables['ApplicationEnvironment'], 'Production') }}:
then:
- $(GoogleServicesJson)
else:
- $(InternalGoogleServicesJson)

- task: PowerShell@2
displayName: Copy firebase Configuration Files
inputs:
targetType: 'inline'
script: |
Copy-Item -Path '$(firebaseJson.secureFilePath)' -Destination '${{ parameters.pathToSrc }}\app\firebase.json'
Write-Host 'Firebase.json copied to ${{ parameters.pathToSrc }}/app/firebase.json'
Copy-Item -Path '$(firebaseOptionsDart.secureFilePath)' -Destination '${{ parameters.pathToSrc }}\app\lib\firebase_options.dart'
Write-Host 'FirebaseOptions.Dart copied to ${{ parameters.pathToSrc }}/app/lib/firebase_options.dart'
Copy-Item -Path '$(googleServicesJson.secureFilePath)' -Destination '${{ parameters.pathToSrc }}\app\android\app\google-services.json'
Write-Host 'GoogleServices.json copied to ${{ parameters.pathToSrc }}\app\android\app\google-services.json'
8 changes: 8 additions & 0 deletions build/variables.yml
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,14 @@
AppStoreExportOptions: com.nventive.flutterapptemplate.exportOptions.plist # This is the export options file for the AppStore (Production distribution) builds.
AppStoreCertificate: nventive.p12 # This is the client production certificate used to sign AppStore builds.

# firebase
FirebaseJson: firebase-flutter.json
FirebaseOptionsDart: firebase_options-flutter.dart
GoogleServicesJson: google-services-flutter.json
InternalFirebaseJson: firebase-flutter-internal.json
InternalFirebaseOptionsDart: firebase_options-flutter-internal.dart
InternalGoogleServicesJson: google-services-flutter-internal.json

# Prerequisites - Service connections.
# Make sure you have the following service connections in your Azure pipeline library.
GooglePlayServiceConnection: GooglePlay-nventive-ApplicationTemplate
Expand Down
28 changes: 14 additions & 14 deletions src/app/pubspec.lock
Original file line number Diff line number Diff line change
Expand Up @@ -496,10 +496,10 @@ packages:
dependency: "direct main"
description:
name: intl
sha256: "3bc132a9dbce73a7e4a21a17d06e1878839ffbf975568bc875c60537824b0c4d"
sha256: d6f56758b7d3014a48af9701c085700aac781a92a87a62b1333b46d8879661cf
url: "https://pub.dev"
source: hosted
version: "0.18.1"
version: "0.19.0"
io:
dependency: transitive
description:
Expand Down Expand Up @@ -536,26 +536,26 @@ packages:
dependency: transitive
description:
name: leak_tracker
sha256: "78eb209deea09858f5269f5a5b02be4049535f568c07b275096836f01ea323fa"
sha256: "7f0df31977cb2c0b88585095d168e689669a2cc9b97c309665e3386f3e9d341a"
url: "https://pub.dev"
source: hosted
version: "10.0.0"
version: "10.0.4"
leak_tracker_flutter_testing:
dependency: transitive
description:
name: leak_tracker_flutter_testing
sha256: b46c5e37c19120a8a01918cfaf293547f47269f7cb4b0058f21531c2465d6ef0
sha256: "06e98f569d004c1315b991ded39924b21af84cf14cc94791b8aea337d25b57f8"
url: "https://pub.dev"
source: hosted
version: "2.0.1"
version: "3.0.3"
leak_tracker_testing:
dependency: transitive
description:
name: leak_tracker_testing
sha256: a597f72a664dbd293f3bfc51f9ba69816f84dcd403cdac7066cb3f6003f3ab47
sha256: "6ba465d5d76e67ddf503e1161d1f4a6bc42306f9d66ca1e8f079a47290fb06d3"
url: "https://pub.dev"
source: hosted
version: "2.0.1"
version: "3.0.1"
lints:
dependency: transitive
description:
Expand Down Expand Up @@ -600,10 +600,10 @@ packages:
dependency: transitive
description:
name: meta
sha256: d584fa6707a52763a52446f02cc621b077888fb63b93bbcb1143a7be5a0c0c04
sha256: "7687075e408b093f36e6bbf6c91878cc0d4cd10f409506f7bc996f68220b9136"
url: "https://pub.dev"
source: hosted
version: "1.11.0"
version: "1.12.0"
mime:
dependency: transitive
description:
Expand Down Expand Up @@ -1077,10 +1077,10 @@ packages:
dependency: transitive
description:
name: test_api
sha256: "5c2f730018264d276c20e4f1503fd1308dfbbae39ec8ee63c5236311ac06954b"
sha256: "9955ae474176f7ac8ee4e989dadfb411a58c30415bcfb648fa04b2b8a03afa7f"
url: "https://pub.dev"
source: hosted
version: "0.6.1"
version: "0.7.0"
timezone:
dependency: transitive
description:
Expand Down Expand Up @@ -1197,10 +1197,10 @@ packages:
dependency: transitive
description:
name: vm_service
sha256: b3d56ff4341b8f182b96aceb2fa20e3dcb336b9f867bc0eafc0de10f1048e957
sha256: "3923c89304b715fb1eb6423f017651664a03bf5f4b29983627c4da791f74a4ec"
url: "https://pub.dev"
source: hosted
version: "13.0.0"
version: "14.2.1"
watcher:
dependency: transitive
description:
Expand Down
1 change: 1 addition & 0 deletions src/cli/CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ Prefix your items with `(Template)` if the change is about the template and not

## 0.19.4
- Fix CI/CD artifact name for iOS.
- Firebase configuration is now injected by CI/CD.

## 0.19.2
- Cleanup documentation.
Expand Down

0 comments on commit 3f97977

Please sign in to comment.