Skip to content

Overview

Configure your CI/CD pipeline to automatically build your .NET MAUI app after each commit. We support GitHub Actions, Bitbucket Pipelines, and Azure DevOps — with step-by-step guides for each.

Generating the secrets values for workflows

iOS

To generate the values for the secrets required in the iOS workflow, you will need to access your Apple Developer account:

  • Go to https://developer.apple.com/account
  • Under Certificates, Identifiers & Profiles, you can:
  • Export a valid distribution certificate as a .p12 file
  • Download the appropriate provisioning profile (.mobileprovision file) Once you have these files, follow the instructions below to convert and store them in GitHub Secrets. This section outlines how to generate the necessary values for repository secrets and variables, organized by platform.

  • IOS_PROVISIONING_PROFILE_BASE64

Required: A valid provisioning profile (.mobileprovision file)

base64 -i provision.mobileprovision > provision_base64.txt

cat provision_base64.txt

Copy the complete output and paste it into the IOS_PROVISIONING_PROFILE_BASE64 repository secret or variable.

  1. IOS_P12_CERTIFICATE_BASE64

Required: A valid .p12 distribution certificate

base64 -i FileCertificate.p12 -o certificate_base64.txt

cat certificate_base64.txt

Copy the entire output and paste it into the IOS_P12_CERTIFICATE_BASE64 repository secret or variable.

  1. IOS_APPLE_P12_PASSWORD

Required: Password used when exporting the .p12 certificate from Keychain Access. Store this password in the secret or repository variable called IOS_APPLE_P12_PASSWORD

Android

  1. Generate the Keystore File from Android Studio
  2. Open Android Studio and go to: Build > Generate Signed Bundle / APK
  3. Select APK and click Next.
  4. On the “Key store path” screen, click “Create new...”.
  5. Fill in the form with the following:
  6. Key store path: Choose where to save the file (e.g., testapp.keystore)
  7. Password: ANDROID_KEYSTORE_PASSWORD
  8. Alias: Internal key name (e.g., my-key-alias)
  9. Key password: ANDROID_KEYSTORE_PASSWORD_ALIAS
  10. Validity (years): Usually 25 or more
  11. Other fields: Fill in your personal or company info (used as metadata)
  12. Click OK to generate the .keystore file. Then follow the GPG encryption instructions (as explained in the Android documentation) to convert it to .asc and create these secrets:
  13. ANDROID_KEYSTORE_FILE
  14. ANDROID_KEYSTORE_PASSWORD
  15. ANDROID_KEYSTORE_PASSWORD_ALIAS
  16. ANDROID_KEYSTORE_PASSWORD_GPG

Note

You must have GPG (GnuPG) installed on your system. If the gpg command is not recognized, install it from gpg page.

Creating keystore file from the console

  • To generate a keystore file, you need to have the keytool utility installed.
  • This tool is typically included with the Android Studio Command Line Tools or the Java Development Kit (JDK).
  • Change my-release-key to the name you want and also the alias_name (keep both very safe since they are your encrypted keys)
  • keytool -genkey -v -keystore my-release-key.keystore -alias alias_name -keyalg RSA -keysize 2048 -validity 10000


Ready!

Now that you have your credentials you can continue with the configuration of the different workflows