{"id":25144423,"url":"https://github.com/openmf/kmp-android-firebase-publish-action","last_synced_at":"2025-04-03T06:13:59.462Z","repository":{"id":268120975,"uuid":"903041901","full_name":"openMF/kmp-android-firebase-publish-action","owner":"openMF","description":"This GitHub Action automates the process of building and deploying Android applications to Firebase App Distribution using Fastlane.","archived":false,"fork":false,"pushed_at":"2025-01-12T20:53:03.000Z","size":27,"stargazers_count":1,"open_issues_count":0,"forks_count":1,"subscribers_count":4,"default_branch":"main","last_synced_at":"2025-03-27T17:00:17.467Z","etag":null,"topics":["fastlane","firebase","github-actions","kotlin-android","marketplace"],"latest_commit_sha":null,"homepage":"","language":null,"has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/openMF.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-12-13T20:02:36.000Z","updated_at":"2025-03-13T06:27:09.000Z","dependencies_parsed_at":"2024-12-14T14:19:57.926Z","dependency_job_id":"00ab12c2-f2eb-432f-8d2c-95e73ed6b782","html_url":"https://github.com/openMF/kmp-android-firebase-publish-action","commit_stats":null,"previous_names":["openmf/kmp-android-firebase-publish-action"],"tags_count":4,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/openMF%2Fkmp-android-firebase-publish-action","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/openMF%2Fkmp-android-firebase-publish-action/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/openMF%2Fkmp-android-firebase-publish-action/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/openMF%2Fkmp-android-firebase-publish-action/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/openMF","download_url":"https://codeload.github.com/openMF/kmp-android-firebase-publish-action/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":246944386,"owners_count":20858772,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["fastlane","firebase","github-actions","kotlin-android","marketplace"],"created_at":"2025-02-08T19:46:15.417Z","updated_at":"2025-04-03T06:13:59.444Z","avatar_url":"https://github.com/openMF.png","language":null,"funding_links":[],"categories":[],"sub_categories":[],"readme":"# KMP Android App Publish Action\n\nThis GitHub Action automates the process of building and deploying Android applications to Firebase App Distribution using Fastlane.\n\n## Prerequisites\n\nBefore using this action, make sure you have:\n\n1. A valid Firebase project set up with App Distribution enabled\n2. Google Services JSON file for your Android project\n3. Firebase Service Account credentials JSON file\n4. Release keystore file for signing your Android app\n\n## Setup\n\n### Fastlane Setup\n\nCreate a `Gemfile` in your project root with the following content:\n\n```ruby\nsource \"https://rubygems.org\"\n\ngem \"fastlane\"\ngem \"firebase_app_distribution\"\n```\n\nCreate a `fastlane/Fastfile` with the following content:\n\n```ruby\ndefault_platform(:android)\n\nplatform :android do\n  desc \"Publish Release Artifacts to Firebase App Distribution\"\n  lane :deployReleaseApkOnFirebase do |options|\n    # Generate version\n    generateVersion = generateVersion(\n        platform: \"firebase\",\n        appId: options[:appId],\n        serviceCredsFile: options[:serviceCredsFile]\n    )\n\n    # Generate Release Note\n    releaseNotes = generateFullReleaseNote()\n\n    buildAndSignApp(\n      taskName: \"assembleProd\",\n      buildType: \"Release\",\n      storeFile: options[:storeFile],\n      storePassword: options[:storePassword],\n      keyAlias: options[:keyAlias],\n      keyPassword: options[:keyPassword],\n    )\n\n    firebase_app_distribution(\n      app: options[:appId],\n      android_artifact_type: \"APK\",\n      android_artifact_path: options[:apkFile],\n      service_credentials_file: options[:serviceCredsFile],\n      groups: options[:groups],\n      release_notes: \"#{releaseNotes}\",\n    )\n  end\nend\n```\n\n## Usage\n\nAdd the following workflow to your GitHub Actions:\n\n```yaml\nname: Deploy to Firebase\n\non:\n  push:\n    branches: [ main ]\n  # Or trigger on release\n  release:\n    types: [created]\n\njobs:\n  deploy:\n    runs-on: macos-latest\n    steps:\n      - uses: actions/checkout@v3\n      \n      - name: Deploy to Firebase\n        uses: openMF/kmp-android-firebase-publish-action@v1.0.0\n        with:\n          android_package_name: 'app'  # Your Android module name\n          release_type: 'prod'  # Release type (prod/demo)\n          google_services: ${{ secrets.GOOGLE_SERVICES }}\n          firebase_creds: ${{ secrets.FIREBASE_CREDS }}\n          keystore_file: ${{ secrets.RELEASE_KEYSTORE }}\n          keystore_password: ${{ secrets.KEYSTORE_PASSWORD }}\n          keystore_alias: ${{ secrets.KEYSTORE_ALIAS }}\n          keystore_alias_password: ${{ secrets.KEYSTORE_ALIAS_PASSWORD }}\n          tester_groups: 'qa-team,beta-testers'\n```\n\n## Inputs\n\n| Input                     | Description                                       | Required |\n|---------------------------|---------------------------------------------------|----------|\n| `android_package_name`    | Name of your Android project module (e.g., 'app') | Yes      |\n| `release_type`            | Type of Release eg. `prod` or `demo`              | No       |\n| `keystore_file`           | Base64 encoded release keystore file              | Yes      |\n| `keystore_password`       | Password for the keystore file                    | Yes      |\n| `keystore_alias`          | Alias for the keystore file                       | Yes      |\n| `keystore_alias_password` | Password for the keystore alias                   | Yes      |\n| `google_services`         | Base64 encoded Google services JSON file          | Yes      |\n| `firebase_creds`          | Base64 encoded Firebase credentials JSON file     | Yes      |\n| `tester_groups`           | Comma-separated list of Firebase tester groups    | Yes      |\n\n## Outputs\n`firebase-app` - The path to the generated APK files.\n\n## Setting up Secrets\n\n1. Encode your files to base64:\n```bash\nbase64 -i path/to/release.keystore -o keystore.txt\nbase64 -i path/to/google-services.json -o google-services.txt\nbase64 -i path/to/firebase-credentials.json -o firebase-creds.txt\n```\n\n2. Add the following secrets to your GitHub repository:\n- `GOOGLE_SERVICES`: Content of google-services.txt\n- `FIREBASE_CREDS`: Content of firebase-creds.txt\n- `RELEASE_KEYSTORE`: Content of keystore.txt\n- `KEYSTORE_PASSWORD`: Your keystore password\n- `KEYSTORE_ALIAS`: Your keystore alias\n- `KEYSTORE_ALIAS_PASSWORD`: Your keystore alias password\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fopenmf%2Fkmp-android-firebase-publish-action","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fopenmf%2Fkmp-android-firebase-publish-action","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fopenmf%2Fkmp-android-firebase-publish-action/lists"}