-
Notifications
You must be signed in to change notification settings - Fork 5
feat: Added cleanup runs on a different isolate for unlinked media #169
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Merged
Merged
Changes from all commits
Commits
Show all changes
39 commits
Select commit
Hold shift + click to select a range
03f18b0
feat: Added cleanup runs on a different isolate for unlinked media
austin047 d0ec08e
feat: Remove phone number from registration
austin047 4e14a0e
Add iOS build workflow
austin047 125953d
feat: Add flavors and pod runner config
austin047 58aa715
feat: Added flutter fire to cli
austin047 b28205d
feat(ci): Update fastlane and flavor support
austin047 4cd8959
feat: Update the pipeline to send out to testers tmp
austin047 7e8fdba
feat: Update the pipeline to send out to testers tmp
austin047 fcb4215
fix: Resolve deprication warnings for radio switch and dropdown buttons
austin047 168f778
chore: Update firebase config staging setup and build entries
austin047 1b51cf8
feat: Increase flutter version of project to the latest
austin047 9311f0f
feat: Correct firebase testers group
austin047 8df9358
feat: Added neccessary gems
austin047 dab5825
feat: Added step to run bundle install in ci
austin047 7ef56d7
chore(ios): Update gemfile lock to match gemfile
austin047 4f41132
chore(ios): Remove dev from cert profile
austin047 2160387
chore: Update podfile.lock
kofimokome 8d23baa
chore: IOS deployment fixes
kofimokome 0c89874
fix: Update ios icons
osong256 cffee6a
fix: Asset icons xcassets
austin047 5f3a61a
feat: Setup flutter fire
austin047 ea654a4
fix: Update profile identfier mapping
austin047 a273316
fix: Syntax error in Fastfile
austin047 5debba1
fix: Correct crashlytics path
austin047 12b8997
fix: Include Usage description for info plist
austin047 d25326d
ci: Update the xcode-version
austin047 c07b963
fix: Specify apple not using encryption
austin047 f2c00a5
feat: Added icons for different flavours
austin047 44ed1b7
fix: Remove env passing for application'
austin047 b541a45
ci: Update cli
austin047 2ed0f8d
ci: Pass flavour in the cli and remove dart env
austin047 e630221
ci: Fix github action issues
austin047 0dfe3db
ci: Set up the keystore
austin047 70d4f00
ci: Fix production release path
austin047 0358e8e
fix: Ai bot issues
austin047 7ec61af
refactor: Remove unusead listerner
austin047 c73f751
refactor: Remove un used file
austin047 5591c89
ci: Optimize build workflow
austin047 e021e4e
ci: Add flutter fire to ios build
austin047 File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -1,3 +1,3 @@ | ||
| { | ||
| "flutter": "3.32.8" | ||
| "flutter": "3.38.9" | ||
| } |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,65 @@ | ||
| # GitHub Actions: Secrets and Variables neccessary for faslane deployment | ||
|
|
||
| Configure these in your repo: **Settings → Secrets and variables → Actions**. | ||
|
|
||
| Use **Secrets** for sensitive values; use **Variables** for non-sensitive identifiers. | ||
|
|
||
| --- | ||
|
|
||
| ## iOS (Match + App Store Connect) | ||
|
|
||
| | Name | Type | Used by | Description | | ||
| |------|------|---------|-------------| | ||
| | `MATCH_DEPLOY_KEY` | Secret | deploy-with-fastlane, ios-setup, ios-release | Private SSH key that has read (and for setup, write) access to the certificates repo. Used by `webfactory/ssh-agent`. | | ||
| | `MATCH_PASSWORD` | Secret | deploy-with-fastlane, ios-setup, ios-release | Password for the Match-encrypted certs/profiles in the repo. | | ||
| | `ASC_KEY_ID` | Secret | deploy-with-fastlane, ios-setup, ios-release | App Store Connect API key ID. | | ||
| | `ASC_ISSUER_ID` | Secret | deploy-with-fastlane, ios-setup, ios-release | App Store Connect issuer ID. | | ||
| | `ASC_KEY_P8_BASE64` | Secret | deploy-with-fastlane, ios-setup, ios-release | App Store Connect API private key (.p8) content, **base64-encoded**. | | ||
| | `APP_BUNDLE_ID` | Variable | deploy-with-fastlane, ios-release (prod) | Production iOS bundle ID, e.g. `com.whilesmart.trakli`. | | ||
| | `CREDENTIAL_FILE_CONTENT` | Secret | ios-setup, ios-release | Same as Android: Firebase/service account JSON **raw string**. Written to `service_credentials_content.json` for iOS lanes (e.g. release_firebase, Crashlytics). | | ||
| | `FIREBASE_APP_ID` | Secret | ios-release (firebase track), android-release (firebase) | Firebase app ID. For iOS dev distribution use this, or set `FIREBASE_APP_ID_IOS_DEV` for the iOS dev app. | | ||
| | `FIREBASE_APP_ID_IOS_DEV` | Secret | ios-release (firebase track) | Optional. iOS dev Firebase app ID for App Distribution. If unset, `release_firebase` falls back to `FIREBASE_APP_ID`. | | ||
|
|
||
| **Optional (only if you use a different cert repo):** | ||
|
|
||
| | Name | Type | Description | | ||
| |------|------|-------------| | ||
| | `MATCH_GIT_URL` | Secret or Variable | Git URL for the Match repo, e.g. `git@github.com:whilesmart/certificates.git`. Default in Matchfile is `git@github.com:whilesmart/certificates.git`. | | ||
|
|
||
| --- | ||
|
|
||
| ## Android | ||
|
|
||
| | Name | Type | Used by | Description | | ||
| |------|------|---------|-------------| | ||
| | `GOOGLE_SERVICES_ACCOUNT_BASE64` | Secret | deploy-with-fastlane, android-release | Google Play service account JSON, **base64-encoded**. Decoded to `google_service_account.json` in repo root. | | ||
| | `CREDENTIAL_FILE_CONTENT` | Secret | deploy-with-fastlane, android-release, ios-setup, ios-release | Firebase / Google service account JSON **raw string** for distribution. Written to `service_credentials_content.json`. | | ||
| | `ANDROID_KEYSTORE_FILE_BASE64` | Secret | deploy-with-fastlane | Release keystore (.jks) file content, **base64-encoded**. | | ||
| | `ANDROID_KEYSTORE_PASSWORD` | Secret | deploy-with-fastlane | Keystore and key password. | | ||
| | `APP_PACKAGE_NAME` | Variable | deploy-with-fastlane, android-release | Android applicationId, e.g. `com.whilesmart.trakli`. | | ||
| | `FIREBASE_APP_ID` | Secret | android-release (firebase track) | Firebase Android app ID (for App Distribution). | | ||
|
|
||
| --- | ||
|
|
||
| ## Summary checklist | ||
|
|
||
| **Secrets (Actions → Secrets):** | ||
|
|
||
| - `MATCH_DEPLOY_KEY` | ||
| - `MATCH_PASSWORD` | ||
| - `ASC_KEY_ID` | ||
| - `ASC_ISSUER_ID` | ||
| - `ASC_KEY_P8_BASE64` | ||
| - `GOOGLE_SERVICES_ACCOUNT_BASE64` | ||
| - `CREDENTIAL_FILE_CONTENT` | ||
| - `ANDROID_KEYSTORE_FILE_BASE64` | ||
| - `ANDROID_KEYSTORE_PASSWORD` | ||
| - `FIREBASE_APP_ID` (if using Android or iOS Firebase App Distribution) | ||
| - `FIREBASE_APP_ID_IOS_DEV` (optional; for iOS dev Firebase track; falls back to `FIREBASE_APP_ID`) | ||
|
|
||
| **Variables (Actions → Variables):** | ||
|
|
||
| - `APP_BUNDLE_ID` (e.g. `com.whilesmart.trakli`) | ||
| - `APP_PACKAGE_NAME` (e.g. `com.whilesmart.trakli`) | ||
|
|
||
| **Certificates repo:** Ensure the repo used by Match (default: `git@github.com:whilesmart/certificates.git`) exists and that the deploy key has access. Run **iOS Certificate Setup** (ios-setup.yml) once via workflow_dispatch to generate/update certs and profiles for `com.whilesmart.trakli`, `com.whilesmart.trakli.dev`, and `com.whilesmart.trakli.stg`. Staging uses bundle ID `com.whilesmart.trakli.stg`; no extra secrets beyond MATCH/ASC_*. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,38 @@ | ||
| # Fastlane in GitHub Actions – verification summary | ||
|
|
||
| ## Gemfile layout (aligned with mindpad) | ||
|
|
||
| - **iOS**: `ios/fastlane/Gemfile` (fastlane + cocoapods + plugins). `ios/Gemfile` evals it so workflows using `working-directory: ios` still work. | ||
| - **Android**: `android/fastlane/Gemfile` (fastlane + plugins). `android/Gemfile` at repo root is still used by deploy-with-fastlane. | ||
|
|
||
| ## Workflows and lanes | ||
|
|
||
| | Workflow | Job / step | Working dir | Lanes used | Status | | ||
| |----------|------------|-------------|------------|--------| | ||
| | **ios-release.yml** | Setup Ruby | `ios/fastlane` | — | ✓ Uses `ios/fastlane/Gemfile` | | ||
| | **ios-release.yml** | Release to TestFlight (Dev/Staging/Prod) | `ios/fastlane` | `release_testflight_dev`, `release_testflight_staging`, `release_app_store` | ✓ | | ||
| | **ios-release.yml** | Release to Firebase | `ios/fastlane` | `release_firebase` | ✓ | | ||
| | **android-release.yml** | Setup Ruby | `android/fastlane` | — | ✓ Uses `android/fastlane/Gemfile` | | ||
| | **android-release.yml** | Release to Firebase / Play Store | `android/fastlane` | `release_play_store_using_firebase`, `release_play_store` | ✓ | | ||
| | **deploy-with-fastlane.yaml** | iOS: Set up Ruby, pod install, fastlane | `ios` | `release_app_store` | ✓ `ios/Gemfile` evals `fastlane/Gemfile` | | ||
| | **deploy-with-fastlane.yaml** | Android: Set up Ruby, fastlane | `android` | `release_play_store` | ✓ Uses `android/Gemfile` | | ||
| | **ios-setup.yml** | Setup Ruby, fastlane | `ios` | `setup_certificates` | ✓ `ios/Gemfile` evals `fastlane/Gemfile` | | ||
|
|
||
| ## Build number and version | ||
|
|
||
| - **Root `Fastfile`**: `get_build_number(store, app_identifier)` uses `get_new_build_number` (from `fastlane-plugin-get_new_build_number`) to fetch the next build from App Store Connect / Play Store. | ||
| - **Root `Fastfile`**: `get_version_from_pubspec` reads `pubspec.yaml` for the version. | ||
| - **Plugins**: `fastlane-plugin-versioning` (iOS) and `fastlane-plugin-versioning_android` (Android) are available for reading/incrementing version in native projects; the main lanes still rely on the root Fastfile helpers above. | ||
|
|
||
| ## After adding or changing gems | ||
|
|
||
| From repo root: | ||
|
|
||
| ```bash | ||
| cd ios/fastlane && bundle install && cd ../.. | ||
| cd android/fastlane && bundle install && cd ../.. | ||
| # If you use working-directory: ios in CI, also: | ||
| cd ios && bundle install && cd .. | ||
| ``` | ||
|
|
||
| Commit any updated `Gemfile.lock` files. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,83 @@ | ||
| name: Android Release (Main + Manual) | ||
|
|
||
| on: | ||
| push: | ||
| branches: | ||
| - dev | ||
| workflow_dispatch: | ||
| inputs: | ||
| track: | ||
| description: 'Release track' | ||
| required: true | ||
| default: 'firebase' | ||
| type: choice | ||
| options: | ||
| - firebase | ||
| - playstore | ||
|
|
||
| jobs: | ||
| build-and-release: | ||
| name: Android Release Pipeline | ||
| runs-on: ubuntu-latest | ||
| steps: | ||
| - uses: actions/checkout@v4 | ||
|
|
||
| - name: Setup Java | ||
| uses: actions/setup-java@v4 | ||
| with: | ||
| distribution: 'temurin' | ||
| java-version: '17' | ||
|
|
||
| - name: Setup Flutter | ||
| uses: subosito/flutter-action@v2 | ||
| with: | ||
| flutter-version: "3.38.9" | ||
| channel: 'stable' | ||
| cache: true | ||
|
|
||
| - name: Setup Ruby | ||
| uses: ruby/setup-ruby@v1 | ||
| with: | ||
| ruby-version: '3.2' | ||
| bundler-cache: true | ||
| working-directory: android/fastlane | ||
|
|
||
| - name: Install Fastlane gems | ||
| working-directory: android/fastlane | ||
| run: bundle install | ||
|
|
||
| - name: Setup Service Accounts | ||
| env: | ||
| GOOGLE_SERVICES_ACCOUNT_BASE64: ${{ secrets.GOOGLE_SERVICES_ACCOUNT_BASE64 }} | ||
| CREDENTIAL_FILE_CONTENT: ${{ secrets.CREDENTIAL_FILE_CONTENT }} | ||
| run: | | ||
| printf '%s' "$GOOGLE_SERVICES_ACCOUNT_BASE64" | base64 --decode > google_service_account.json | ||
| printf '%s' "$CREDENTIAL_FILE_CONTENT" > service_credentials_content.json | ||
|
|
||
| - name: Setup Android signing keystore | ||
| run: | | ||
| printf '%s' "${{ secrets.ANDROID_KEYSTORE_FILE_BASE64 }}" | base64 --decode > android/key.jks | ||
|
|
||
| - name: Setup Android key.properties | ||
| run: | | ||
| cat <<EOF > android/key.properties | ||
| storePassword=${{ secrets.ANDROID_KEYSTORE_PASSWORD }} | ||
| keyPassword=${{ secrets.ANDROID_KEYSTORE_PASSWORD }} | ||
| keyAlias=release | ||
| storeFile=../key.jks | ||
| EOF | ||
|
|
||
| - name: Release to Firebase | ||
| if: ${{ github.event_name == 'push' || github.event.inputs.track == 'firebase' }} | ||
| working-directory: android/fastlane | ||
| run: bundle exec fastlane release_play_store_using_firebase | ||
| env: | ||
| APP_PACKAGE_NAME: ${{ vars.APP_PACKAGE_NAME }} | ||
| FIREBASE_APP_ID: ${{ secrets.FIREBASE_APP_ID }} | ||
|
|
||
| - name: Release to Play Store | ||
| if: ${{ github.event_name == 'workflow_dispatch' && github.event.inputs.track == 'playstore' }} | ||
| working-directory: android/fastlane | ||
| run: bundle exec fastlane release_play_store | ||
| env: | ||
| APP_PACKAGE_NAME: ${{ vars.APP_PACKAGE_NAME }} |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Why?