The nm test can only be done on Ubuntu 18.04 as the required libraries are not available on newer systems. Switch to pip3 to install tox (the only Python dependency we use). Closes strongswan/strongswan#327.
201 lines
6.7 KiB
YAML
201 lines
6.7 KiB
YAML
name: Linux
|
|
|
|
on: [push, pull_request]
|
|
|
|
env:
|
|
# this test case does not actually test anything but tries to access system
|
|
# directories that might be inaccessible on build hosts
|
|
TESTS_CASES_EXCLUDE: sw_collector
|
|
TESTS_REDUCED_KEYLENGTHS: yes
|
|
CCACHE_BASEDIR: ${{ github.workspace }}
|
|
CCACHE_COMPRESS: true
|
|
CCACHE_MAXSIZE: 200M
|
|
OS_NAME: linux
|
|
|
|
jobs:
|
|
pre-check:
|
|
runs-on: ubuntu-latest
|
|
outputs:
|
|
should_skip: ${{ steps.skip-check.outputs.should_skip }}
|
|
steps:
|
|
- id: skip-check
|
|
uses: fkirc/skip-duplicate-actions@master
|
|
with:
|
|
concurrent_skipping: 'same_content'
|
|
|
|
latest:
|
|
needs: pre-check
|
|
if: ${{ needs.pre-check.outputs.should_skip != 'true' }}
|
|
runs-on: ubuntu-latest
|
|
strategy:
|
|
matrix:
|
|
test: [ all, default, printf-builtin ]
|
|
compiler: [ gcc, clang ]
|
|
leak-detective: [ no, yes ]
|
|
monolithic: [ no, yes ]
|
|
exclude:
|
|
# leaks will show up whether we build monolithic or not
|
|
- leak-detective: yes
|
|
monolithic: yes
|
|
# monolithic builds don't affect the printf-hook implementation
|
|
- test: printf-builtin
|
|
monolithic: yes
|
|
include:
|
|
- test: apidoc
|
|
- test: coverage
|
|
- test: dist
|
|
- test: nm-no-glib
|
|
- test: fuzzing
|
|
compiler: clang
|
|
monolithic: yes
|
|
env:
|
|
LEAK_DETECTIVE: ${{ matrix.leak-detective || 'no' }}
|
|
MONOLITHIC: ${{ matrix.monolithic || 'no' }}
|
|
CC: ${{ matrix.compiler || 'gcc' }}
|
|
TEST: ${{ matrix.test }}
|
|
steps:
|
|
- uses: actions/checkout@v2
|
|
- uses: actions/cache@v2
|
|
with:
|
|
path: ~/.ccache
|
|
# with regards to ccache, monolithic builds don't differ from regular
|
|
# builds and, similarly, builds with leak-detective only differ in two
|
|
# files (LD itself and library.c); but different tests build different
|
|
# dependencies, so different caches are needed
|
|
key: ccache-${{ runner.os }}-${{ env.CC }}-${{ matrix.test }}-${{ github.ref }}:${{ github.sha }}
|
|
restore-keys: |
|
|
ccache-${{ runner.os }}-${{ env.CC }}-${{ matrix.test }}-${{ github.ref }}:
|
|
ccache-${{ runner.os }}-${{ env.CC }}-${{ matrix.test }}-
|
|
ccache-${{ runner.os }}-${{ env.CC }}-
|
|
- run: |
|
|
sudo apt-get install -qq ccache
|
|
echo "PATH=/usr/lib/ccache:$PATH" >> $GITHUB_ENV
|
|
ccache -z
|
|
- uses: ./.github/actions/default
|
|
- run: ccache -s
|
|
- if: ${{ success() && matrix.test == 'coverage' }}
|
|
run: bash <(curl -s https://codecov.io/bash)
|
|
- if: ${{ failure() }}
|
|
uses: actions/upload-artifact@v2
|
|
with:
|
|
name: Logs ${{ github.job }}
|
|
path: config.log
|
|
retention-days: 5
|
|
|
|
crypto-plugins:
|
|
needs: pre-check
|
|
if: ${{ needs.pre-check.outputs.should_skip != 'true' }}
|
|
runs-on: ubuntu-latest
|
|
strategy:
|
|
matrix:
|
|
test: [ botan, wolfssl, openssl, gcrypt ]
|
|
leak-detective: [ no, yes ]
|
|
env:
|
|
LEAK_DETECTIVE: ${{ matrix.leak-detective || 'no' }}
|
|
TEST: ${{ matrix.test }}
|
|
steps:
|
|
- uses: actions/checkout@v2
|
|
- uses: actions/cache@v2
|
|
with:
|
|
path: ~/.ccache
|
|
key: ccache-${{ runner.os }}-${{ env.CC }}-${{ matrix.test }}-${{ github.ref }}:${{ github.sha }}
|
|
restore-keys: |
|
|
ccache-${{ runner.os }}-${{ env.CC }}-${{ matrix.test }}-${{ github.ref }}:
|
|
ccache-${{ runner.os }}-${{ env.CC }}-${{ matrix.test }}-
|
|
ccache-${{ runner.os }}-${{ env.CC }}-
|
|
ccache-${{ runner.os }}-${{ env.CC }}-all-${{ github.ref }}:${{ github.sha }}
|
|
ccache-${{ runner.os }}-${{ env.CC }}-all-${{ github.ref }}:
|
|
ccache-${{ runner.os }}-${{ env.CC }}-all-
|
|
ccache-${{ runner.os }}-${{ env.CC }}-
|
|
- run: |
|
|
sudo apt-get install -qq ccache
|
|
echo "PATH=/usr/lib/ccache:$PATH" >> $GITHUB_ENV
|
|
ccache -z
|
|
- uses: ./.github/actions/default
|
|
- run: ccache -s
|
|
- if: ${{ failure() }}
|
|
uses: actions/upload-artifact@v2
|
|
with:
|
|
name: Logs ${{ github.job }}
|
|
path: config.log
|
|
retention-days: 5
|
|
|
|
bionic:
|
|
needs: pre-check
|
|
if: ${{ needs.pre-check.outputs.should_skip != 'true' }}
|
|
runs-on: ubuntu-18.04
|
|
strategy:
|
|
matrix:
|
|
test: [ all ]
|
|
compiler: [ gcc, clang ]
|
|
include:
|
|
- test: nm
|
|
env:
|
|
LEAK_DETECTIVE: ${{ matrix.leak-detective || 'no' }}
|
|
CC: ${{ matrix.compiler || 'gcc' }}
|
|
TEST: ${{ matrix.test }}
|
|
UBUNTU_BIONIC: yes
|
|
steps:
|
|
- uses: actions/checkout@v2
|
|
- uses: actions/cache@v2
|
|
with:
|
|
path: ~/.ccache
|
|
key: ccache-bionic-${{ env.CC }}-${{ matrix.test }}-${{ github.ref }}:${{ github.sha }}
|
|
restore-keys: |
|
|
ccache-bionic-${{ env.CC }}-${{ matrix.test }}-${{ github.ref }}:
|
|
ccache-bionic-${{ env.CC }}-${{ matrix.test }}-
|
|
ccache-bionic-${{ env.CC }}-
|
|
- run: |
|
|
sudo apt-get install -qq ccache
|
|
echo "PATH=/usr/lib/ccache:$PATH" >> $GITHUB_ENV
|
|
ccache -z
|
|
- uses: ./.github/actions/default
|
|
- run: ccache -s
|
|
- if: ${{ failure() }}
|
|
uses: actions/upload-artifact@v2
|
|
with:
|
|
name: Logs ${{ github.job }}
|
|
path: config.log
|
|
retention-days: 5
|
|
|
|
xenial:
|
|
needs: pre-check
|
|
if: ${{ needs.pre-check.outputs.should_skip != 'true' }}
|
|
runs-on: ubuntu-16.04
|
|
strategy:
|
|
matrix:
|
|
test: [ all ]
|
|
compiler: [ gcc, clang ]
|
|
include:
|
|
- test: openssl-1.0
|
|
- test: openssl-1.0
|
|
leak-detective: yes
|
|
env:
|
|
LEAK_DETECTIVE: ${{ matrix.leak-detective || 'no' }}
|
|
CC: ${{ matrix.compiler || 'gcc' }}
|
|
TEST: ${{ matrix.test }}
|
|
# this is the default with newer versions and fixes builds with clang
|
|
CCACHE_CPP2: true
|
|
steps:
|
|
- uses: actions/checkout@v2
|
|
- uses: actions/cache@v2
|
|
with:
|
|
path: ~/.ccache
|
|
key: ccache-xenial-${{ env.CC }}-${{ matrix.test }}-${{ github.ref }}:${{ github.sha }}
|
|
restore-keys: |
|
|
ccache-xenial-${{ env.CC }}-${{ matrix.test }}-${{ github.ref }}:
|
|
ccache-xenial-${{ env.CC }}-${{ matrix.test }}-
|
|
ccache-xenial-${{ env.CC }}-
|
|
- run: |
|
|
sudo apt-get install -qq ccache
|
|
echo "PATH=/usr/lib/ccache:$PATH" >> $GITHUB_ENV
|
|
ccache -z
|
|
- uses: ./.github/actions/default
|
|
- run: ccache -s
|
|
- if: ${{ failure() }}
|
|
uses: actions/upload-artifact@v2
|
|
with:
|
|
name: Logs ${{ github.job }}
|
|
path: config.log
|
|
retention-days: 5
|