diff --git a/.github/workflows/maven_adhoc.yml b/.github/workflows/maven_adhoc.yml new file mode 100644 index 000000000..baff28113 --- /dev/null +++ b/.github/workflows/maven_adhoc.yml @@ -0,0 +1,90 @@ +# Licensed to the Apache Software Foundation (ASF) under one or more +# contributor license agreements. See the NOTICE file distributed with +# this work for additional information regarding copyright ownership. +# The ASF licenses this file to You under the Apache License, Version 2.0 +# (the "License"); you may not use this file except in compliance with +# the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +name: Maven adhoc + +on: + # allow direct trigger + workflow_dispatch: + +permissions: + contents: read + +jobs: + build: + + runs-on: ${{ matrix.os }} + continue-on-error: ${{ matrix.experimental }} + strategy: + matrix: + # macos-latest and ubuntu-latest uses OpenSSL 3 which breaks tests + # os: [macos-11, ubuntu-20.04, windows-latest] + os: [macos-11, windows-latest] + # These names are used in conditional statements below. + # java: [ 8, 11, 17, 21 ] + java: [ 8 ] + experimental: [false] + # macos-11 / java21 keeps failing: java is loading libcrypto in an unsafe way + # so change it to experimental to stop failing the entire workflow + # exclude: + # - os: macos-11 + # java: 21 + # include: + # - os: macos-11 + # java: 21 + # experimental: true + fail-fast: false + + steps: + - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 + with: + persist-credentials: false + - name: Set up JDK ${{ matrix.java }} + uses: actions/setup-java@0ab4596768b603586c0de567f2430c30f5b0d2b0 # v3.13.0 + with: + distribution: 'temurin' + java-version: ${{ matrix.java }} + - name: OpenSSL version + run: openssl version -a + - name: Build with Maven + # OPENSSL_HOME is needed for Windows build; not used by other builds so can set unconditionally + # It's not clear how one is supposed to find the correct setting; + # The value below was found by searching for openssl files under C (warning: slow) + # Other possible values are: + # "C:\\Miniconda\\pkgs\\openssl-1.1.1n-h2bbff1b_0\\Library" + # "C:\\ProgramData\\chocolatey\\lib\\mingw\\tools\\install\\mingw64\\opt" + env: + OPENSSL_HOME: "C:\\Miniconda\\Library" + run: mvn --show-version --batch-mode --no-transfer-progress -DtrimStackTrace=false + - name: Run Crypto (JNI) + run: | + mvn --show-version --batch-mode --no-transfer-progress -q exec:java -D"exec.mainClass=org.apache.commons.crypto.Crypto" -D"commons.crypto.debug=true" + - name: Run OpenSslJna (JNA - don't override lib) + run: | + mvn --show-version --batch-mode --no-transfer-progress -q exec:java -D"exec.mainClass=org.apache.commons.crypto.jna.OpenSslJna" -D"commons.crypto.debug=true" + - name: Run OpenSslJna (JNA - macOS from openssl version -a ENGINESDIR) + if: ${{ matrix.os == 'macos-11' }} + run: | + mvn --show-version --batch-mode --no-transfer-progress -q exec:java -D"exec.mainClass=org.apache.commons.crypto.jna.OpenSslJna" -D"jna.library.path=/usr/local/Cellar/openssl@1.1/1.1.1w/lib/engines-1.1" -D"commons.crypto.debug=true" + - name: Run OpenSslJna (JNA - Windows from openssl version -a ENGINESDIR) + if: ${{ matrix.os == 'windows-latest' }} + run: | + mvn --show-version --batch-mode --no-transfer-progress -q exec:java -D"exec.mainClass=org.apache.commons.crypto.jna.OpenSslJna" -D"jna.library.path=C:\Program Files\OpenSSL\lib\engines-1_1" -D"commons.crypto.debug=true" + - name: Check benchmark code compiles + if: ${{ matrix.java == '8' }} + env: + OPENSSL_HOME: "C:\\Miniconda\\Library" + run: | + mvn --show-version --batch-mode --no-transfer-progress clean test-compile -Pbenchmark