From 4ff09996ba9ed886dab529a43dd887986cb77404 Mon Sep 17 00:00:00 2001 From: Viktor Karpov Date: Tue, 11 Nov 2025 20:44:13 +0300 Subject: [PATCH] Add workflow and fixes for building universal JAR file and Linux (#19) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Add GitHub Actions workflow for building Android and Desktop * Add workflow for building native deb and jar file * Fix line indentation * Change target formats --------- Co-authored-by: Pablo García Santamaría <69808296+PGSCOM@users.noreply.github.com> Co-authored-by: Mathew Tkachuk --- .github/workflows/build.yml | 101 ++++++++++++++++++++++++++++++++++++ composeApp/build.gradle.kts | 20 ++++++- 2 files changed, 120 insertions(+), 1 deletion(-) create mode 100644 .github/workflows/build.yml diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml new file mode 100644 index 0000000..2656af2 --- /dev/null +++ b/.github/workflows/build.yml @@ -0,0 +1,101 @@ +name: Build + +on: + push: + branches: [ master ] + pull_request: + branches: [ master ] + workflow_dispatch: + +jobs: + build-android: + runs-on: ubuntu-latest + + steps: + - name: Checkout code + uses: actions/checkout@v4 + + - name: Set up JDK 17 + uses: actions/setup-java@v4 + with: + java-version: '17' + distribution: 'temurin' + cache: gradle + + - name: Grant execute permission for gradlew + run: chmod +x gradlew + + - name: Build Android APK + run: ./gradlew :composeApp:assembleRelease + + - name: Upload Android APK + uses: actions/upload-artifact@v4 + with: + name: android-apk + path: composeApp/build/outputs/apk/release/*.apk + retention-days: 30 + + build-desktop-windows: + runs-on: windows-latest + + steps: + - name: Checkout code + uses: actions/checkout@v4 + + - name: Set up JDK 17 + uses: actions/setup-java@v4 + with: + java-version: '17' + distribution: 'temurin' + cache: gradle + + - name: Build Desktop package + run: ./gradlew :composeApp:packageReleaseDistributionForCurrentOS + shell: bash + + - name: Upload Desktop artifacts + uses: actions/upload-artifact@v4 + with: + name: desktop-windows + path: composeApp/build/compose/binaries/main-release/**/* + retention-days: 30 + + build-desktop-linux: + runs-on: ubuntu-latest + + steps: + - name: Checkout code + uses: actions/checkout@v4 + + - name: Set up JDK 17 + uses: actions/setup-java@v4 + with: + java-version: '17' + distribution: 'temurin' + cache: gradle + + - name: Grant execute permission for gradlew + run: chmod +x gradlew + + - name: Build Desktop package + run: ./gradlew :composeApp:packageReleaseDistributionForCurrentOS + shell: bash + + - name: Build JAR package + run: ./gradlew :composeApp:packageUberJarForCurrentOS + shell: bash + + - name: Upload Desktop artifacts + uses: actions/upload-artifact@v4 + with: + name: desktop-linux + path: composeApp/build/compose/binaries/main-release/**/* + retention-days: 30 + + - name: Upload JAR artifacts + uses: actions/upload-artifact@v4 + with: + name: desktop-jar + path: composeApp/build/compose/jars/* + retention-days: 30 + diff --git a/composeApp/build.gradle.kts b/composeApp/build.gradle.kts index 912016f..0ca4067 100644 --- a/composeApp/build.gradle.kts +++ b/composeApp/build.gradle.kts @@ -100,7 +100,7 @@ compose.desktop { } nativeDistributions { - targetFormats(TargetFormat.Dmg, TargetFormat.Msi, TargetFormat.Deb) + targetFormats(TargetFormat.Dmg, TargetFormat.Exe, TargetFormat.AppImage) packageName = "overport" packageVersion = appVersion @@ -120,3 +120,21 @@ compose.desktop { } } } + +tasks.withType { + // Need for valid signature check + exclude( + "META-INF/*.SF", + "META-INF/*.DSA", + "META-INF/*.RSA", + "META-INF/*.EC" + ) + + exclude( + "META-INF/INDEX.LIST", + "META-INF/DEPENDENCIES", + "META-INF/LICENSE*", + "META-INF/NOTICE*" + ) +} +