name: Compile and Release Binaries on: push: tags: - 'v*' workflow_dispatch: jobs: build: strategy: matrix: include: - os: ubuntu-latest platform: linux-x64 - os: macos-latest platform: macos-arm64 runs-on: ${{ matrix.os }} steps: - name: Checkout code uses: actions/checkout@v4 - name: Install dependencies (Linux only) if: matrix.os == 'ubuntu-latest' run: "sudo apt-get update && sudo apt-get install -y libssl-dev" - name: Setup GraalVM uses: graalvm/setup-graalvm@v1 with: java-version: "24" distribution: "graalvm" components: "native-image" github-token: ${{ secrets.GITHUB_TOKEN }} - name: Build JAR run: ./gradlew build - name: Compile native binary run: ./gradlew nativeCompile - name: Install UPX (Linux only) if: matrix.os == 'ubuntu-latest' run: sudo apt-get update && apt-get install -y upx - name: Compress binary with UPX (Linux only) if: matrix.os == 'ubuntu-latest' run: upx --best --lzma build/native/nativeCompile/notevc - name: Rename binary for platform run: mv build/native/nativeCompile/notevc notevc-${{ matrix.platform }} - name: Upload binary as artifact uses: actions/upload-artifact@v4 with: name: notevc-${{ matrix.platform }} path: notevc-${{ matrix.platform }} release: needs: build runs-on: ubuntu-latest permissions: contents: write steps: - name: Download all artifacts uses: actions/download-artifact@v4 with: path: binaries - name: Create release uses: actions/gitea-release-action@v1 with: files: binaries/*/* draft: false prerelease: false env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}