Skip to content

Github

[ .NET MAUI ]

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

[ Android ]

Workflow & Project Structure

The repository contains the essential files and configuration needed to build and deliver your Android application:

  • Android Project (build.gradle.kts)
    Located at the root of the repository, this file defines the project configuration, dependencies and more config variables.
  • Workflow Files (.github/workflows/)
    GitHub Actions workflows for automated CI/CD are defined here:
  • build-apk.yml: Handles the build and signing process for the Android APK.

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

VARIABLE DESCRIPTION EXAMPLE / VALUE
PACKAGE_NAME Package name of the app appambit-testapp
APK_NAME APK base name (without extension) com_appambit_testapp
SIGNING_KEY_STORE_PATH Path to the keystore file keyname.keystore
SIGNING_KEY_ALIAS Keystore alias CompanyName
SIGNING_KEY_PASSWORD Password for the keystore alias SomePassword123
SIGNING_STORE_PASSWORD Password for the keystore file SomeDifferentPassword123
ENCODED_STRING Base64 encoded keystore <YOUR-BASE64-STRING>

Variables

Put your variables secure using secrets, don't put this variables in plain text

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

SECRET DESCRIPTION
SIGNING_KEY_STORE_PATH Path where your .keystore file is saved
SIGNING_KEY_ALIAS Keystore alias when you created the .keystore
SIGNING_STORE_PASSWORD Password of the alias within the keystore
SIGNING_KEY_PASSWORD Password of your .keystore
SIGNING_KEY_STORE_BASE64 Keystore base64 string to generate .keystore file

Secrets

If you're not sure about having this credentials you can go to generating variables

[ iOS ]

Workflow & Project Structure

The repository contains the essential files and configuration needed to build and deliver your iOS application:

  • iOS Project (*.xcodeproj)
    Located at the root of the repository, this file defines the project configuration, dependencies and more config variables.
  • Workflow Files (.github/workflows/)
    GitHub Actions workflows for automated CI/CD are defined here:
  • build-ipa.yml: Handles the build and signing process for 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

VARIABLE DESCRIPTION EXAMPLE / VALUE
BUNDLE_IDENTIFIER iOS bundle identifier com.AppAmbit.TestApp
IPA_NAME IPA base name (without extension) app_appambit_testapp
CONFIGURATION Build configuration (Debug / Release) Release
SDK Target SDK for build iphoneos
DESTINATION Xcode destination generic/platform=iOS
XCODE_VERSION Version of Xcode to use 16.2
SCHEME Xcode scheme name AppAmbitTestingApp
IOS_INFO_PLIST Path to Info.plist file AppAmbit-Testing-App-Info-plist
ARCHIVE_PATH Path to the generated xcarchive AppAmbitTestingApp.xcarchive

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

SECRET DESCRIPTION
IOS_P12_CERTIFICATE_BASE64 Base64 string of your exported .p12 certificate
IOS_APPLE_P12_PASSWORD Password for your .p12 certificate
IOS_PROVISIONING_PROFILE_BASE64 Base64 string of your provisioning profile
IOS_ADHOC_PROFILE Name of the Ad Hoc provisioning profile
IOS_APPLE_TEAM_ID Your Apple Developer Team ID

Secrets

If you're not sure about having this credentials you can go to generating variables

[ Flutter ]

Workflow & Project Structure

The repository contains the essential files and configuration needed to build and deliver your Flutter application for both Android and iOS:

  • Flutter Project (pubspec.yml)
    Located at the root of the repository, this file defines the project configuration, dependencies, and 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
KEYSTORE_FILE_NAME Keystore file name used for signing the Android build appambit.keystore
ARTIFACT_NAME Artifact or package name for the build output app_appambit_testapp
APK_PATH Full path to the generated APK file appambit_sdk_flutter/appambit_test_app/build/app/outputs/flutter-apk/app-release.apk
ROOT_DIR Root directory of the Flutter SDK project appambit_sdk_flutter
TEST_PROJECT_NAME Test Example folder name appambit_test_app
FLUTTER_VERSION Is you actual version for flutter '3.35.4'

iOS

VARIABLE DESCRIPTION EXAMPLE
IOS_INFO_PLIST Export options property list used for iOS builds ExportOptions.plist
BUNDLE_IDENTIFIER Unique iOS app bundle identifier com.AppAmbit.TestApp
ARTIFACT_NAME Artifact or package name for the generated IPA file appambit-test-app-release-ipa
IPA_NAME Base name of the IPA file (without .ipa extension) app_appambit_testapp
ROOT_DIR Root directory of the Flutter SDK project appambit_sdk_flutter
TEST_PROJECT_NAME Test Example folder name appambit_test_app
FLUTTER_VERSION Is you actual version for flutter '3.35.4'

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
KEYSTORE_BASE64 Base64-encoded contents of the Android keystore file
KEYSTORE_PASSWORD Password of the keystore used for signing
KEY_ALIAS. Alias name of the key inside the keystore
KEY_PASSWORD Password for the key alias inside the keystore

iOS

SECRET DESCRIPTION
IOS_ADHOC_PROFILE Ad hoc provisioning profile identifier used for distribution
IOS_APPLE_P12_PASSWORD Password of the .p12 certificate used for signing
IOS_APPLE_TEAM_ID Apple Developer Team ID associated with the signing account
IOS_KEYCHAIN_PASSWORD Password used to create or unlock the temporary keychain
IOS_P12_CERTIFICATE_BASE64 Base64-encoded .p12 distribution certificate
IOS_PROVISIONING_PROFILE_BASE64. Base64-encoded iOS provisioning profile file

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

  1. In GitHub Actions, after running the workflow, go to the corresponding run.
  2. 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