Skip to content

MPP Release

MPP Release #6

Workflow file for this run

# GitHub Actions Workflow for testing mpp-ui releases
# Builds Android APK, Desktop packages for multiple platforms, and mpp-server JAR
# Triggered by tags starting with 'compose-'
name: MPP Release
on:
release:
types: [prereleased, released]
workflow_dispatch:
inputs:
version:
description: 'Version to build'
required: true
default: '1.0.0-test'
jobs:
# Build mpp-server JAR
build-server:
name: Build Server JAR
runs-on: ubuntu-latest
permissions:
contents: write
pull-requests: write
steps:
- name: Free Disk Space (Ubuntu)
uses: jlumbroso/free-disk-space@main
with:
# Remove large packages to free ~14GB
tool-cache: false
android: true
dotnet: true
haskell: true
large-packages: true
docker-images: true
swap-storage: true
- name: Checkout code
uses: actions/checkout@v4
- name: Set up JDK 17
uses: actions/setup-java@v4
with:
java-version: '17'
distribution: 'temurin'
- name: Setup Gradle
uses: gradle/actions/setup-gradle@v4
with:
cache-disabled: true
- name: Grant execute permission for gradlew
run: chmod +x gradlew
- name: Build mpp-core dependency
run: ./gradlew :mpp-core:assemble --no-daemon
- name: Build mpp-server fat JAR
run: ./gradlew :mpp-server:fatJar --no-daemon
- name: Clean build cache to save space
run: |
./gradlew :mpp-server:clean
rm -rf ~/.gradle/caches/modules-2/files-2.1
df -h
- name: Upload Server JAR
uses: actions/upload-artifact@v4
with:
name: server-jar
path: mpp-server/build/libs/*-all.jar
# Build Android APK
build-android:
name: Build Android APK
runs-on: ubuntu-latest
permissions:
contents: write
pull-requests: write
steps:
- name: Free Disk Space (Ubuntu)
uses: jlumbroso/free-disk-space@main
with:
tool-cache: false
android: false # Keep Android SDK as we need it
dotnet: true
haskell: true
large-packages: true
docker-images: true
swap-storage: true
- name: Checkout code
uses: actions/checkout@v4
- name: Set up JDK 17
uses: actions/setup-java@v4
with:
java-version: '17'
distribution: 'temurin'
- name: Setup Gradle
uses: gradle/actions/setup-gradle@v4
with:
cache-disabled: true
- name: Grant execute permission for gradlew
run: chmod +x gradlew
- name: Install pnpm
run: npm install -g [email protected]
working-directory: mpp-ui
- name: Install dependencies
run: pnpm install
working-directory: mpp-ui
- name: Fix yarn lock issues
run: ./gradlew kotlinUpgradeYarnLock --no-daemon || echo "Yarn lock upgrade failed, continuing..."
- name: Build mpp-core dependency
run: ./gradlew :mpp-core:assemble --no-daemon
- name: Build Android Debug APK
run: ./gradlew :mpp-ui:assembleDebug --no-daemon
- name: Build Android Release APK
run: ./gradlew :mpp-ui:assembleRelease --no-daemon
- name: Clean build cache to save space
run: |
./gradlew :mpp-ui:clean
rm -rf ~/.gradle/caches/modules-2/files-2.1
rm -rf ~/.gradle/caches/transforms-*
df -h
- name: Upload Android APKs
uses: actions/upload-artifact@v4
with:
name: android-apks
path: |
mpp-ui/build/outputs/apk/debug/*.apk
mpp-ui/build/outputs/apk/release/*.apk
# Build Desktop packages for multiple platforms
build-desktop:
name: Build Desktop (${{ matrix.os }})
runs-on: ${{ matrix.os }}
permissions:
contents: write
pull-requests: write
strategy:
matrix:
os: [ubuntu-latest, windows-latest, macos-latest]
include:
- os: ubuntu-latest
task: packageDeb
artifact: linux-deb
path: mpp-ui/build/compose/binaries/main/deb/*.deb
- os: windows-latest
task: packageMsi
artifact: windows-msi
path: mpp-ui/build/compose/binaries/main/msi/*.msi
- os: macos-latest
task: packageDmg
artifact: macos-dmg
path: mpp-ui/build/compose/binaries/main/dmg/*.dmg
steps:
- name: Free Disk Space (Ubuntu)
if: runner.os == 'Linux'
uses: jlumbroso/free-disk-space@main
with:
tool-cache: false
android: true
dotnet: true
haskell: true
large-packages: true
docker-images: true
swap-storage: true
- name: Checkout code
uses: actions/checkout@v4
- name: Set up JDK 17
uses: actions/setup-java@v4
with:
java-version: '17'
distribution: 'temurin'
- name: Setup Gradle
uses: gradle/actions/setup-gradle@v4
with:
cache-disabled: true
- name: Grant execute permission for gradlew (Unix)
if: runner.os != 'Windows'
run: chmod +x gradlew
- name: Fix yarn lock issues
run: ./gradlew kotlinUpgradeYarnLock --no-daemon || echo "Yarn lock upgrade failed, continuing..."
- name: Build mpp-core dependency
run: ./gradlew :mpp-core:assemble --no-daemon
- name: Build Desktop package
run: ./gradlew :mpp-ui:${{ matrix.task }} --no-daemon
- name: Clean build cache to save space
run: |
./gradlew :mpp-ui:clean
rm -rf ~/.gradle/caches/modules-2/files-2.1
df -h
- name: Upload Desktop package
uses: actions/upload-artifact@v4
with:
name: ${{ matrix.artifact }}
path: ${{ matrix.path }}
# Create release with all artifacts
create-release:
name: Create Release
needs: [build-server, build-android, build-desktop]
runs-on: ubuntu-latest
permissions:
contents: write
pull-requests: write
# Only run for compose-* tags to avoid conflicts with main release workflow
if: startsWith(github.ref, 'refs/tags/compose-')
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Download all artifacts
uses: actions/download-artifact@v4
with:
path: artifacts
- name: Display structure of downloaded files
run: ls -la artifacts/
- name: Create Release
uses: softprops/action-gh-release@v2
with:
name: "Compose Release ${{ github.ref_name }}"
body: |
## AutoDev Compose Multiplatform Release Test
This is a test release for the mpp modules containing:
### Server
- mpp-server fat JAR (ready to run with `java -jar mpp-server-*-all.jar`)
### Android
- Debug APK
- Release APK
### Desktop
- Linux (.deb package)
- Windows (.msi installer)
- macOS (.dmg image)
**Note**: This is a test release. Please use with caution.
files: |
artifacts/**/*
draft: false
prerelease: true
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}