MPP Release #18
Workflow file for this run
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| # 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 | |
| # Only run for compose-* releases or manual dispatch | |
| if: startsWith(github.ref, 'refs/tags/compose-') || github.event_name == 'workflow_dispatch' | |
| 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: 'adopt' | |
| - 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-server fat JAR | |
| run: ./gradlew :mpp-server:fatJar --no-daemon | |
| - name: Upload Server JAR | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: server-jar | |
| path: mpp-server/build/libs/*-all.jar | |
| - name: Clean build cache to save space (Linux only) | |
| run: | | |
| ./gradlew :mpp-server:clean | |
| rm -rf ~/.gradle/caches/modules-2/files-2.1 | |
| df -h | |
| # Build Android APK | |
| build-android: | |
| name: Build Android APK | |
| runs-on: ubuntu-latest | |
| # Only run for compose-* releases or manual dispatch | |
| if: startsWith(github.ref, 'refs/tags/compose-') || github.event_name == 'workflow_dispatch' | |
| 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: 'adopt' | |
| - 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 Android Debug APK | |
| run: ./gradlew :mpp-ui:assembleDebug --no-daemon | |
| - name: Build Android Release APK | |
| run: ./gradlew :mpp-ui:assembleRelease --no-daemon | |
| - 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 | |
| - name: Clean build cache to save space (Linux only) | |
| run: | | |
| ./gradlew :mpp-ui:clean | |
| rm -rf ~/.gradle/caches/modules-2/files-2.1 | |
| rm -rf ~/.gradle/caches/transforms-* | |
| df -h | |
| # Build iOS App | |
| build-ios: | |
| name: Build iOS App | |
| runs-on: macos-latest | |
| continue-on-error: true | |
| # Only run for compose-* releases or manual dispatch | |
| if: startsWith(github.ref, 'refs/tags/compose-') || github.event_name == 'workflow_dispatch' | |
| permissions: | |
| contents: write | |
| pull-requests: write | |
| steps: | |
| - name: Checkout code | |
| uses: actions/checkout@v4 | |
| - name: Set up JDK 17 | |
| uses: actions/setup-java@v4 | |
| with: | |
| java-version: '17' | |
| distribution: 'adopt' | |
| - 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 Kotlin Frameworks for iOS | |
| run: | | |
| ./gradlew :mpp-core:linkDebugFrameworkIosSimulatorArm64 --no-daemon | |
| ./gradlew :mpp-ui:linkDebugFrameworkIosSimulatorArm64 --no-daemon | |
| - name: Install CocoaPods | |
| run: sudo gem install cocoapods | |
| - name: Install CocoaPods dependencies | |
| working-directory: mpp-ios | |
| run: pod install | |
| - name: Build iOS App (Simulator) | |
| working-directory: mpp-ios | |
| run: | | |
| xcodebuild -workspace AutoDevApp.xcworkspace \ | |
| -scheme AutoDevApp \ | |
| -configuration Release \ | |
| -sdk iphonesimulator \ | |
| -destination 'platform=iOS Simulator,name=iPhone 15 Pro' \ | |
| -archivePath $PWD/build/AutoDevApp.xcarchive \ | |
| archive | |
| - name: Export IPA | |
| working-directory: mpp-ios | |
| run: | | |
| # Create export options plist | |
| cat > ExportOptions.plist << EOF | |
| <?xml version="1.0" encoding="UTF-8"?> | |
| <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> | |
| <plist version="1.0"> | |
| <dict> | |
| <key>method</key> | |
| <string>development</string> | |
| <key>destination</key> | |
| <string>export</string> | |
| </dict> | |
| </plist> | |
| EOF | |
| xcodebuild -exportArchive \ | |
| -archivePath $PWD/build/AutoDevApp.xcarchive \ | |
| -exportPath $PWD/build/ipa \ | |
| -exportOptionsPlist ExportOptions.plist | |
| - name: Upload iOS App | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: ios-app | |
| path: mpp-ios/build/ipa/*.ipa | |
| - name: Clean build cache | |
| run: | | |
| ./gradlew :mpp-core:clean :mpp-ui:clean | |
| rm -rf ~/.gradle/caches/modules-2/files-2.1 | |
| rm -rf mpp-ios/build | |
| df -h | |
| # Build Desktop packages for multiple platforms | |
| build-desktop: | |
| name: Build Desktop (${{ matrix.os }}) | |
| runs-on: ${{ matrix.os }} | |
| # Only run for compose-* releases or manual dispatch | |
| if: startsWith(github.ref, 'refs/tags/compose-') || github.event_name == 'workflow_dispatch' | |
| 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: 'adopt' | |
| - 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: Build Desktop package | |
| run: ./gradlew :mpp-ui:${{ matrix.task }} --no-daemon | |
| - name: Upload Desktop package | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: ${{ matrix.artifact }} | |
| path: ${{ matrix.path }} | |
| - name: Clean build cache to save space (Unix) | |
| if: runner.os != 'Windows' | |
| run: | | |
| ./gradlew :mpp-ui:clean | |
| rm -rf ~/.gradle/caches/modules-2/files-2.1 | |
| df -h | |
| - name: Clean build cache to save space (Windows) | |
| if: runner.os == 'Windows' | |
| shell: pwsh | |
| run: | | |
| ./gradlew :mpp-ui:clean | |
| if (Test-Path "$env:USERPROFILE\.gradle\caches\modules-2\files-2.1") { | |
| Remove-Item -Recurse -Force "$env:USERPROFILE\.gradle\caches\modules-2\files-2.1" | |
| } | |
| # Create release with all artifacts | |
| create-release: | |
| name: Create Release | |
| needs: [build-server, build-android, build-ios, build-desktop] | |
| runs-on: ubuntu-latest | |
| permissions: | |
| contents: write | |
| pull-requests: write | |
| # Only run for compose-* tags or manual dispatch | |
| if: startsWith(github.ref, 'refs/tags/compose-') || github.event_name == 'workflow_dispatch' | |
| steps: | |
| - name: Checkout code | |
| uses: actions/checkout@v4 | |
| - name: Download all artifacts | |
| uses: actions/download-artifact@v4 | |
| with: | |
| path: artifacts | |
| continue-on-error: true | |
| - name: Display structure of downloaded files | |
| run: | | |
| if [ -d "artifacts" ]; then | |
| ls -la artifacts/ | |
| else | |
| echo "No artifacts directory found" | |
| mkdir -p artifacts | |
| fi | |
| - 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 | |
| ### iOS | |
| - iOS App (.ipa for iOS Simulator) | |
| ### 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 | |
| fail_on_unmatched_files: false | |
| env: | |
| GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} |