fc51cd35c7baf832738560ae6f3b958d6e250147
[strongswan.git] / .github / workflows / linux.yml
1 name: Linux
2
3 on: [push, pull_request]
4
5 env:
6   # this test case does not actually test anything but tries to access system
7   # directories that might be inaccessible on build hosts
8   TESTS_CASES_EXCLUDE: sw_collector
9   TESTS_REDUCED_KEYLENGTHS: yes
10   CCACHE_BASEDIR: ${{ github.workspace }}
11   CCACHE_COMPRESS: true
12   CCACHE_MAXSIZE: 200M
13   OS_NAME: linux
14
15 jobs:
16   latest:
17     runs-on: ubuntu-latest
18     strategy:
19       matrix:
20         test: [ all, default, printf-builtin ]
21         compiler: [ gcc, clang ]
22         leak-detective: [ no, yes ]
23         monolithic: [ no, yes ]
24         exclude:
25           # leaks will show up whether we build monolithic or not
26           - leak-detective: yes
27             monolithic: yes
28           # monolithic builds don't affect the printf-hook implementation
29           - test: printf-builtin
30             monolithic: yes
31         include:
32           - test: apidoc
33           - test: coverage
34           - test: dist
35           - test: nm
36           - test: nm-no-glib
37           - test: fuzzing
38             compiler: clang
39             monolithic: yes
40     env:
41       LEAK_DETECTIVE: ${{ matrix.leak-detective || 'no' }}
42       MONOLITHIC: ${{ matrix.monolithic || 'no' }}
43       CC: ${{ matrix.compiler || 'gcc' }}
44       TEST: ${{ matrix.test }}
45     steps:
46       - uses: actions/checkout@v2
47       - uses: actions/cache@v2
48         with:
49           path: ~/.ccache
50           # with regards to ccache, monolithic builds don't differ from regular
51           # builds and, similarly, builds with leak-detective only differ in two
52           # files (LD itself and library.c); but different tests build different
53           # dependencies, so different caches are needed
54           key: ccache-${{ runner.os }}-${{ env.CC }}-${{ matrix.test }}-${{ github.ref }}:${{ github.sha }}
55           restore-keys: |
56             ccache-${{ runner.os }}-${{ env.CC }}-${{ matrix.test }}-${{ github.ref }}:
57             ccache-${{ runner.os }}-${{ env.CC }}-${{ matrix.test }}-
58             ccache-${{ runner.os }}-${{ env.CC }}-
59       - run: |
60           sudo apt-get install -qq ccache
61           echo "PATH=/usr/lib/ccache:$PATH" >> $GITHUB_ENV
62           ccache -z
63       - uses: ./.github/actions/default
64       - run: ccache -s
65       - if: ${{ success() && matrix.test == 'coverage' }}
66         run: bash <(curl -s https://codecov.io/bash)
67       - if: ${{ failure() }}
68         uses: actions/upload-artifact@v2
69         with:
70           name: Logs ${{ github.job }}
71           path: config.log
72           retention-days: 5
73
74   crypto-plugins:
75     runs-on: ubuntu-latest
76     strategy:
77       matrix:
78         test: [ botan, wolfssl, openssl, gcrypt ]
79         leak-detective: [ no, yes ]
80     env:
81       LEAK_DETECTIVE: ${{ matrix.leak-detective || 'no' }}
82       TEST: ${{ matrix.test }}
83     steps:
84       - uses: actions/checkout@v2
85       - uses: actions/cache@v2
86         with:
87           path: ~/.ccache
88           key: ccache-${{ runner.os }}-${{ env.CC }}-${{ matrix.test }}-${{ github.ref }}:${{ github.sha }}
89           restore-keys: |
90             ccache-${{ runner.os }}-${{ env.CC }}-${{ matrix.test }}-${{ github.ref }}:
91             ccache-${{ runner.os }}-${{ env.CC }}-${{ matrix.test }}-
92             ccache-${{ runner.os }}-${{ env.CC }}-
93             ccache-${{ runner.os }}-${{ env.CC }}-all-${{ github.ref }}:${{ github.sha }}
94             ccache-${{ runner.os }}-${{ env.CC }}-all-${{ github.ref }}:
95             ccache-${{ runner.os }}-${{ env.CC }}-all-
96             ccache-${{ runner.os }}-${{ env.CC }}-
97       - run: |
98           sudo apt-get install -qq ccache
99           echo "PATH=/usr/lib/ccache:$PATH" >> $GITHUB_ENV
100           ccache -z
101       - uses: ./.github/actions/default
102       - run: ccache -s
103       - if: ${{ failure() }}
104         uses: actions/upload-artifact@v2
105         with:
106           name: Logs ${{ github.job }}
107           path: config.log
108           retention-days: 5
109
110   xenial:
111     runs-on: ubuntu-16.04
112     strategy:
113       matrix:
114         test: [ all ]
115         compiler: [ gcc, clang ]
116         include:
117           - test: openssl-1.0
118           - test: openssl-1.0
119             leak-detective: yes
120     env:
121       LEAK_DETECTIVE: ${{ matrix.leak-detective || 'no' }}
122       CC: ${{ matrix.compiler || 'gcc' }}
123       TEST: ${{ matrix.test }}
124       UBUNTU_XENIAL: yes
125       # this is the default with newer versions and fixes builds with clang
126       CCACHE_CPP2: true
127     steps:
128       - uses: actions/checkout@v2
129       - uses: actions/cache@v2
130         with:
131           path: ~/.ccache
132           key: ccache-xenial-${{ env.CC }}-${{ matrix.test }}-${{ github.ref }}:${{ github.sha }}
133           restore-keys: |
134             ccache-xenial-${{ env.CC }}-${{ matrix.test }}-${{ github.ref }}:
135             ccache-xenial-${{ env.CC }}-${{ matrix.test }}-
136             ccache-xenial-${{ env.CC }}-
137       - run: |
138           sudo apt-get install -qq ccache
139           echo "PATH=/usr/lib/ccache:$PATH" >> $GITHUB_ENV
140           ccache -z
141       - uses: ./.github/actions/default
142       - run: ccache -s
143       - if: ${{ failure() }}
144         uses: actions/upload-artifact@v2
145         with:
146           name: Logs ${{ github.job }}
147           path: config.log
148           retention-days: 5