name: Build Desktop App then create a new release on: release: types: [published] jobs: build: runs-on: ${{ matrix.os }} strategy: matrix: include: - os: macos-13 # runner Intel (x64) arch: x64 jdk_url: "https://corretto.aws/downloads/latest/amazon-corretto-17-x64-macos-jdk.pkg" - os: macos-latest - os: ubuntu-latest - os: windows-latest steps: - name: Checkout source uses: actions/checkout@v4 - name: Set up temurin JDK uses: actions/setup-java@v4 with: distribution: 'temurin' java-version: '21' token: ${{ secrets.GITHUB_TOKEN }} - name: Set up Gradle uses: gradle/gradle-build-action@v2 with: gradle-version: '8.12' # - name: Generate aboutlibraries # working-directory: FloconDesktop # run: ./gradlew composeApp:exportLibraryDefinitions -PaboutLibraries.outputFile=src/commonMain/composeResources/files/aboutlibraries.json - name: Build with Gradle working-directory: FloconDesktop run: ./gradlew packageDistributionForCurrentOS packageUberJarForCurrentOS env: PROJECT_VERSION_NAME: ${{ github.ref_name }} # Upload OS-specific artifacts - name: Upload Linux artifact if: matrix.os == 'ubuntu-latest' uses: actions/upload-artifact@v4 with: name: linux-deb path: FloconDesktop/composeApp/build/compose/binaries/main/deb/*.deb - name: Rename macOS x64 dmg if: matrix.os == 'macos-13' run: | mv FloconDesktop/composeApp/build/compose/binaries/main/dmg/*.dmg FloconDesktop/composeApp/build/compose/binaries/main/dmg/macos-x64.dmg - name: Rename macOS arm64 dmg if: matrix.os == 'macos-latest' run: | mv FloconDesktop/composeApp/build/compose/binaries/main/dmg/*.dmg FloconDesktop/composeApp/build/compose/binaries/main/dmg/macos-arm64.dmg - name: Upload macOS arm64 artifact if: matrix.os == 'macos-latest' uses: actions/upload-artifact@v4 with: name: macos-arm64-dmg path: FloconDesktop/composeApp/build/compose/binaries/main/dmg/*.dmg - name: Upload macOS x64 artifact if: matrix.os == 'macos-13' uses: actions/upload-artifact@v4 with: name: macos-x64-dmg path: FloconDesktop/composeApp/build/compose/binaries/main/dmg/*.dmg - name: Upload Windows artifact if: matrix.os == 'windows-latest' uses: actions/upload-artifact@v4 with: name: windows-msi path: FloconDesktop/composeApp/build/compose/binaries/main/msi/*.msi - name: Upload Linux Release Jar if: matrix.os == 'ubuntu-latest' uses: actions/upload-artifact@v4 with: name: linux-jar path: FloconDesktop/composeApp/build/compose/jars/*.jar - name: Upload macOS arm64 Release Jar if: matrix.os == 'macos-latest' uses: actions/upload-artifact@v4 with: name: macos-arm64-jar path: FloconDesktop/composeApp/build/compose/jars/*.jar - name: Upload macOS x64 Release Jar if: matrix.os == 'macos-13' uses: actions/upload-artifact@v4 with: name: macos-x64-jar path: FloconDesktop/composeApp/build/compose/jars/*.jar - name: Upload Windows Release Jar if: matrix.os == 'windows-latest' uses: actions/upload-artifact@v4 with: name: windows-jar path: FloconDesktop/composeApp/build/compose/jars/*.jar release: needs: build runs-on: ubuntu-latest permissions: contents: write steps: - name: Checkout source uses: actions/checkout@v4 # Download artifacts from all platforms - name: Download Linux artifact uses: actions/download-artifact@v4 with: name: linux-deb - name: Download macOS arm64 artifact uses: actions/download-artifact@v4 with: name: macos-arm64-dmg - name: Download macOS x64 artifact uses: actions/download-artifact@v4 with: name: macos-x64-dmg - name: Download Windows artifact uses: actions/download-artifact@v4 with: name: windows-msi - name: Download Linux jar uses: actions/download-artifact@v4 with: name: linux-jar - name: Download macOS arm64 jar uses: actions/download-artifact@v4 with: name: macos-arm64-jar - name: Download macOS x64 jar uses: actions/download-artifact@v4 with: name: macos-x64-jar - name: Download Windows jar uses: actions/download-artifact@v4 with: name: windows-jar # List downloaded artifacts - name: Check downloaded artifacts run: ls -R # Create GitHub Release - name: Create GitHub Release uses: softprops/action-gh-release@v1 with: generate_release_notes: true files: | *.deb *.dmg *.msi *.jar env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}