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
|