mirror of
https://github.com/KRTirtho/spotube.git
synced 2026-08-05 19:59:51 +00:00
308 lines
8.4 KiB
YAML
308 lines
8.4 KiB
YAML
name: Build All Platforms
|
|
|
|
on:
|
|
workflow_dispatch:
|
|
|
|
concurrency:
|
|
group: ${{ github.workflow }}-${{ github.ref }}
|
|
cancel-in-progress: true
|
|
|
|
env:
|
|
COMPOSE_WEBVIEW_REPO: kdroidFilter/ComposeNativeWebview
|
|
COMPOSE_WEBVIEW_COMMIT: 5aeb268a2c37ff4dbfb76924573344a7c4f763ce
|
|
GRADLE_PLUGIN_REPO: team-spotube/gradle-plugin
|
|
|
|
jobs:
|
|
prepare-deps:
|
|
name: Prepare Dependencies
|
|
runs-on: macos-latest
|
|
steps:
|
|
- name: Checkout ComposeNativeWebview
|
|
uses: actions/checkout@v4
|
|
with:
|
|
repository: ${{ env.COMPOSE_WEBVIEW_REPO }}
|
|
ref: ${{ env.COMPOSE_WEBVIEW_COMMIT }}
|
|
path: compose-webview
|
|
|
|
- name: Checkout gradle-plugin
|
|
uses: actions/checkout@v4
|
|
with:
|
|
repository: ${{ env.GRADLE_PLUGIN_REPO }}
|
|
token: ${{ secrets.GH_PAT }}
|
|
path: gradle-plugin
|
|
|
|
- name: Set up JDK 21
|
|
uses: actions/setup-java@v4
|
|
with:
|
|
distribution: temurin
|
|
java-version: 21
|
|
|
|
- name: Set up Android SDK
|
|
uses: android-actions/setup-android@v3
|
|
|
|
- name: Set up Rust
|
|
uses: dtolnay/rust-toolchain@stable
|
|
|
|
- name: Set up Gradle
|
|
uses: gradle/actions/setup-gradle@v4
|
|
|
|
- name: Publish compose-webview to mavenLocal
|
|
working-directory: compose-webview
|
|
run: |
|
|
chmod +x gradlew
|
|
./gradlew publishToMavenLocal
|
|
|
|
- name: Publish gradle-plugin to mavenLocal
|
|
working-directory: gradle-plugin
|
|
run: |
|
|
chmod +x gradlew
|
|
./gradlew publishToMavenLocal
|
|
|
|
- name: Upload compose-webview artifacts
|
|
uses: actions/upload-artifact@v4
|
|
with:
|
|
name: maven-local-composewebview
|
|
path: ~/.m2/repository/io/github/kdroidfilter/
|
|
|
|
- name: Upload gradle-plugin artifacts
|
|
uses: actions/upload-artifact@v4
|
|
with:
|
|
name: maven-local-gradle-plugin
|
|
path: ~/.m2/repository/dev/krtirtho/spotube/
|
|
|
|
build-android:
|
|
name: Android
|
|
needs: prepare-deps
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
|
|
- name: Download compose-webview artifacts
|
|
uses: actions/download-artifact@v4
|
|
with:
|
|
name: maven-local-composewebview
|
|
path: ~/.m2/repository/io/github/kdroidfilter/
|
|
|
|
- name: Download gradle-plugin artifacts
|
|
uses: actions/download-artifact@v4
|
|
with:
|
|
name: maven-local-gradle-plugin
|
|
path: ~/.m2/repository/dev/krtirtho/spotube/
|
|
|
|
- name: Set up JDK 21
|
|
uses: actions/setup-java@v4
|
|
with:
|
|
distribution: temurin
|
|
java-version: 21
|
|
|
|
- name: Set up Gradle
|
|
uses: gradle/actions/setup-gradle@v4
|
|
- name: Assemble Release
|
|
run: ./gradlew :composeApp:assembleRelease
|
|
|
|
- name: Upload APK
|
|
uses: actions/upload-artifact@v4
|
|
with:
|
|
name: android-apk
|
|
path: composeApp/build/outputs/apk/release/*.apk
|
|
|
|
- name: Upload AAB
|
|
uses: actions/upload-artifact@v4
|
|
with:
|
|
name: android-aab
|
|
path: composeApp/build/outputs/bundle/release/*.aab
|
|
|
|
build-linux:
|
|
name: Linux Desktop
|
|
needs: prepare-deps
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
|
|
- name: Download compose-webview artifacts
|
|
uses: actions/download-artifact@v4
|
|
with:
|
|
name: maven-local-composewebview
|
|
path: ~/.m2/repository/io/github/kdroidfilter/
|
|
|
|
- name: Download gradle-plugin artifacts
|
|
uses: actions/download-artifact@v4
|
|
with:
|
|
name: maven-local-gradle-plugin
|
|
path: ~/.m2/repository/dev/krtirtho/spotube/
|
|
|
|
- name: Install packaging tools
|
|
run: |
|
|
sudo apt-get update
|
|
sudo apt-get install -y rpm fuse
|
|
|
|
- name: Set up JDK 21
|
|
uses: actions/setup-java@v4
|
|
with:
|
|
distribution: temurin
|
|
java-version: 21
|
|
|
|
- name: Set up Gradle
|
|
uses: gradle/actions/setup-gradle@v4
|
|
|
|
- name: Package DEB
|
|
run: ./gradlew :composeApp:packageReleaseDeb
|
|
|
|
- name: Package RPM
|
|
run: ./gradlew :composeApp:packageReleaseRpm
|
|
|
|
- name: Package AppImage
|
|
run: ./gradlew :composeApp:packageReleaseAppImage
|
|
|
|
- name: Upload DEB
|
|
uses: actions/upload-artifact@v4
|
|
with:
|
|
name: linux-deb
|
|
path: composeApp/build/compose/binaries/main-release/**/*.deb
|
|
|
|
- name: Upload RPM
|
|
uses: actions/upload-artifact@v4
|
|
with:
|
|
name: linux-rpm
|
|
path: composeApp/build/compose/binaries/main-release/**/*.rpm
|
|
|
|
- name: Upload AppImage
|
|
uses: actions/upload-artifact@v4
|
|
with:
|
|
name: linux-appimage
|
|
path: composeApp/build/compose/binaries/main-release/**/*.AppImage
|
|
|
|
build-windows:
|
|
name: Windows Desktop
|
|
needs: prepare-deps
|
|
runs-on: windows-latest
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
|
|
- name: Download compose-webview artifacts
|
|
uses: actions/download-artifact@v4
|
|
with:
|
|
name: maven-local-composewebview
|
|
path: ~/.m2/repository/io/github/kdroidfilter/
|
|
|
|
- name: Download gradle-plugin artifacts
|
|
uses: actions/download-artifact@v4
|
|
with:
|
|
name: maven-local-gradle-plugin
|
|
path: ~/.m2/repository/dev/krtirtho/spotube/
|
|
|
|
- name: Set up JDK 21
|
|
uses: actions/setup-java@v4
|
|
with:
|
|
distribution: temurin
|
|
java-version: 21
|
|
|
|
- name: Set up Gradle
|
|
uses: gradle/actions/setup-gradle@v4
|
|
|
|
- name: Package MSI
|
|
run: ./gradlew :composeApp:packageReleaseMsi
|
|
|
|
- name: Package EXE
|
|
run: ./gradlew :composeApp:packageReleaseExe
|
|
|
|
- name: Upload MSI
|
|
uses: actions/upload-artifact@v4
|
|
with:
|
|
name: windows-msi
|
|
path: composeApp/build/compose/binaries/main-release/**/*.msi
|
|
|
|
- name: Upload EXE
|
|
uses: actions/upload-artifact@v4
|
|
with:
|
|
name: windows-exe
|
|
path: composeApp/build/compose/binaries/main-release/**/*.exe
|
|
|
|
build-macos:
|
|
name: macOS Desktop
|
|
needs: prepare-deps
|
|
runs-on: macos-latest
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
|
|
- name: Download compose-webview artifacts
|
|
uses: actions/download-artifact@v4
|
|
with:
|
|
name: maven-local-composewebview
|
|
path: ~/.m2/repository/io/github/kdroidfilter/
|
|
|
|
- name: Download gradle-plugin artifacts
|
|
uses: actions/download-artifact@v4
|
|
with:
|
|
name: maven-local-gradle-plugin
|
|
path: ~/.m2/repository/dev/krtirtho/spotube/
|
|
|
|
- name: Set up JDK 21
|
|
uses: actions/setup-java@v4
|
|
with:
|
|
distribution: temurin
|
|
java-version: 21
|
|
|
|
- name: Set up Gradle
|
|
uses: gradle/actions/setup-gradle@v4
|
|
|
|
- name: Package DMG
|
|
run: ./gradlew :composeApp:packageReleaseDmg
|
|
|
|
- name: Upload DMG
|
|
uses: actions/upload-artifact@v4
|
|
with:
|
|
name: macos-dmg
|
|
path: composeApp/build/compose/binaries/main-release/**/*.dmg
|
|
|
|
build-ios:
|
|
name: iOS
|
|
needs: prepare-deps
|
|
runs-on: macos-latest
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
|
|
- name: Download compose-webview artifacts
|
|
uses: actions/download-artifact@v4
|
|
with:
|
|
name: maven-local-composewebview
|
|
path: ~/.m2/repository/io/github/kdroidfilter/
|
|
|
|
- name: Download gradle-plugin artifacts
|
|
uses: actions/download-artifact@v4
|
|
with:
|
|
name: maven-local-gradle-plugin
|
|
path: ~/.m2/repository/dev/krtirtho/spotube/
|
|
|
|
- name: Set up JDK 21
|
|
uses: actions/setup-java@v4
|
|
with:
|
|
distribution: temurin
|
|
java-version: 21
|
|
|
|
- name: Set up Gradle
|
|
uses: gradle/actions/setup-gradle@v4
|
|
|
|
- name: Build Kotlin framework
|
|
run: ./gradlew :composeApp:linkReleaseFrameworkIosArm64
|
|
|
|
- name: Build iOS app
|
|
run: |
|
|
xcodebuild \
|
|
-project iosApp/iosApp.xcodeproj \
|
|
-scheme iosApp \
|
|
-sdk iphoneos \
|
|
-configuration Release \
|
|
-destination 'generic/platform=iOS' \
|
|
CODE_SIGN_IDENTITY="" \
|
|
CODE_SIGNING_REQUIRED=NO \
|
|
CODE_SIGNING_ALLOWED=NO \
|
|
CONFIGURATION_BUILD_DIR="${{ github.workspace }}/build/ios" \
|
|
build
|
|
|
|
- name: Upload .app
|
|
uses: actions/upload-artifact@v4
|
|
with:
|
|
name: ios-app
|
|
path: build/ios/*.app
|