A GitHub Action that deploys React Native updates to AppZung CodePush for over-the-air (OTA) updates.
This action installs the AppZung CLI and uses it to deploy your React Native update to AppZung CodePush. This way, your new features or bug fixes will become available to your users much earlier than if you were going through the app store reviews, and development iterations are much faster.
Sign up first at https://appzung.com
- 🚀 Fast over-the-air updates for React Native apps
- 🔒 Secure deployment with API key authentication
- 📦 Support for code signing with private keys
- 🎯 Targeted rollouts with percentage-based distribution
- 🔄 Mandatory and optional update controls
- 📝 Automatic release descriptions from git commits
- 🎨 Flexible configuration with extra flags support
name: Deploy to AppZung CodePush
on:
workflow_dispatch:
push:
branches:
- main
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: '22'
- name: Install dependencies
run: npm install # or yarn / bun...
- name: Deploy iOS to AppZung CodePush
uses: AppZung/[email protected]
with:
api-key: ${{ secrets.APPZUNG_API_KEY }}
release-channel: 'staging/c95d7950-228c-4f47-8abb-4e275050ca8e'
- name: Deploy Android to AppZung CodePush
uses: AppZung/[email protected]
with:
api-key: ${{ secrets.APPZUNG_API_KEY }}
release-channel: 'staging/4ffe006a-567e-491b-b3e4-2830087ff980'| Input | Description | Required | Default |
|---|---|---|---|
api-key |
AppZung API key for authentication | Yes | - |
release-channel |
The release channel ID to deploy to (e.g., myChannel/c95d7950-228c-4f47-8abb-4e275050ca8e) |
Yes | - |
mandatory |
Specifies whether this release should be considered mandatory | No | false |
disabled |
Specifies whether this release should be disabled (not immediately available) | No | false |
rollout |
Percentage of users this release should be available to (e.g., 95 for 95%) |
No | '' |
target-binary-version |
Semver version specifying the binary app version this release is compatible with | No | '' |
private-key |
Private key for code signing. Can be either a file path or the actual private key content | No | '' |
description-from-git |
Use the current git commit message as the release description | No | false |
extra-flags |
Additional command line flags (e.g., --disable-duplicate-release-error --use-hermes) |
No | '' |
working-directory |
Directory to run the deploy command from (useful for monorepos) | No | . |
- Go to your repository settings
- Navigate to Secrets and variables → Actions
- Click New repository secret
- Add your AppZung API key:
- Name:
APPZUNG_API_KEY - Value: Your API key from AppZung dashboard
- Name:
- Login in the AppZung CLI
- Run
appzung release-channels list
To use code signing with your releases:
- Generate a private/public key pair
- Store the private key content as a GitHub secret (e.g.,
APPZUNG_PRIVATE_KEY) - Use the public key in your React Native app (see doc)
- Pass the private key content:
with:
private-key: ${{ secrets.APPZUNG_PRIVATE_KEY }}- Verify your API key is correct and has proper permissions
- Check that the secret is properly configured in GitHub
- Ensure the release channel ID includes at least a UUID
- Verify the format:
channelName/uuid(channelName helps with readability)
- Make sure Node.js is set up before running this action
- Ensure all dependencies are installed
- Check that your working directory is correct for monorepos
- Node.js (recommended: v18 or later)
- A React Native project
- An AppZung account and API key
- actions/checkout - Check out your repository
- actions/setup-node - Set up Node.js environment
We welcome issues and pull requests! Please visit our GitHub repository to contribute.
This project is licensed under the MIT License - see the LICENSE file for details.