diff options
Diffstat (limited to '.github/workflows')
-rw-r--r-- | .github/workflows/build.yaml | 185 |
1 files changed, 185 insertions, 0 deletions
diff --git a/.github/workflows/build.yaml b/.github/workflows/build.yaml new file mode 100644 index 00000000..bebba374 --- /dev/null +++ b/.github/workflows/build.yaml @@ -0,0 +1,185 @@ +name: CI + +on: + pull_request: + branches: master + push: + branches: master + +# Defaults for building KLEE +env: + BASE_IMAGE: ubuntu:bionic-20200807 + REPOSITORY: klee + COVERAGE: 0 + DISABLE_ASSERTIONS: 0 + ENABLE_DOXYGEN: 0 + ENABLE_OPTIMIZED: 1 + ENABLE_DEBUG: 1 + GTEST_VERSION: 1.7.0 + KLEE_RUNTIME_BUILD: "Debug+Asserts" + LLVM_VERSION: 9 + METASMT_VERSION: qf_abv + MINISAT_VERSION: "master" + REQUIRES_RTTI: 0 + SANITIZER_BUILD: + SOLVERS: STP:Z3 + STP_VERSION: 2.3.3 + TCMALLOC_VERSION: 2.7 + UCLIBC_VERSION: klee_uclibc_v1.2 + USE_TCMALLOC: 1 + USE_LIBCXX: 1 + Z3_VERSION: 4.8.4 + +jobs: + Linux: + runs-on: ubuntu-latest + strategy: + matrix: + name: [ + "LLVM 10", + "LLVM 9", + "LLVM 8", + "LLVM 7", + "LLVM 6", + "LLVM 5", + "LLVM 4", + "LLVM 3.9", + "LLVM 3.8", + "ASan", + "UBSan", + "MSan", + "Z3 only", + "metaSMT STP", + "metaSMT Boolector", + "STP master", + "Latest klee-uclibc", + "Asserts enabled", + "No TCMalloc, optimised runtime", + ] + include: + - name: "LLVM 10" + env: + LLVM_VERSION: 10 + - name: "LLVM 9" + env: + LLVM_VERSION: 9 + - name: "LLVM 8" + env: + LLVM_VERSION: 8 + - name: "LLVM 7" + env: + LLVM_VERSION: 7 + - name: "LLVM 6" + env: + LLVM_VERSION: 6 + - name: "LLVM 5" + env: + LLVM_VERSION: 5 + - name: "LLVM 4" + env: + LLVM_VERSION: 4 + - name: "LLVM 3.9" + env: + LLVM_VERSION: 3.9 + - name: "LLVM 3.8" + env: + LLVM_VERSION: 3.8 + USE_LIBCXX: 0 + # Sanitizer builds. Do unoptimized build otherwise the optimizer might remove problematic code + - name: "ASan" + env: + SANITIZER_BUILD: address + ENABLE_OPTIMIZED: 0 + USE_TCMALLOC: 0 + - name: "UBSan" + env: + SANITIZER_BUILD: undefined + ENABLE_OPTIMIZED: 0 + USE_TCMALLOC: 0 + - name: "MSan" + env: + SANITIZER_BUILD: memory + ENABLE_OPTIMIZED: 0 + USE_TCMALLOC: 0 + SOLVERS: STP + # Test just using Z3 only + - name: "Z3 only" + env: + SOLVERS: Z3 + # Test just using metaSMT + - name: "metaSMT STP" + env: + SOLVERS: metaSMT + METASMT_DEFAULT: STP + REQUIRES_RTTI: 1 + - name: "metaSMT Boolector" + env: + SOLVERS: metaSMT + METASMT_DEFAULT: BTOR + REQUIRES_RTTI: 1 + # Test we can build against STP master + - name: "STP master" + env: + SOLVERS: STP + STP_VERSION: master + # Check we can build latest klee-uclibc branch + - name: "Latest klee-uclibc" + env: + UCLIBC_VERSION: klee_0_9_29 + # Check at least one build with Asserts disabled. + - name: "Asserts enabled" + env: + SOLVERS: STP + DISABLE_ASSERTIONS: 1 + # Check without TCMALLOC and with an optimised runtime library + - name: "No TCMalloc, optimised runtime" + env: + USE_TCMALLOC: 0 + KLEE_RUNTIME_BUILD: "Release+Debug+Asserts" + steps: + - name: Checkout KLEE source code + uses: actions/checkout@v2 + - name: Build KLEE + env: ${{ matrix.env }} + run: scripts/build/build.sh klee --docker --create-final-image + - name: Run tests + run: sudo scripts/build/run-tests.sh --run-docker --debug + + macOS: + runs-on: macos-latest + env: + BASE: /tmp + SOLVERS: STP + UCLIBC_VERSION: 0 + USE_TCMALLOC: 0 + USE_LIBCXX: 0 + steps: + - name: Install newer version of Bash + run: brew install bash + - name: Checkout KLEE source code + uses: actions/checkout@v2 + - name: Build KLEE + run: scripts/build/build.sh klee --debug --install-system-deps + - name: Run tests + run: scripts/build/run-tests.sh /tmp/klee_build* --debug + + Docker: + runs-on: ubuntu-latest + steps: + - name: Checkout KLEE Code + uses: actions/checkout@v2 + - name: Build Docker image + run: docker build . + + Coverage: + runs-on: ubuntu-latest + env: + ENABLE_OPTIMIZED: 0 + COVERAGE: 1 + steps: + - name: Checkout KLEE source code + uses: actions/checkout@v2 + - name: Build KLEE + run: scripts/build/build.sh klee --docker --create-final-image + - name: Run tests + run: sudo scripts/build/run-tests.sh --coverage --upload-coverage --run-docker --debug \ No newline at end of file |