1name: Coverity
2on:
3  schedule:
4    - cron: '42 0 * * *'  # Run once per day, to avoid Coverity's submission limits
5  workflow_dispatch:
6
7jobs:
8  scan:
9    runs-on: ubuntu-18.04
10
11    env:
12      CC: gcc
13      DEBIAN_FRONTEND: noninteractive
14
15    steps:
16      - uses: actions/checkout@v2
17
18      - name: Download Coverity
19        run: |
20          wget -q https://scan.coverity.com/download/cxx/linux64 --post-data "token=$TOKEN&project=vim" -O coverity_tool.tgz
21          mkdir cov-scan
22          tar ax -f coverity_tool.tgz --strip-components=1 -C cov-scan
23        env:
24          TOKEN: ${{ secrets.COVERITY_SCAN_TOKEN }}
25
26      - name: Install packages
27        run: |
28          sudo apt update && sudo apt install -y \
29            autoconf \
30            gettext \
31            libcanberra-dev \
32            libperl-dev \
33            python-dev \
34            python3-dev \
35            liblua5.3-dev \
36            lua5.3 \
37            ruby-dev \
38            tcl-dev \
39            libgtk2.0-dev \
40            desktop-file-utils \
41            libtool-bin \
42            libsodium-dev
43
44      - name: Set up environment
45        run: |
46          echo "$(pwd)/cov-scan/bin" >> $GITHUB_PATH
47          (
48          echo "NPROC=$(getconf _NPROCESSORS_ONLN)"
49          echo "CONFOPT=--enable-perlinterp --enable-pythoninterp --enable-python3interp --enable-rubyinterp --enable-luainterp --enable-tclinterp"
50          ) >> $GITHUB_ENV
51
52      - name: Set up system
53        run: |
54          # Setup lua5.3 manually since its package doesn't provide alternative.
55          # https://bugs.launchpad.net/ubuntu/+source/lua5.3/+bug/1707212
56          sudo update-alternatives --install /usr/bin/lua lua /usr/bin/lua5.3 10
57
58      - name: Configure
59        run: |
60          ./configure --with-features=huge ${CONFOPT} --enable-fail-if-missing
61          # Append various warning flags to CFLAGS.
62          sed -i -f ci/config.mk.sed src/auto/config.mk
63          sed -i -f ci/config.mk.${CC}.sed src/auto/config.mk
64
65      - name: Build/scan vim
66        run: |
67          cov-build --dir cov-int make -j${NPROC}
68
69      - name: Submit results
70        run: |
71          tar zcf cov-scan.tgz cov-int
72          curl --form token=$TOKEN \
73            --form email=$EMAIL \
74            --form file=@cov-scan.tgz \
75            --form version="$(git rev-parse HEAD)" \
76            --form description="Automatic GHA scan" \
77            'https://scan.coverity.com/builds?project=vim'
78        env:
79          TOKEN: ${{ secrets.COVERITY_SCAN_TOKEN }}
80          EMAIL: ${{ secrets.COVERITY_SCAN_EMAIL }}
81