Modernize CI #403
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
| # Any changes to .github/workflows/ci.yml will be overwritten. | |
| # Modify .github/workflows/ci.yml.in instead. | |
| name: CI | |
| on: | |
| push: | |
| pull_request: | |
| workflow_dispatch: | |
| env: | |
| version: 0.4.19_git | |
| OPENSSL_VERSION: 4.0.0 | |
| HOMEBREW_NO_AUTO_UPDATE: 1 | |
| jobs: | |
| build: | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| include: | |
| - id: ubuntu-latest | |
| triplet: x64-linux | |
| compiler: gcc | |
| os: ubuntu-latest | |
| generator: Unix Makefiles | |
| - id: ubuntu-24.04 | |
| triplet: x64-linux | |
| compiler: gcc | |
| os: ubuntu-24.04 | |
| generator: Unix Makefiles | |
| - id: ubuntu-22.04 | |
| triplet: x64-linux | |
| compiler: gcc | |
| os: ubuntu-22.04 | |
| generator: Unix Makefiles | |
| - id: macOS-4 | |
| openssl: 'openssl@4' | |
| triplet: x64-osx | |
| compiler: clang | |
| os: macos-26 | |
| generator: Unix Makefiles | |
| - id: macOS-3 | |
| openssl: 'openssl@3' | |
| triplet: x64-osx | |
| compiler: clang | |
| os: macOS-latest | |
| generator: Unix Makefiles | |
| - id: macOS-1.1 | |
| openssl: 'openssl@1.1' | |
| triplet: x64-osx | |
| compiler: clang | |
| os: macOS-latest | |
| generator: Unix Makefiles | |
| runs-on: ${{matrix.os}} | |
| steps: | |
| - uses: actions/checkout@v5 | |
| - name: Install apt dependencies (Linux) | |
| if: runner.os == 'Linux' | |
| run: | | |
| sudo apt-get update | |
| sudo apt-get install -y libssl-dev opensc softhsm2 | |
| - name: Restore cached OpenSSL 4 (ubuntu-latest only) | |
| if: matrix.id == 'ubuntu-latest' | |
| id: cache-openssl4 | |
| uses: actions/cache@v5 | |
| with: | |
| path: ~/openssl-4 | |
| key: ${{ runner.os }}-${{ matrix.id }}-openssl-${{ env.OPENSSL_VERSION }} | |
| - name: Build OpenSSL 4 (ubuntu-latest only) | |
| if: matrix.id == 'ubuntu-latest' && steps.cache-openssl4.outputs.cache-hit != 'true' | |
| run: | | |
| curl -LO https://www.openssl.org/source/openssl-${OPENSSL_VERSION}.tar.gz | |
| tar xf openssl-4.0.0.tar.gz | |
| cd openssl-4.0.0 | |
| ./Configure linux-x86_64 --prefix="$HOME/openssl-4" --openssldir="$HOME/openssl-4" | |
| make -j"$(nproc)" | |
| make install | |
| - name: Set environment variables (ubuntu-latest only) | |
| if: matrix.id == 'ubuntu-latest' | |
| run: | | |
| echo "$HOME/openssl-4/bin" >> $GITHUB_PATH | |
| echo "PKG_CONFIG_PATH=$HOME/openssl-4/lib64/pkgconfig:$HOME/openssl-4/lib/pkgconfig" >> $GITHUB_ENV | |
| echo "LD_LIBRARY_PATH=$HOME/openssl-4/lib64:$HOME/openssl-4/lib${LD_LIBRARY_PATH:+:$LD_LIBRARY_PATH}" >> $GITHUB_ENV | |
| - name: Install brew build dependencies (macOS) | |
| if: runner.os == 'macOS' | |
| run: | | |
| for package in libtool automake; do | |
| if ! brew list --versions "$package" >/dev/null; then | |
| brew install "$package" | |
| fi | |
| done | |
| - name: Install brew test dependencies (macOS) | |
| if: runner.os == 'macOS' && matrix.id != 'macOS-4' | |
| run: | | |
| for package in opensc softhsm; do | |
| if ! brew list --versions "$package" >/dev/null; then | |
| brew install "$package" | |
| fi | |
| done | |
| - name: Install OpenSSL 4 (macOS-4 only) | |
| if: runner.os == 'macOS' && matrix.id == 'macOS-4' | |
| run: | | |
| if brew list --versions openssl@3 >/dev/null; then | |
| brew unlink openssl@3 || true | |
| fi | |
| if ! brew list --versions openssl@4 >/dev/null; then | |
| brew install openssl@4 | |
| fi | |
| - name: Install OpenSSL 3 (macOS-3 only) | |
| if: runner.os == 'macOS' && matrix.id == 'macOS-3' | |
| run: | | |
| if ! brew list --versions openssl@3 >/dev/null; then | |
| brew install openssl@3 | |
| fi | |
| - name: Set environment variables (macOS) | |
| if: runner.os == 'macOS' | |
| run: | | |
| echo "/opt/homebrew/bin" >> $GITHUB_PATH | |
| echo "/opt/homebrew/opt/${{matrix.openssl}}/bin" >> $GITHUB_PATH | |
| echo "PKG_CONFIG_PATH=/opt/homebrew/opt/${{matrix.openssl}}/lib/pkgconfig" >> $GITHUB_ENV | |
| - name: System information | |
| run: | | |
| which pkcs11-tool || true | |
| which softhsm2-util || true | |
| which openssl | |
| openssl version -a | |
| echo "PATH=$PATH" | |
| - name: Bootstrap | |
| run: autoreconf --verbose --install --force | |
| - name: Configure | |
| run: ./configure --enable-strict | |
| - name: Build | |
| run: make | |
| - name: Test | |
| timeout-minutes: 5 | |
| run: make check | |
| - name: Results of tests | |
| run: cat ${{github.workspace}}/tests/test-suite.log || true | |
| windows: | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| include: | |
| - id: windows-x86-vs | |
| triplet: x86-windows | |
| build_for: 'WIN32' | |
| compiler: vs | |
| arch: x86 | |
| os: windows-2022 | |
| generator: Ninja | |
| vcpkg_root: C:/vcpkg | |
| - id: windows-x64-vs | |
| triplet: x64-windows | |
| build_for: 'WIN64' | |
| compiler: vs | |
| arch: x64 | |
| os: windows-2022 | |
| generator: Ninja | |
| vcpkg_root: C:/vcpkg | |
| runs-on: ${{matrix.os}} | |
| steps: | |
| - uses: actions/checkout@v5 | |
| - name: Cache the vcpkg archives | |
| uses: actions/cache@v5 | |
| with: | |
| path: C:/Users/runneradmin/AppData/Local/vcpkg/archives | |
| key: ${{matrix.id}}-${{hashFiles('vcpkg.json')}} | |
| restore-keys: | | |
| ${{matrix.id}}-${{hashFiles('vcpkg.json')}} | |
| ${{matrix.id}}- | |
| - name: Configure Visual Studio | |
| uses: TheMrMilchmann/setup-msvc-dev@v4 | |
| with: | |
| arch: ${{matrix.arch}} | |
| - name: Install OpenSSL with VCPKG | |
| run: | | |
| vcpkg install --triplet=${{matrix.triplet}} openssl[tools] | |
| echo "C:\vcpkg\packages\openssl_${{matrix.triplet}}\tools\openssl" | Out-File -FilePath $env:GITHUB_PATH -Encoding utf8 -Append | |
| - name: System information | |
| run: openssl version -a | |
| - name: Build | |
| run: nmake -f Makefile.mak | |
| BUILD_FOR=${{matrix.build_for}} | |
| OPENSSL_DIR="C:\vcpkg\packages\openssl_${{matrix.triplet}}" | |
| - name: Upload the DLLs | |
| uses: actions/upload-artifact@v5 | |
| with: | |
| name: libp11-${{env.version}}-${{matrix.arch}} | |
| path: ${{github.workspace}}/src/*.dll |