diff --git a/.github/workflows/build.yaml b/.github/workflows/build.yaml index 2f2f67495ff..e5e5e4441fa 100644 --- a/.github/workflows/build.yaml +++ b/.github/workflows/build.yaml @@ -8,8 +8,8 @@ on: - 'docs/**' jobs: - build-gcc: - name: build-gcc + build: + name: build runs-on: ubuntu-latest strategy: matrix: @@ -18,90 +18,31 @@ jobs: - centos7 - ubuntu1604 - ubuntu1804 - container: - image: vesoft/nebula-dev:${{ matrix.tag }} + compiler: [gcc, clang] + exclude: + - tag: centos6 + compiler: clang + - tag: centos7 + compiler: clang steps: - uses: actions/checkout@v1 with: fetch-depth: 1 - - name: cmake - env: - NEBULA_DEP_BIN: /opt/nebula/third-party/bin - LIBRARY_PATH: /usr/lib/x86_64-linux-gnu:/lib/x86_64-linux-gnu:${LIBRARY_PATH} + - name: Mount tmpfs run: | - mkdir _build && cd _build - ${NEBULA_DEP_BIN}/cmake -DCMAKE_C_COMPILER=${NEBULA_DEP_BIN}/gcc -DCMAKE_CXX_COMPILER=${NEBULA_DEP_BIN}/g++ -DCMAKE_BUILD_TYPE=Release .. - shell: bash - - name: make - env: - LIBRARY_PATH: /usr/lib/x86_64-linux-gnu:/lib/x86_64-linux-gnu:${LIBRARY_PATH} - run: | - cd _build && make -j $(nproc) - shell: bash - - name: test in multithreads - timeout-minutes: 20 - env: - NEBULA_DEP_BIN: /opt/nebula/third-party/bin - LIBRARY_PATH: /usr/lib/x86_64-linux-gnu:/lib/x86_64-linux-gnu:${LIBRARY_PATH} - run: | - cd _build - ${NEBULA_DEP_BIN}/ctest -j $(nproc) --output-on-failure - shell: bash - - name: test in singlethread - if: failure() - timeout-minutes: 40 - env: - NEBULA_DEP_BIN: /opt/nebula/third-party/bin - LIBRARY_PATH: /usr/lib/x86_64-linux-gnu:/lib/x86_64-linux-gnu:${LIBRARY_PATH} - run: | - cd _build - ${NEBULA_DEP_BIN}/ctest --output-on-failure - shell: bash - build-clang: - name: build-clang - runs-on: ubuntu-latest - strategy: - matrix: - tag: - - ubuntu1604 - - ubuntu1804 - container: - image: vesoft/nebula-dev:${{ matrix.tag }} - steps: - - uses: actions/checkout@v1 + mkdir -p ${{ github.workspace }}/.cache + sudo mount -t tmpfs -o size=1G tmpfs ${{ github.workspace }}/.cache + - uses: actions/cache@v1 with: - fetch-depth: 1 - - name: cmake - env: - NEBULA_DEP_BIN: /opt/nebula/third-party/bin - LIBRARY_PATH: /usr/lib/x86_64-linux-gnu:/lib/x86_64-linux-gnu:${LIBRARY_PATH} - run: | - mkdir _build && cd _build - ${NEBULA_DEP_BIN}/cmake -DCMAKE_CXX_COMPILER=clang++-8 -DCMAKE_C_COMPILER=clang-8 -DENABLE_ASAN=on -DENABLE_UBSAN=on .. - shell: bash - - name: make - env: - LIBRARY_PATH: /usr/lib/x86_64-linux-gnu:/lib/x86_64-linux-gnu:${LIBRARY_PATH} - run: | - cd _build && make -j $(nproc) - shell: bash - - name: test in multithreads - timeout-minutes: 20 - env: - NEBULA_DEP_BIN: /opt/nebula/third-party/bin - LIBRARY_PATH: /usr/lib/x86_64-linux-gnu:/lib/x86_64-linux-gnu:${LIBRARY_PATH} - run: | - cd _build - ${NEBULA_DEP_BIN}/ctest -j $(nproc) --output-on-failure - shell: bash - - name: test in singlethread - if: failure() - timeout-minutes: 40 - env: - NEBULA_DEP_BIN: /opt/nebula/third-party/bin - LIBRARY_PATH: /usr/lib/x86_64-linux-gnu:/lib/x86_64-linux-gnu:${LIBRARY_PATH} - run: | - cd _build - ${NEBULA_DEP_BIN}/ctest --output-on-failure - shell: bash - + path: ${{ github.workspace }}/.cache/ccache + key: ${{ matrix.tag }}-${{ matrix.compiler }}-${{ hashFiles('**/CMakeLists.txt') }} + restore-keys: | + ${{ matrix.tag }}-${{ matrix.compiler }}- + - name: Build and test + timeout-minutes: 80 + run: | + docker run --rm \ + -v ${{ github.workspace }}:/home/nebula \ + -e CCACHE_DIR=/home/nebula/.cache/ccache \ + --entrypoint ./ci/scripts/build-and-test-${{ matrix.compiler }}.sh \ + vesoft/nebula-dev:${{ matrix.tag }} diff --git a/.gitignore b/.gitignore index e33d1fc205a..5019ebaace5 100644 --- a/.gitignore +++ b/.gitignore @@ -9,8 +9,9 @@ _build.log _install install_manifest.txt -# ccls +# lsp .ccls +.ccls-cache compile_commands.json src/common/base/Base.h.gch @@ -37,3 +38,4 @@ pids/ cmake-build-debug/ cmake-build-release/ .vscode/ +.ccache/ diff --git a/README.md b/README.md index 6893a6eaa00..f9f650beb71 100644 --- a/README.md +++ b/README.md @@ -7,7 +7,7 @@ build and test workflow - + build docker image workflow diff --git a/ci/scripts/build-and-test-clang.sh b/ci/scripts/build-and-test-clang.sh new file mode 100755 index 00000000000..6bef8d4d373 --- /dev/null +++ b/ci/scripts/build-and-test-clang.sh @@ -0,0 +1,17 @@ +#!/usr/bin/env bash +# +# Copyright (c) 2019 vesoft inc. All rights reserved. +# +# This source code is licensed under Apache 2.0 License, +# attached with Common Clause Condition 1.0, found in the LICENSES directory. + +set -ex + +export NEBULA_DEP_BIN=/opt/nebula/third-party/bin +export LIBRARY_PATH=/usr/lib/x86_64-linux-gnu:/lib/x86_64-linux-gnu:${LIBRARY_PATH} + +mkdir -p build && cd build + +${NEBULA_DEP_BIN}/cmake -DCMAKE_CXX_COMPILER=clang++-8 -DCMAKE_C_COMPILER=clang-8 -DENABLE_ASAN=on -DENABLE_UBSAN=on .. +make -j $(nproc) +${NEBULA_DEP_BIN}/ctest -j $(nproc) --output-on-failure diff --git a/ci/scripts/build-and-test-gcc.sh b/ci/scripts/build-and-test-gcc.sh new file mode 100755 index 00000000000..a4f73f5b2e2 --- /dev/null +++ b/ci/scripts/build-and-test-gcc.sh @@ -0,0 +1,17 @@ +#!/usr/bin/env bash +# +# Copyright (c) 2019 vesoft inc. All rights reserved. +# +# This source code is licensed under Apache 2.0 License, +# attached with Common Clause Condition 1.0, found in the LICENSES directory. + +set -ex + +export NEBULA_DEP_BIN=/opt/nebula/third-party/bin +export LIBRARY_PATH=/usr/lib/x86_64-linux-gnu:/lib/x86_64-linux-gnu:${LIBRARY_PATH} + +mkdir -p build && cd build + +${NEBULA_DEP_BIN}/cmake -DCMAKE_C_COMPILER=${NEBULA_DEP_BIN}/gcc -DCMAKE_CXX_COMPILER=${NEBULA_DEP_BIN}/g++ -DCMAKE_BUILD_TYPE=Release .. +make -j $(nproc) +${NEBULA_DEP_BIN}/ctest -j $(nproc) --output-on-failure diff --git a/docker/Dockerfile.graphd b/docker/Dockerfile.graphd index eadfb6dcae1..6e73b53f451 100644 --- a/docker/Dockerfile.graphd +++ b/docker/Dockerfile.graphd @@ -19,8 +19,4 @@ RUN rpm -ivh *.rpm \ EXPOSE 3699 13000 13002 -ENTRYPOINT ["./bin/nebula-graphd", \ - "--flagfile=./etc/nebula-graphd.conf", \ - "--daemonize=false", \ - "--v=0", \ - "--minloglevel=2"] +ENTRYPOINT ["./bin/nebula-graphd", "--flagfile=./etc/nebula-graphd.conf", "--daemonize=false"] diff --git a/docker/Dockerfile.metad b/docker/Dockerfile.metad index 8d8f644dc16..43e7f69d973 100644 --- a/docker/Dockerfile.metad +++ b/docker/Dockerfile.metad @@ -19,8 +19,4 @@ RUN rpm -ivh *.rpm \ EXPOSE 45500 45501 11000 11002 -ENTRYPOINT ["./bin/nebula-metad", \ - "--flagfile=./etc/nebula-metad.conf", \ - "--daemonize=false", \ - "--v=0", \ - "--minloglevel=2"] +ENTRYPOINT ["./bin/nebula-metad", "--flagfile=./etc/nebula-metad.conf", "--daemonize=false"] diff --git a/docker/Dockerfile.storaged b/docker/Dockerfile.storaged index e651904abb9..56b86355aab 100644 --- a/docker/Dockerfile.storaged +++ b/docker/Dockerfile.storaged @@ -19,8 +19,4 @@ RUN rpm -ivh *.rpm \ EXPOSE 44500 44501 12000 12002 -ENTRYPOINT ["./bin/nebula-storaged", \ - "--flagfile=./etc/nebula-storaged.conf", \ - "--daemonize=false", \ - "--v=0", \ - "--minloglevel=2"] +ENTRYPOINT ["./bin/nebula-storaged", "--flagfile=./etc/nebula-storaged.conf", "--daemonize=false"]