# Copyright (c) Microsoft Corporation. All rights reserved. # name: publish-java on: workflow_dispatch: permissions: contents: read jobs: build: name: Build for ${{ matrix.target }} runs-on: ${{ matrix.os }} strategy: matrix: include: - target: x86_64-unknown-linux-gnu os: ubuntu-latest extension: so build_cmd: zigbuild glibc: "2.17" - target: aarch64-unknown-linux-gnu os: ubuntu-latest extension: so build_cmd: zigbuild glibc: "2.17" - target: x86_64-apple-darwin os: macos-latest extension: dylib - target: aarch64-apple-darwin os: macos-latest extension: dylib - target: x86_64-pc-windows-msvc os: windows-latest extension: dll steps: - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 with: fetch-depth: 0 - uses: actions/setup-java@03ad4de0992f5dab5e18fcb136590ce7c4a0ac95 # v5.6.0 with: java-version: 8 distribution: "corretto" - uses: ./.github/actions/toolchains/rust with: targets: ${{ matrix.target }} - if: ${{ matrix.build_cmd == 'zigbuild' }} uses: actions/setup-python@5fda3b95a4ea91299a34e894583c3862153e4b97 # v7.0.0 with: python-version: "3.11" - if: ${{ matrix.build_cmd == 'zigbuild' }} run: pip install cargo-zigbuild - run: cargo fetch --locked - run: cargo fetch --locked --manifest-path bindings/java/Cargo.toml - run: cargo ${{ matrix.build_cmd || 'build' }} --release --frozen --target ${{ matrix.target }}${{ matrix.glibc && format('.{0}', matrix.glibc) || '' }} --manifest-path ./bindings/java/Cargo.toml - run: mkdir -p native/${{ matrix.target }} - run: mv target/${{ matrix.target }}/release/*.${{ matrix.extension }} ./native/${{ matrix.target }}/ - uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1 with: name: native-libraries-${{ matrix.target }} path: native/ release: name: Release runs-on: ubuntu-latest needs: build steps: - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 with: fetch-depth: 0 - uses: actions/setup-java@03ad4de0992f5dab5e18fcb136590ce7c4a0ac95 # v5.6.0 with: java-version: 8 distribution: "corretto" server-id: ossrh server-username: MAVEN_USERNAME server-password: MAVEN_PASSWORD - uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1 with: pattern: native-libraries-* merge-multiple: true path: ./bindings/java/native/ - run: mvn package working-directory: ./bindings/java - uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1 with: name: built-jars path: ./bindings/java/target/regorus-java-*.jar - run: mvn deploy working-directory: ./bindings/java env: MAVEN_USERNAME: ${{ secrets.OSSRH_USERNAME }} MAVEN_PASSWORD: ${{ secrets.OSSRH_TOKEN }}