Building a Faster GitHub Action for Firebase App Distribution
How eliminating Docker overhead and adding glob patterns saved minutes per deployment
Every time my GitHub workflow ran, I’d watch it waste 30-60 seconds pulling a Docker image for Firebase App Distribution. Multiply that by dozens of daily deployments, and you’re losing real productivity.
So I built a better solution.
The Problem with Existing Actions
The most popular GitHub Action for Firebase App Distribution works well, but has two pain points I kept running into:
Docker overhead - Every single workflow run pulls a Docker image, adding significant time. This isn’t noticeable for occasional deployments, but when you’re running CI/CD frequently throughout the day, those seconds add up to real friction.
Single file uploads - You have to specify exact file paths, which means if you’re building multiple variants (debug, release, different flavours), you need separate upload steps for each one. It’s tedious and verbose.
A Faster, More Flexible Approach
I created a custom action that addresses both issues. Here’s what changed:
1. Node-Based Execution ⚡
By running directly on Node instead of Docker, we eliminate the image pull step entirely. In my testing across different runner configurations, this consistently saves 30-60 seconds per deployment.
Here’s what the basic usage looks like:
- uses: logickoder/firebase-distribution@v1
with:
appId: ${{ secrets.FIREBASE_APP_ID }}
serviceCredentialsFileContent: ${{ secrets.SERVICE_ACCOUNT }}
file: build/app.apkSimple, fast, no Docker ceremony.
2. Glob Pattern Support 🎯
This is where it gets interesting. Instead of specifying individual files, you can now use glob patterns to upload multiple files at once:
- uses: logickoder/firebase-distribution@v1
with:
appId: ${{ secrets.FIREBASE_APP_ID }}
serviceCredentialsFileContent: ${{ secrets.SERVICE_ACCOUNT }}
file: “build/outputs/**/*.apk” # All APKs in any subdirectoryThis is especially useful for:
Multi-variant Android builds - debug, release, different product flavours all in one step
iOS builds with multiple schemes - upload all your configurations simultaneously
Any scenario where your build process generates multiple artifacts that need distribution
Real-World Impact
Let me give you concrete numbers from my own project. We have an Android app with 4 build variants that all need to go to different tester groups.
Before this action:
Docker pull: ~45 seconds
4 separate upload steps: ~2-3 minutes total
Total time: 3-4 minutes per deployment
After:
No Docker pull
Single upload with glob pattern handles all 4 variants
Total time: ~45 seconds
That’s a 4-5x speedup. When you’re deploying multiple times a day, that difference is significant.
Try It Yourself
The action is open source and available on GitHub:
Repository: https://github.com/logickoder/firebase-distribution
Quick start:
- uses: logickoder/firebase-distribution@v1
with:
appId: ${{ secrets.FIREBASE_APP_ID }}
serviceCredentialsFileContent: ${{ secrets.SERVICE_ACCOUNT }}
file: “path/to/your/app.apk” # or use globs: “**/*.apk”
release_notes: “New build from CI”
groups: “testers” # optionalWhat’s Next
If you’re deploying to Firebase App Distribution and want faster, more flexible workflows, give it a try. The code is open source, so feedback and contributions are always welcome.
I’m curious - what other CI/CD bottlenecks have you solved in your own projects? Hit reply and let me know. I’m always looking for ways to optimise these workflows further.
Building tools like this? Follow for more posts on developer productivity and CI/CD optimisation.

