diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index a4643a6..f704d7a 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -8,7 +8,7 @@ on: workflow_dispatch: jobs: - build: + build-jvm: runs-on: ubuntu-latest steps: @@ -25,9 +25,72 @@ jobs: - name: Build Library run: ./gradlew assembleOutputs - + + - name: Upload binary + uses: actions/upload-artifact@v2 + with: + name: dragapult-jvm-latest + path: dragapult-app/build/distributions/dragapult-app.zip + retention-days: 1 + + build-graal: + name: Artifact for ${{ matrix.os }} + runs-on: ${{ matrix.os }} + strategy: + matrix: + os: [ macos-latest, windows-latest, ubuntu-latest ] + steps: + - uses: actions/checkout@v2 + - uses: graalvm/setup-graalvm@v1 + with: + version: '22.2.0' + java-version: '11' + components: 'native-image' + github-token: ${{ secrets.GITHUB_TOKEN }} + - name: Build with Gradle + uses: gradle/gradle-build-action@0d13054264b0bb894ded474f08ebb30921341cee + with: + arguments: shadowJar + - name: Build Native Image + run: native-image --no-fallback -cp dragapult.app.MainKt -jar dragapult-app/build/libs/dragapult-app.jar dragapult + - name: Upload binary + uses: actions/upload-artifact@v2 + with: + name: dragapult-${{ matrix.os }} + path: dragapult* + retention-days: 1 + + release: + needs: [ build-graal, build-jvm ] + runs-on: ubuntu-latest + steps: + - uses: actions/download-artifact@v3 + with: + name: dragapult-macos-latest + path: macos + - uses: actions/download-artifact@v3 + with: + name: dragapult-ubuntu-latest + path: ubuntu + - uses: actions/download-artifact@v3 + with: + name: dragapult-windows-latest + path: windows + - uses: actions/download-artifact@v3 + with: + name: dragapult-jvm-latest + path: jvm + - name: Rename Files + run: | + mv macos/dragapult macos/dragapult-mac + mv ubuntu/dragapult ubuntu/dragapult-linux + mv windows/dragapult.exe windows/dragapult-windows.exe - name: Release uses: softprops/action-gh-release@v1 if: startsWith(github.ref, 'refs/tags/') with: - files: dragapult-app/build/distributions/dragapult-app.zip + files: | + macos/dragapult-mac + ubuntu/dragapult-linux + windows/dragapult-windows.exe + jvm/dragapult-app.zip diff --git a/build.gradle b/build.gradle index 306fba9..6029ccf 100644 --- a/build.gradle +++ b/build.gradle @@ -7,5 +7,6 @@ buildscript { } } plugins { - id 'org.jetbrains.kotlin.jvm' version '1.6.10' apply false + id 'org.jetbrains.kotlin.jvm' version '1.7.10' apply false + id 'com.github.johnrengelman.shadow' version '7.1.2' apply false } diff --git a/buildSrc/src/main/groovy/has-shadow-jar.gradle b/buildSrc/src/main/groovy/has-shadow-jar.gradle new file mode 100644 index 0000000..ce0c21b --- /dev/null +++ b/buildSrc/src/main/groovy/has-shadow-jar.gradle @@ -0,0 +1,13 @@ +plugins { + id 'com.github.johnrengelman.shadow' +} + +tasks.jar { + enabled = false +} + +tasks.shadowJar { + archiveFileName.set(project.name + ".jar") +} + +artifacts.archives(tasks.shadowJar) \ No newline at end of file diff --git a/buildSrc/src/main/groovy/jvm-application.gradle b/buildSrc/src/main/groovy/jvm-application.gradle index 6be2dc2..d4edfa2 100644 --- a/buildSrc/src/main/groovy/jvm-application.gradle +++ b/buildSrc/src/main/groovy/jvm-application.gradle @@ -1,6 +1,7 @@ plugins { id 'application' id 'jvm-common' + id 'has-shadow-jar' } task assembleDistRename(type: Copy) { diff --git a/buildSrc/src/main/groovy/jvm-common.gradle b/buildSrc/src/main/groovy/jvm-common.gradle index de48d52..cc10b91 100644 --- a/buildSrc/src/main/groovy/jvm-common.gradle +++ b/buildSrc/src/main/groovy/jvm-common.gradle @@ -4,7 +4,6 @@ plugins { } group = 'dragapult' -version = '1.0.0' test { useJUnitPlatform()