Move static analysis jobs to their own CI file to split workflows (#3157)

Move jobs doing static analysis to its own workflow. 

RacketCGC is needed so perform a speed build (takes 3mins) before the static analysis on each job that requires it.
This commit is contained in:
Paulo Matos 2020-05-05 14:40:01 +02:00 committed by GitHub
parent 3934dfd760
commit e64c680b60
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 153 additions and 167 deletions

View File

@ -452,170 +452,3 @@ jobs:
run: raco pkg install --auto db-test
- name: Run db tests
run: raco test -l tests/db/all-tests
#
# Jobs to scan-build racket
#
scanbuild-racketcgc:
runs-on: ubuntu-latest
container: pmatos/scan-build:latest
steps:
- uses: actions/checkout@v1
with:
fetch-depth: 100
- name: Install dependencies
run: |
apt-get update
apt-get install -y libffi-dev unzip python libxml2-dev libfindbin-libs-perl make gcc g++
- name: Configure
working-directory: ./racket/src
run: >
./configure
CFLAGS="-O0 -g"
--disable-strip
--prefix=${{ runner.temp }}/racketcgc
--enable-werror
--enable-cify
--enable-cgcdefault
--enable-jit
--enable-foreign
--enable-places
--enable-futures
--enable-float
--enable-pthread
--disable-docs
- name: Scan Build
working-directory: ./racket/src
run: |
export cpus=$(grep -c ^processor /proc/cpuinfo)
scan-build -o ../../racketcgc-report -analyzer-config 'crosscheck-with-z3=true' make -j$((cpus + 1))
- name: Tarballing
run: tar -cvjf racketcgc-report-${{ github.sha }}.tar.bz2 racketcgc-report
- uses: actions/upload-artifact@v1
if: always()
with:
name: scanbuild-cgc-${{ github.sha }}
path: racketcgc-report-${{ github.sha }}.tar.bz2
scanbuild-racket3m:
runs-on: ubuntu-latest
container: pmatos/scan-build:latest
needs: build-racketcgc
env:
RUNNER_TEMP: "/__w/_temp"
steps:
- name: Workaround temp issues
run: |
mkdir -p ${{ runner.temp }}
cd ${{ runner.temp }}/..
rmdir ${{ runner.temp }}
ln -s ${RUNNER_TEMP} ${{ runner.temp }}
- uses: actions/checkout@v1
with:
fetch-depth: 100
- name: Install dependencies
run: |
apt-get update
apt-get install -y libffi-dev unzip python libxml2-dev libfindbin-libs-perl make gcc g++
- uses: actions/download-artifact@v1
with:
name: racketcgc-ubuntu-18.04-cify-x64_git${{ github.sha }}
path: ${{ runner.temp }}
- name: Untar
working-directory: ${{ runner.temp }}
run: tar -xvjf racketcgc-ubuntu-18.04-cify-x64_git${{ github.sha }}.tar.bz2
- name: Configure
working-directory: ./racket/src
run: >
./configure
CFLAGS="-O0 -g"
--disable-strip
--prefix=${RUNNER_TEMP}/racket3m
--enable-racket=${RUNNER_TEMP}/racketcgc/bin/racket
--enable-werror
--enable-cify
--enable-jit
--enable-foreign
--enable-places
--enable-futures
--enable-float
--enable-pthread
--disable-docs
- name: Scan Build
working-directory: ./racket/src
run: |
export cpus=$(grep -c ^processor /proc/cpuinfo)
scan-build -o ../../racket3m-report -analyzer-config 'crosscheck-with-z3=true' make -j$((cpus + 1))
- name: Tarballing
run: tar -cvjf racket3m-report-${{ github.sha }}.tar.bz2 racket3m-report
- uses: actions/upload-artifact@v1
if: always()
with:
name: scanbuild-3m-${{ github.sha }}
path: racket3m-report-${{ github.sha }}.tar.bz2
scanbuild-racketcs:
runs-on: ubuntu-18.04
container: pmatos/scan-build:latest
needs: build-racketcgc
env:
RUNNER_TEMP: "/__w/_temp"
steps:
- name: Workaround temp issues
run: |
mkdir -p ${{ runner.temp }}
cd ${{ runner.temp }}/..
rmdir ${{ runner.temp }}
ln -s ${RUNNER_TEMP} ${{ runner.temp }}
- uses: actions/checkout@v1
with:
fetch-depth: 100
- name: Install pkg dependencies
run: |
apt update
apt install -y libffi-dev unzip python libxml2-dev libfindbin-libs-perl make gcc g++ git uuid-dev
- uses: actions/download-artifact@v1
with:
name: racketcgc-ubuntu-18.04-cify-x64_git${{ github.sha }}
path: ${{ runner.temp }}
- name: Untar
working-directory: ${{ runner.temp }}
run: tar -xvjf racketcgc-ubuntu-18.04-cify-x64_git${{ github.sha}}.tar.bz2
- name: Checking out ChezScheme
working-directory: ./racket/src
run: git clone --depth=1 --recurse-submodules -j3 https://github.com/racket/ChezScheme
- name: Configuring Racket CS
working-directory: ./racket/src
env:
CC: ${{ matrix.cc }}
run: >
./configure
CFLAGS="-O0 -g"
--prefix=${RUNNER_TEMP}/racketcs
$RACKET_EXTRA_CONFIGURE_ARGS
--enable-racket=${RUNNER_TEMP}/racketcgc/bin/racket
--enable-compress
--disable-docs
--enable-pthread
--enable-csdefault
--enable-csonly
- name: Building
working-directory: ./racket/src
run: |
export cpus=$(grep -c ^processor /proc/cpuinfo)
scan-build -o ../../racketcs-report -analyzer-config 'crosscheck-with-z3=true' make -j $((cpus+1))
- name: Tarballing
run: tar -cvjf racketcs-report-${{ github.sha }}.tar.bz2 racketcs-report
- uses: actions/upload-artifact@v1
if: always()
with:
name: scanbuild-cs-${{ github.sha }}
path: racketcs-report-${{ github.sha }}.tar.bz2

View File

@ -0,0 +1,153 @@
name: LLVM Static Analysis
on: [push, pull_request]
jobs:
#
# Jobs to scan-build racket
#
scanbuild-racketcgc:
runs-on: ubuntu-latest
container: pmatos/scan-build:latest
steps:
- name: Install dependencies
run: |
apt-get update
apt-get install -y libffi-dev unzip python libxml2-dev libfindbin-libs-perl make gcc g++ git
- uses: actions/checkout@v2
with:
fetch-depth: 100
- name: Configure
working-directory: ./racket/src
run: >
./configure
CFLAGS="-O0 -g"
--disable-strip
--prefix=${{ runner.temp }}/racketcgc
--enable-werror
--enable-cify
--enable-cgcdefault
--enable-jit
--enable-foreign
--enable-places
--enable-futures
--enable-float
--enable-pthread
--disable-docs
- name: Scan Build
working-directory: ./racket/src
run: |
export cpus=$(grep -c ^processor /proc/cpuinfo)
scan-build -o ../../racketcgc-report -analyzer-config 'crosscheck-with-z3=true' make -j$((cpus + 1))
- name: Tarballing
run: tar -cvjf racketcgc-report-${{ github.sha }}.tar.bz2 racketcgc-report
- uses: actions/upload-artifact@v1
if: always()
with:
name: scanbuild-cgc-${{ github.sha }}
path: racketcgc-report-${{ github.sha }}.tar.bz2
scanbuild-racket3m:
runs-on: ubuntu-latest
container: pmatos/scan-build:latest
steps:
- name: Install dependencies
run: |
apt-get update
apt-get install -y libffi-dev unzip python libxml2-dev libfindbin-libs-perl make gcc g++ git
- uses: actions/checkout@v2
with:
fetch-depth: 100
- name: Speed build and install racketcgc
working-directory: ./racket/src
run: |
./configure --enable-cgcdefault --prefix=/usr
export cpus=$(grep -c ^processor /proc/cpuinfo)
make -j$((cpus+1))
make -j$((cpus+1)) install
- name: Clean repo
run: git clean -xdf
- name: Configure
working-directory: ./racket/src
run: >
./configure
CFLAGS="-O0 -g"
--disable-strip
--enable-racket=/usr/bin/racket
--enable-werror
--enable-cify
--enable-jit
--enable-foreign
--enable-places
--enable-futures
--enable-float
--enable-pthread
--disable-docs
- name: Scan Build
working-directory: ./racket/src
run: |
export cpus=$(grep -c ^processor /proc/cpuinfo)
scan-build -o ../../racket3m-report -analyzer-config 'crosscheck-with-z3=true' make -j$((cpus + 1))
- name: Tarballing
run: tar -cvjf racket3m-report-${{ github.sha }}.tar.bz2 racket3m-report
- uses: actions/upload-artifact@v1
if: always()
with:
name: scanbuild-3m-${{ github.sha }}
path: racket3m-report-${{ github.sha }}.tar.bz2
scanbuild-racketcs:
runs-on: ubuntu-18.04
container: pmatos/scan-build:latest
steps:
- name: Install pkg dependencies
run: |
apt update
apt install -y libffi-dev unzip python libxml2-dev libfindbin-libs-perl make gcc g++ git uuid-dev git
- uses: actions/checkout@v2
with:
fetch-depth: 100
- name: Speed build and install racketcgc
working-directory: ./racket/src
run: |
./configure --enable-cgcdefault --prefix=/usr
export cpus=$(grep -c ^processor /proc/cpuinfo)
make -j$((cpus+1))
make -j$((cpus+1)) install
- name: Clean repo
run: git clean -xdf
- name: Checking out ChezScheme
working-directory: ./racket/src
run: git clone --depth=1 --recurse-submodules -j3 https://github.com/racket/ChezScheme
- name: Configuring Racket CS
working-directory: ./racket/src
env:
CC: ${{ matrix.cc }}
run: >
./configure
CFLAGS="-O0 -g"
--enable-racket=/usr/bin/racket
--enable-compress
--disable-docs
--enable-pthread
--enable-csdefault
--enable-csonly
- name: Building
working-directory: ./racket/src
run: |
export cpus=$(grep -c ^processor /proc/cpuinfo)
scan-build -o ../../racketcs-report -analyzer-config 'crosscheck-with-z3=true' make -j $((cpus+1))
- name: Tarballing
run: tar -cvjf racketcs-report-${{ github.sha }}.tar.bz2 racketcs-report
- uses: actions/upload-artifact@v1
if: always()
with:
name: scanbuild-cs-${{ github.sha }}
path: racketcs-report-${{ github.sha }}.tar.bz2