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