Use .github/workflows/functional_test.sh in GitHub Actions (like in Woodpecker-CI)
[kconfig-hardened-check.git] / .github / workflows / functional_test.yml
1 name: functional test
2
3 on:
4   push:
5     branches: [ master ]
6   pull_request:
7     branches: [ master ]
8
9 jobs:
10   functional_test:
11
12     runs-on: ubuntu-latest
13
14     strategy:
15       max-parallel: 3
16       fail-fast: false
17       matrix:
18         # Current ubuntu-latest (Ubuntu 22.04) provides the following versions of Python:
19         python-version: ['3.7', '3.8', '3.9', '3.10', '3.11']
20
21     steps:
22
23     - name: Set up Python ${{ matrix.python-version }}
24       uses: actions/setup-python@v4
25       with:
26         python-version: ${{ matrix.python-version }}
27
28     - name: Install package
29       run: |
30         python -m pip install --upgrade pip
31         pip install coverage
32         pip --verbose install git+https://github.com/a13xp0p0v/kconfig-hardened-check
33         echo ">>>>> first start <<<<<"
34         kconfig-hardened-check
35
36     - name: Check all configs with the installed tool
37       run: |
38         echo ">>>>> check all configs <<<<<"
39         CONFIG_DIR=`find /opt/hostedtoolcache/Python/ -name config_files`
40         KCONFIGS=`find $CONFIG_DIR -type f | grep -e "\.config" -e "\.gz"`
41         COUNT=0
42         for C in $KCONFIGS
43         do
44                 COUNT=$(expr $COUNT + 1)
45                 echo -e "\n>>>>> checking config number $COUNT <<<<<"
46                 kconfig-hardened-check -c $C -l /proc/cmdline
47         done
48         echo -e "\n>>>>> checking $COUNT configs is done <<<<<"
49
50     - name: Get source code for collecting coverage
51       uses: actions/checkout@v3
52
53     - name: Run the functional tests and collect the coverage
54       run: |
55         sh .github/workflows/functional_test.sh
56
57     - name: Prepare final coverage report
58       run: |
59         coverage xml -i -o coverage.xml
60
61     - name: Handle coverage
62       uses: codecov/codecov-action@v3
63       with:
64         files: ./coverage.xml
65         flags: functional_test
66         name: functional_test_upload
67         fail_ci_if_error: true
68         verbose: true