Release #34
Workflow file for this run
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| # This workflow will create a release when a `v*` tag is pushed | |
| # For more information see: https://github.com/actions/create-release | |
| on: | |
| push: | |
| tags: | |
| - 'v*' # Push events to matching v*, i.e. v1.0, v20.15.10 | |
| workflow_dispatch: | |
| name: Release | |
| jobs: | |
| build: | |
| name: Build & Test | |
| runs-on: ubuntu-latest | |
| env: | |
| LD_LIBRARY_PATH: "/usr/lib/x86_64-linux-gnu" | |
| strategy: | |
| matrix: | |
| jdk: [8, 11, 17, 21, 24] | |
| steps: | |
| - uses: actions/checkout@v2 | |
| - name: Cache M2 local repository | |
| uses: actions/cache@v4 | |
| with: | |
| path: ~/.m2/repository | |
| key: m2 | |
| - name: Install dependencies | |
| run: | | |
| sudo apt-get -y update | |
| sudo apt-get -y install libopenblas-dev libarpack2-dev gcc-aarch64-linux-gnu gcc-riscv64-linux-gnu gcc-x86-64-linux-gnu | |
| # Build with JDK 17 | |
| - name: Set up JDK 17 | |
| uses: actions/setup-java@v4 | |
| with: | |
| java-version: 17 | |
| distribution: temurin | |
| - name: Build | |
| run: mvn --batch-mode compile test-compile | |
| # Test with JDK ${{ matrix.jdk }} | |
| - name: Set up JDK ${{ matrix.jdk }} | |
| uses: actions/setup-java@v4 | |
| with: | |
| java-version: ${{ matrix.jdk }} | |
| distribution: temurin | |
| - name: Test | |
| run: mvn --batch-mode --projects blas,lapack,arpack surefire:test | |
| release: | |
| name: Release | |
| runs-on: ubuntu-latest | |
| needs: [build] | |
| # Map step output to job output | |
| outputs: | |
| release_upload_url: ${{ steps.create_release.outputs.upload_url }} | |
| steps: | |
| - uses: actions/checkout@v2 | |
| - name: Cache M2 local repository | |
| uses: actions/cache@v4 | |
| with: | |
| path: ~/.m2/repository | |
| key: m2 | |
| - name: Install dependencies | |
| run: | | |
| sudo apt-get -y update | |
| sudo apt-get -y install gcc-aarch64-linux-gnu gcc-riscv64-linux-gnu gcc-x86-64-linux-gnu | |
| - name: Set up JDK 17 | |
| uses: actions/setup-java@v4 | |
| with: # running setup-java again overwrites the settings.xml | |
| java-version: 17 | |
| distribution: temurin | |
| server-id: ossrh | |
| server-username: MAVEN_USERNAME | |
| server-password: MAVEN_PASSWORD | |
| gpg-private-key: ${{ secrets.GPG_PRIVATE_KEY }} | |
| - name: Publish to Sonatype OSSRH | |
| run: mvn --batch-mode -DskipTests=true deploy | |
| env: | |
| MAVEN_USERNAME: ${{ secrets.OSSRH_USERNAME }} | |
| MAVEN_PASSWORD: ${{ secrets.OSSRH_TOKEN }} | |
| - name: Upload Benchmarks | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: benchmarks | |
| path: benchmarks/target/netlib-benchmarks.jar | |
| if-no-files-found: error | |
| - name: Create Release | |
| id: create_release | |
| uses: actions/create-release@v1 | |
| env: | |
| GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
| with: | |
| tag_name: ${{ github.ref }} | |
| release_name: ${{ github.ref }} | |
| draft: true | |
| benchmark: | |
| name: Run benchmarks | |
| runs-on: [self-hosted, linux, x64] | |
| needs: [release] | |
| strategy: | |
| matrix: | |
| jdk: [8, 11, 17] | |
| implementation: ["java", "native"] | |
| filter: ["dev.ludovic.netlib.benchmarks.blas.l1", "dev.ludovic.netlib.benchmarks.blas.l2", "dev.ludovic.netlib.benchmarks.blas.l3"] | |
| include: | |
| - jdk: 17 | |
| implementation: "java" | |
| filter: "dev.ludovic.netlib.benchmarks.blas.l1" | |
| jvmArgs: "--add-modules=jdk.incubator.vector,jdk.incubator.foreign -Dforeign.restricted=permit" | |
| - jdk: 17 | |
| implementation: "java" | |
| filter: "dev.ludovic.netlib.benchmarks.blas.l2" | |
| jvmArgs: "--add-modules=jdk.incubator.vector,jdk.incubator.foreign -Dforeign.restricted=permit" | |
| - jdk: 17 | |
| implementation: "java" | |
| filter: "dev.ludovic.netlib.benchmarks.blas.l3" | |
| jvmArgs: "--add-modules=jdk.incubator.vector,jdk.incubator.foreign -Dforeign.restricted=permit" | |
| steps: | |
| - name: Set up JDK ${{ matrix.jdk }} | |
| uses: actions/setup-java@v1 | |
| with: | |
| java-version: ${{ matrix.jdk }} | |
| - name: Download Benchmarks | |
| id: download_benchmarks | |
| uses: actions/download-artifact@v2 | |
| with: | |
| name: benchmarks | |
| - name: Run benchmark | |
| run: java -jar "${{steps.download_benchmarks.outputs.download-path}}/netlib-benchmarks.jar" "${{ matrix.filter }}" -p "implementation=${{ matrix.implementation }}" -jvmArgs "${{ matrix.jvmArgs }}" -rf json -rff "jmh-results-jdk${{ matrix.jdk }}-${{ matrix.filter }}-${{ matrix.implementation }}.json" | |
| - name: Upload JMH results | |
| uses: actions/upload-release-asset@v1 | |
| env: | |
| GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
| with: | |
| upload_url: ${{ needs.release.outputs.release_upload_url }} | |
| asset_path: jmh-results-jdk${{ matrix.jdk }}-${{ matrix.filter }}-${{ matrix.implementation }}.json | |
| asset_name: jmh-results-jdk${{ matrix.jdk }}-${{ matrix.filter }}-${{ matrix.implementation }}.json | |
| asset_content_type: application/json |