Skip to content

AutoDev Xiuper compose-v3.0.0-alpha3 #28

AutoDev Xiuper compose-v3.0.0-alpha3

AutoDev Xiuper compose-v3.0.0-alpha3 #28

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
# 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 }}