AutoDev Xiuper compose-v3.0.0-alpha3 #28
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" | |
| } | |
| # Build JetBrains IDE Plugin | |
| build-idea-plugin: | |
| name: Build JetBrains Plugin | |
| 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: 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 JetBrains Plugin | |
| working-directory: mpp-idea | |
| run: ../gradlew buildPlugin --no-daemon | |
| - name: Upload JetBrains Plugin | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: jetbrains-plugin | |
| path: mpp-idea/build/distributions/*.zip | |
| - name: Clean build cache to save space | |
| run: | | |
| ./gradlew :mpp-idea:clean | |
| rm -rf ~/.gradle/caches/modules-2/files-2.1 | |
| df -h | |
| # Build VS Code Extension | |
| build-vscode-extension: | |
| name: Build VS Code Extension | |
| 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: Checkout code | |
| uses: actions/checkout@v4 | |
| - name: Set up Node.js | |
| uses: actions/setup-node@v4 | |
| with: | |
| node-version: '20' | |
| - 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-core JS library | |
| run: ./gradlew :mpp-core:jsNodeProductionLibraryDistribution --no-daemon | |
| - name: Install mpp-core dependencies | |
| working-directory: mpp-core/build/dist/js/productionLibrary | |
| run: npm install --ignore-scripts | |
| - name: Install VS Code extension dependencies | |
| working-directory: mpp-vscode | |
| run: npm install | |
| - name: Install webview dependencies | |
| working-directory: mpp-vscode/webview | |
| run: npm install | |
| - name: Build VS Code extension | |
| working-directory: mpp-vscode | |
| run: npm run build | |
| - name: Package VS Code extension | |
| working-directory: mpp-vscode | |
| run: npx vsce package --no-dependencies | |
| - name: Upload VS Code Extension | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: vscode-extension | |
| path: mpp-vscode/*.vsix | |
| - name: Clean build cache to save space | |
| run: | | |
| rm -rf mpp-vscode/node_modules | |
| rm -rf mpp-vscode/webview/node_modules | |
| rm -rf mpp-core/build | |
| df -h | |
| # Create release with all artifacts | |
| create-release: | |
| name: Create Release | |
| needs: [build-server, build-android, build-ios, build-desktop, build-idea-plugin, build-vscode-extension] | |
| 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 -laR artifacts/ | |
| else | |
| echo "No artifacts directory found" | |
| mkdir -p artifacts | |
| fi | |
| - name: Create Release | |
| uses: softprops/action-gh-release@v2 | |
| with: | |
| name: "AutoDev Xiuper ${{ github.ref_name }}" | |
| body: | | |
| ## AutoDev Xiuper - Multiplatform Release | |
| > One Platform. All Phases. Every Device. | |
| This release includes builds for all supported platforms: | |
| ### 🖥️ Server | |
| - `mpp-server-*-all.jar` - Ready to run with `java -jar` | |
| ### 📱 Mobile | |
| - **Android**: Debug APK, Release APK | |
| - **iOS**: iOS App (.ipa for Simulator) | |
| ### 💻 Desktop | |
| - **Linux**: `.deb` package | |
| - **Windows**: `.msi` installer | |
| - **macOS**: `.dmg` image | |
| ### 🔌 IDE Plugins | |
| - **JetBrains**: `.zip` plugin (IntelliJ IDEA, PyCharm, WebStorm, etc.) | |
| - **VS Code**: `.vsix` extension | |
| ### 📦 Installation | |
| **Desktop**: Download the appropriate package for your platform and install. | |
| **JetBrains IDE**: | |
| ``` | |
| Settings → Plugins → ⚙️ → Install Plugin from Disk → Select .zip file | |
| ``` | |
| **VS Code**: | |
| ```bash | |
| code --install-extension autodev-*.vsix | |
| ``` | |
| **CLI**: | |
| ```bash | |
| npm install -g @xiuper/cli | |
| ``` | |
| --- | |
| 📖 Documentation: https://xiuper.com | |
| 🐛 Issues: https://github.com/phodal/auto-dev/issues | |
| files: | | |
| artifacts/**/* | |
| draft: false | |
| prerelease: true | |
| fail_on_unmatched_files: false | |
| env: | |
| GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} |