name: Release on: push: tags: - 'v*' workflow_dispatch: inputs: version: description: 'Version to release (e.g., 1.0.0)' required: true type: string jobs: build: name: Build ${{ matrix.platform }} strategy: fail-fast: false matrix: include: - os: ubuntu-latest platform: linux-x64 - os: macos-15-intel platform: macos-x64 - os: macos-latest platform: macos-arm64 runs-on: ${{ matrix.os }} steps: - name: Checkout code uses: actions/checkout@v4 - name: Setup GraalVM uses: graalvm/setup-graalvm@v1 with: java-version: '21' distribution: 'graalvm' github-token: ${{ secrets.GITHUB_TOKEN }} - name: Setup Gradle uses: gradle/actions/setup-gradle@v3 - name: Install native build tools (Linux) if: runner.os == 'Linux' run: | sudo apt-get update sudo apt-get install -y build-essential zlib1g-dev - name: Build native binary run: gradle clean nativeCompile --info - name: Package binary run: | mkdir -p dist cp build/native/nativeCompile/notevc dist/ cd dist tar -czf notevc-${{ matrix.platform }}.tar.gz notevc if [[ "${{ runner.os }}" == "Linux" ]]; then sha256sum notevc-${{ matrix.platform }}.tar.gz > notevc-${{ matrix.platform }}.tar.gz.sha256 else shasum -a 256 notevc-${{ matrix.platform }}.tar.gz > notevc-${{ matrix.platform }}.tar.gz.sha256 fi - name: Upload build artifacts uses: actions/upload-artifact@v4 with: name: notevc-${{ matrix.platform }} path: | dist/notevc-${{ matrix.platform }}.tar.gz dist/notevc-${{ matrix.platform }}.tar.gz.sha256