| name: ci |
| |
| on: |
| push: |
| branches: [ main ] |
| pull_request: |
| branches: [ main ] |
| workflow_dispatch: |
| |
| jobs: |
| test: |
| name: OTP ${{matrix.otp}} / rebar3 ${{matrix.rebar3}} / OS ${{matrix.os}} |
| strategy: |
| matrix: |
| os: ['ubuntu-22.04'] |
| otp: ['26.1', '25.3', '24.3'] |
| rebar3: ['3.22.1'] |
| include: |
| - otp: '26.1' |
| rebar3: '3.22.1' |
| os: 'windows-2022' |
| - otp: '26.1' |
| rebar3: '3.22.1' |
| os: 'macos-latest' |
| runs-on: ${{matrix.os}} |
| steps: |
| - uses: actions/checkout@v3 |
| |
| # OS setups |
| - name: Ubuntu/Windows – Prepare Erlang |
| uses: erlef/setup-beam@v1 |
| with: |
| otp-version: ${{matrix.otp}} |
| rebar3-version: ${{matrix.rebar3}} |
| if: ${{ matrix.os != 'macos-latest' }} |
| - name: Windows - Enable Developer Command Prompt |
| uses: ilammy/msvc-dev-cmd@v1.12.1 |
| if: ${{ matrix.os == 'windows-2022' }} |
| - name: Windows - Install openssl |
| shell: pwsh |
| run: | |
| choco install openssl |
| echo "OPENSSL_INSTALL_DIR=""C:\Program Files\OpenSSL""" >> $env:GITHUB_ENV |
| if: ${{ matrix.os == 'windows-2022' }} |
| - name: MacOS – Prepare Brew |
| run: | |
| brew --version |
| brew cleanup --prune=all -s |
| brew autoremove |
| brew untap homebrew/cask homebrew/core |
| brew update |
| if: ${{ matrix.os == 'macos-latest' }} |
| - name: MacOS - Prepare Erlang |
| run: brew install erlang rebar3 |
| if: ${{ matrix.os == 'macos-latest' }} |
| |
| # caches |
| - name: Restore _build |
| uses: actions/cache@v3 |
| with: |
| path: _build |
| key: _build-cache-for-os-${{matrix.os}}-otp-${{matrix.otp}}-rebar3-${{matrix.rebar3}}-hash-${{hashFiles('rebar.lock')}} |
| - name: Restore rebar3's cache |
| uses: actions/cache@v3 |
| with: |
| path: ~/.cache/rebar3 |
| key: rebar3-cache-for-os-${{matrix.os}}-otp-${{matrix.otp}}-rebar3-${{matrix.rebar3}}-hash-${{hashFiles('rebar.lock')}} |
| |
| # tests |
| - run: rebar3 as test get-deps |
| - run: rebar3 as test compile |
| - run: rebar3 as test ct |
| - run: rebar3 dialyzer |
| if: ${{ matrix.otp == '26.1' && matrix.os == 'ubuntu-22.04' }} |
| - name: Run coverage |
| if: ${{ matrix.otp == '26.1' && matrix.os == 'ubuntu-22.04' }} |
| run: | |
| rebar3 as test codecov analyze |
| gcov -o c_src fast_pbkdf2 |
| - name: Upload coverage |
| if: ${{ matrix.otp == '26.1' && matrix.os == 'ubuntu-22.04' }} |
| run: | |
| pip install --user codecov |
| /home/runner/.local/bin/codecov |
| |
| test-on-s390x: |
| runs-on: ubuntu-22.04 |
| steps: |
| - uses: actions/checkout@v3 |
| - name: Setup emulator |
| run: | |
| sudo docker run --rm --privileged tonistiigi/binfmt:qemu-v6.2.0 |
| - name: Run build |
| uses: uraimo/run-on-arch-action@v2.6.0 |
| with: |
| arch: s390x |
| distro: ubuntu22.04 |
| run: | |
| apt-get update -y && DEBIAN_FRONTEND=noninteractive apt-get install -y rebar3 gcc libssl-dev |
| echo "---rebar3 as test get-deps---" |
| rebar3 as test get-deps |
| echo "---rebar3 as test compile---" |
| rebar3 as test compile |
| echo "---rebar3 as test ct---" |
| rebar3 as test ct |