Skip to content

Commit

Permalink
Added multi-platform-build-and-publish.yml Workflow
Browse files Browse the repository at this point in the history
  • Loading branch information
niyajali authored Dec 7, 2024
1 parent 98e3948 commit 71e233d
Showing 1 changed file with 129 additions and 0 deletions.
129 changes: 129 additions & 0 deletions .github/workflows/multi-platform-build-and-publish.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,129 @@
# GitHub Actions Workflow for Kotlin Multi-Platform Application Deployment
#
# OVERVIEW:
# This workflow supports building and publishing applications across multiple platforms:
# - Android (APK/AAB)
# - iOS (IPA)
# - Desktop (EXE, MSI, DMG, DEB)
# - Web (GitHub Pages)
#
# PREREQUISITES:
# Ensure your project is configured with:
# - Gradle build system
# - Kotlin Multiplatform Project with Android, iOS, Desktop, and Web modules
# - Fastlane for deployment automation
# - Separate modules/package names for each platform
#
# REQUIRED SECRETS:
# Configure the following secrets in GitHub repository settings:
# - ORIGINAL_KEYSTORE_FILE: Base64 encoded Android release keystore
# - ORIGINAL_KEYSTORE_FILE_PASSWORD: Keystore password
# - ORIGINAL_KEYSTORE_ALIAS: Keystore alias
# - ORIGINAL_KEYSTORE_ALIAS_PASSWORD: Keystore alias password

# - UPLOAD_KEYSTORE_FILE: Base64 encoded Android release keystore
# - UPLOAD_KEYSTORE_FILE_PASSWORD: Keystore password
# - UPLOAD_KEYSTORE_ALIAS: Keystore alias
# - UPLOAD_KEYSTORE_ALIAS_PASSWORD: Keystore alias password

# - GOOGLESERVICES: Google Services configuration JSON
# - PLAYSTORECREDS: Play Store service account credentials
# - FIREBASECREDS: Firebase distribution credentials

# - NOTARIZATION_APPLE_ID: Apple ID for macOS app notarization
# - NOTARIZATION_PASSWORD: Notarization password
# - NOTARIZATION_TEAM_ID: Apple developer team ID

# WORKFLOW INPUTS:
# - release_type: 'internal' (default) or 'beta'
# - target_branch: Branch to use for release (default: 'dev')
# - android_package_name: Name of Android module
# - ios_package_name: Name of iOS module
# - desktop_package_name: Name of desktop module
# - web_package_name: Name of web module
# - publish_android: Enable/disable Android Play Store publishing
# - build_ios: Enable/disable iOS build
# - publish_ios: Enable/disable iOS App Store publishing
# - publish_desktop: Enable/disable desktop app publishing
# - publish_web: Enable/disable web app deployment (default: true)

# USAGE:
# 1. Ensure all required secrets are configured
# 2. Customize package names in workflow inputs
# 3. Toggle platform-specific publishing flags
# 4. Trigger workflow manually or via GitHub Actions UI

# https://github.com/openMF/mifos-mobile-github-actions/blob/main/.github/workflows/multi-platform-build-and-publish.yaml

# ##############################################################################
# DON'T EDIT THIS FILE UNLESS NECESSARY #
# ##############################################################################
name: Multi-Platform Build and Publish

on:
workflow_dispatch:
inputs:
release_type:
type: choice
options:
- internal
- beta
default: internal
description: Release Type

target_branch:
type: string
default: 'dev'
description: 'Target branch for release'

publish_android:
type: boolean
default: false
description: Publish Android App On Play Store

publish_ios:
type: boolean
default: false
description: Publish iOS App On App Store

publish_desktop:
type: boolean
default: false
description: Publish Desktop Apps On App Store

publish_web:
type: boolean
default: true
description: Publish Web App

build_ios:
type: boolean
default: false
description: Build iOS App

permissions:
contents: write
id-token: write
pages: write

concurrency:
group: "reusable"
cancel-in-progress: false

jobs:
multi_platform_build_and_publish:
name: Multi-Platform Build and Publish
uses: openMF/mifos-mobile-github-actions/.github/workflows/multi-platform-build-and-publish.yaml@main
secrets: inherit
with:
release_type: ${{ inputs.release_type }}
target_branch: ${{ inputs.target_branch }}
android_package_name: 'mifospay-android' # <-- Change this to your android package name
ios_package_name: 'mifospay-ios' # <-- Change this to your ios package name
desktop_package_name: 'mifospay-desktop' # <-- Change this to your desktop package name
web_package_name: 'mifospay-web' # <-- Change this to your web package name
publish_android: ${{ inputs.publish_android }}
build_ios: ${{ inputs.build_ios }}
publish_ios: ${{ inputs.publish_ios }}
publish_desktop: ${{ inputs.publish_desktop }}
publish_web: ${{ inputs.publish_web }}

0 comments on commit 71e233d

Please sign in to comment.