diff --git a/.github/workflows/coverity.yml b/.github/workflows/coverity.yml new file mode 100644 index 0000000..a60cdf8 --- /dev/null +++ b/.github/workflows/coverity.yml @@ -0,0 +1,82 @@ +name: Coverity Scan + +on: + push: + branches: + - 'dev' + +env: + PROJECT_NAME: libite + CONTACT_EMAIL: troglobit@gmail.com + COVERITY_NAME: troglobit-libite + COVERITY_PROJ: troglobit%2Flibite + +jobs: + coverity: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v2 + - name: Fetch latest Coverity Scan MD5 + id: var + env: + TOKEN: ${{ secrets.COVERITY_SCAN_TOKEN }} + run: | + wget -q https://scan.coverity.com/download/cxx/linux64 \ + --post-data "token=$TOKEN&project=${COVERITY_PROJ}&md5=1" \ + -O coverity-latest.tar.gz.md5 + export MD5=$(cat coverity-latest.tar.gz.md5) + echo "Got MD5 $MD5" + echo ::set-output name=md5::${MD5} + - uses: actions/cache@v2 + id: cache + with: + path: coverity-latest.tar.gz + key: ${{ runner.os }}-coverity-${{ steps.var.outputs.md5 }} + restore-keys: | + ${{ runner.os }}-coverity-${{ steps.var.outputs.md5 }} + ${{ runner.os }}-coverity- + ${{ runner.os }}-coverity + - name: Download Coverity Scan + env: + TOKEN: ${{ secrets.COVERITY_SCAN_TOKEN }} + run: | + if [ ! -f coverity-latest.tar.gz ]; then + wget -q https://scan.coverity.com/download/cxx/linux64 \ + --post-data "token=$TOKEN&project=${COVERITY_PROJ}" \ + -O coverity-latest.tar.gz + else + echo "Latest Coverity Scan available from cache :-)" + md5sum coverity-latest.tar.gz + fi + mkdir coverity + tar xzf coverity-latest.tar.gz --strip 1 -C coverity + - name: Install dependencies + run: | + sudo apt-get -y update + sudo apt-get -y install pkg-config + - name: Configure + run: | + ./autogen.sh + ./configure --prefix= --disable-silent-rules + - name: Build + run: | + export PATH=`pwd`/coverity/bin:$PATH + cov-build --dir cov-int make + - name: Submit results to Coverity Scan + env: + TOKEN: ${{ secrets.COVERITY_SCAN_TOKEN }} + run: | + tar czvf ${PROJECT_NAME}.tgz cov-int + curl \ + --form project=${COVERITY_NAME} \ + --form token=$TOKEN \ + --form email=${CONTACT_EMAIL} \ + --form file=@${PROJECT_NAME}.tgz \ + --form version=trunk \ + --form description="${PROJECT_NAME} $(git rev-parse HEAD)" \ + https://scan.coverity.com/builds?project=${COVERITY_PROJ} + - name: Upload build.log + uses: actions/upload-artifact@v2 + with: + name: coverity-build.log + path: cov-int/build-log.txt