name: Release Debian 10 on: workflow_dispatch: schedule: - cron: "0 1 * * *" jobs: community_build: name: "Community build" runs-on: [self-hosted, Linux, X64, Debian10] env: THREADS: 24 MEMGRAPH_ENTERPRISE_LICENSE: ${{ secrets.MEMGRAPH_ENTERPRISE_LICENSE }} MEMGRAPH_ORGANIZATION_NAME: ${{ secrets.MEMGRAPH_ORGANIZATION_NAME }} timeout-minutes: 960 steps: - name: Set up repository uses: actions/checkout@v2 with: # Number of commits to fetch. `0` indicates all history for all # branches and tags. (default: 1) fetch-depth: 0 - name: Build community binaries run: | # Activate toolchain. source /opt/toolchain-v3/activate # Initialize dependencies. ./init # Build community binaries. cd build cmake -DCMAKE_BUILD_TYPE=release -DMG_ENTERPRISE=OFF .. make -j$THREADS - name: Create community DEB package run: | # Activate toolchain. source /opt/toolchain-v3/activate cd build # create mgconsole # we use the -B to force the build make -j$THREADS -B mgconsole # Create community DEB package. mkdir output && cd output cpack -G DEB --config ../CPackConfig.cmake - name: Save community DEB package uses: actions/upload-artifact@v2 with: name: "Community DEB package" path: build/output/memgraph*.deb - name: Run unit tests run: | # Activate toolchain. source /opt/toolchain-v3/activate # Run unit tests. cd build ctest -R memgraph__unit --output-on-failure - name: Run stress test (plain) run: | cd tests/stress ./continuous_integration - name: Run stress test (large) run: | cd tests/stress ./continuous_integration --large-dataset coverage_build: name: "Coverage build" runs-on: [self-hosted, Linux, X64, Debian10] env: THREADS: 24 MEMGRAPH_ENTERPRISE_LICENSE: ${{ secrets.MEMGRAPH_ENTERPRISE_LICENSE }} MEMGRAPH_ORGANIZATION_NAME: ${{ secrets.MEMGRAPH_ORGANIZATION_NAME }} steps: - name: Set up repository uses: actions/checkout@v2 with: # Number of commits to fetch. `0` indicates all history for all # branches and tags. (default: 1) fetch-depth: 0 - name: Build coverage binaries run: | # Activate toolchain. source /opt/toolchain-v3/activate # Initialize dependencies. ./init # Build coverage binaries. cd build cmake -DTEST_COVERAGE=ON .. make -j$THREADS memgraph__unit - name: Run unit tests run: | # Activate toolchain. source /opt/toolchain-v3/activate # Run unit tests. cd build ctest -R memgraph__unit --output-on-failure - name: Compute code coverage run: | # Activate toolchain. source /opt/toolchain-v3/activate # Compute code coverage. cd tools/github ./coverage_convert # Package code coverage. cd generated tar -czf code_coverage.tar.gz coverage.json html report.json summary.rmu - name: Save code coverage uses: actions/upload-artifact@v2 with: name: "Code coverage" path: tools/github/generated/code_coverage.tar.gz debug_build: name: "Debug build" runs-on: [self-hosted, Linux, X64, Debian10] env: THREADS: 24 MEMGRAPH_ENTERPRISE_LICENSE: ${{ secrets.MEMGRAPH_ENTERPRISE_LICENSE }} MEMGRAPH_ORGANIZATION_NAME: ${{ secrets.MEMGRAPH_ORGANIZATION_NAME }} steps: - name: Set up repository uses: actions/checkout@v2 with: # Number of commits to fetch. `0` indicates all history for all # branches and tags. (default: 1) fetch-depth: 0 - name: Build debug binaries run: | # Activate toolchain. source /opt/toolchain-v3/activate # Initialize dependencies. ./init # Build debug binaries. cd build cmake .. make -j$THREADS - name: Run leftover CTest tests run: | # Activate toolchain. source /opt/toolchain-v3/activate # Run leftover CTest tests (all except unit and benchmark tests). cd build ctest -E "(memgraph__unit|memgraph__benchmark)" --output-on-failure - name: Run drivers tests run: | ./tests/drivers/run.sh - name: Run integration tests run: | cd tests/integration for name in *; do if [ ! -d $name ]; then continue; fi pushd $name >/dev/null echo "Running: $name" if [ -x prepare.sh ]; then ./prepare.sh fi if [ -x runner.py ]; then ./runner.py elif [ -x runner.sh ]; then ./runner.sh fi echo popd >/dev/null done - name: Run cppcheck and clang-format run: | # Activate toolchain. source /opt/toolchain-v3/activate # Run cppcheck and clang-format. cd tools/github ./cppcheck_and_clang_format diff - name: Save cppcheck and clang-format errors uses: actions/upload-artifact@v2 with: name: "Code coverage" path: tools/github/cppcheck_and_clang_format.txt release_build: name: "Release build" runs-on: [self-hosted, Linux, X64, Debian10] env: THREADS: 24 MEMGRAPH_ENTERPRISE_LICENSE: ${{ secrets.MEMGRAPH_ENTERPRISE_LICENSE }} MEMGRAPH_ORGANIZATION_NAME: ${{ secrets.MEMGRAPH_ORGANIZATION_NAME }} timeout-minutes: 960 steps: - name: Set up repository uses: actions/checkout@v2 with: # Number of commits to fetch. `0` indicates all history for all # branches and tags. (default: 1) fetch-depth: 0 - name: Build release binaries run: | # Activate toolchain. source /opt/toolchain-v3/activate # Initialize dependencies. ./init # Build release binaries. cd build cmake -DCMAKE_BUILD_TYPE=release .. make -j$THREADS - name: Create enterprise DEB package run: | # Activate toolchain. source /opt/toolchain-v3/activate cd build # create mgconsole # we use the -B to force the build make -j$THREADS -B mgconsole # Create enterprise DEB package. mkdir output && cd output cpack -G DEB --config ../CPackConfig.cmake - name: Save enterprise DEB package uses: actions/upload-artifact@v2 with: name: "Enterprise DEB package" path: build/output/memgraph*.deb - name: Run micro benchmark tests run: | # Activate toolchain. source /opt/toolchain-v3/activate # Run micro benchmark tests. cd build # The `eval` benchmark needs a large stack limit. ulimit -s 262144 ctest -R memgraph__benchmark -V - name: Run macro benchmark tests run: | cd tests/macro_benchmark ./harness QuerySuite MemgraphRunner \ --groups aggregation 1000_create unwind_create dense_expand match \ --no-strict - name: Run parallel macro benchmark tests run: | cd tests/macro_benchmark ./harness QueryParallelSuite MemgraphRunner \ --groups aggregation_parallel create_parallel bfs_parallel \ --num-database-workers 9 --num-clients-workers 30 \ --no-strict - name: Run GQL Behave tests run: | cd tests/gql_behave ./continuous_integration - name: Save quality assurance status uses: actions/upload-artifact@v2 with: name: "GQL Behave Status" path: | tests/gql_behave/gql_behave_status.csv tests/gql_behave/gql_behave_status.html - name: Run e2e tests run: | # TODO(gitbuda): Setup mgclient and pymgclient properly. cd tests ./setup.sh source ve3/bin/activate cd e2e LD_LIBRARY_PATH=$LD_LIBRARY_PATH:../../libs/mgclient/lib python runner.py --workloads-root-directory . - name: Run stress test (plain) run: | cd tests/stress ./continuous_integration - name: Run stress test (SSL) run: | cd tests/stress ./continuous_integration --use-ssl - name: Run stress test (large) run: | cd tests/stress ./continuous_integration --large-dataset - name: Run durability test (plain) run: | cd tests/stress source ve3/bin/activate python3 durability --num-steps 5 - name: Run durability test (large) run: | cd tests/stress source ve3/bin/activate python3 durability --num-steps 20 release_jepsen_test: name: "Release Jepsen Test" runs-on: [self-hosted, Linux, X64, Debian10, JepsenControl] env: THREADS: 24 MEMGRAPH_ENTERPRISE_LICENSE: ${{ secrets.MEMGRAPH_ENTERPRISE_LICENSE }} MEMGRAPH_ORGANIZATION_NAME: ${{ secrets.MEMGRAPH_ORGANIZATION_NAME }} timeout-minutes: 60 steps: - name: Set up repository uses: actions/checkout@v2 with: # Number of commits to fetch. `0` indicates all history for all # branches and tags. (default: 1) fetch-depth: 0 - name: Build release binaries run: | # Activate toolchain. source /opt/toolchain-v3/activate # Initialize dependencies. ./init # Build only memgraph release binary. cd build cmake -DCMAKE_BUILD_TYPE=release .. make -j$THREADS memgraph - name: Run Jepsen tests run: | cd tests/jepsen ./run.sh test --binary ../../build/memgraph --run-args "test-all --node-configs resources/node-config.edn" --ignore-run-stdout-logs --ignore-run-stderr-logs - name: Save Jepsen report uses: actions/upload-artifact@v2 if: ${{ always() }} with: name: "Jepsen Report" path: tests/jepsen/Jepsen.tar.gz