Github
Workflow & Project Structure
The repository contains the essential files and configuration needed to build and deliver your .NET MAUI application for both Android and iOS:
- .NET MAUI Project (
*.csproj
)
Located at the root of the repository, this file defines the project configuration, dependencies, and target platforms. - Workflow Files (
.github/workflows/
)
GitHub Actions workflows for automated CI/CD are defined here: build-android.yml
: Handles the build and signing process for the Android APK.build-ios.yml
: Manages the build and signing of the iOS IPA.
These workflows are automatically triggered by specific repository events, such as:
Pushes to main or feature branches Pull requests targeting tracked branches You can customize the behavior of each workflow by adjusting the predefined environment variables and secrets defined in the repository settings. This allows you to tailor the CI/CD process to your app’s requirements, such as using different signing credentials, build configurations, or deployment targets.
Workflow Variables
Android
VARIABLE | DESCRIPTION | EXAMPLE |
---|---|---|
TYPE_RELEASE |
Release type (alpha , beta , release ) |
alpha |
BUILD_CONFIGURATION |
Build Configuration (Debug , Release ) |
Release |
BUILD_FRAMEWORK |
Target Framework for Android | net8.0-android |
APK_NAME |
APK base name (without extension) | com_appambit_testapp |
PROJECT_DIR |
MAUI Project Route | ./AppAmbitTestingApp |
KEYSTORE_ASC |
Name of the GPG encrypted keystore file | appambit.keystore.asc |
KEYSTORE_FILE |
File generated by decrypting the previous one | appambit.keystore |
iOS
VARIABLE | DESCRIPTION | EXAMPLE |
---|---|---|
TYPE_RELEASE |
Release type (alpha , beta , release ) |
alpha |
PROJECT_PATH |
Relative path to your iOS project's .csproj file |
AppMauiTestApp/AppMauiTestApp.csproj |
IPA_NAME |
Base name of the IPA file (without .ipa extension) |
ipa_name_ios |
Repository Secrets
These secrets are configured on GitHub:
- Go to the repository on GitHub
- Go to Settings > Secrets > Actions
- Click New repository secret
Secrets and variables
Android
SECRET | DESCRIPTION |
---|---|
ANDROID_KEYSTORE_FILE | Full contents of the encrypted .asc file (copied as plain text) |
ANDROID_KEYSTORE_PASSWORD | Keystore password |
ANDROID_KEYSTORE_PASSWORD_ALIAS | Password of the alias within the keystore |
ANDROID_KEYSTORE_PASSWORD_GPG | Password used to decrypt the .asc file |
iOS
SECRET | DESCRIPTION |
---|---|
IOS_APPLE_P12_PASSWORD | Password of the .p12 certificate used for signing |
IOS_P12_CERTIFICATE_BASE64 | Base64-encoded .p12 distribution certificate |
IOS_PROVISIONING_PROFILE_BASE64 | Provisioning profile in Base64 format |
Secrets
If you're not sure about having this credentials you can go to generating variables
Running the workflow for the first times
- Verify that the workflow file exists in the repository and is committed to the default branch (e.g., develop or main).
- Open GitHub repository and go to: -> Actions tab.
- Select the workflow named Build Apk or Build IPA.
- Click the
Run workflow
button to run it manually for the first time. - After this, each run will generate an artifact with the signed APK or IPA and you can download it from summary.
Where to find the generated APK or IPA
- In GitHub Actions, after running the workflow, go to the corresponding run.
- In the Artifacts section, download the APK or IPA.
Delivering Builds with Push to AppAmbit
Once your CI/CD pipeline is configured, you’re ready to deliver builds to testers or users. Next Step: Push to AppAmbit to distribute your app directly from your CI pipeline.
Once your build setup is complete and you've pushed to AppAmbit, you can view and manage your releases directly from the dashboard.
AppAmbit website Dashboard > Releases tab