name: Testflow-mgbuild concurrency: group: ${{ github.head_ref || github.sha }} cancel-in-progress: true on: # UNCOMMENT THIS BEFORE MERGE # pull_request: # paths-ignore: # - "docs/**" # - "**/*.md" # - ".clang-format" # - "CODEOWNERS" # - "licenses/*" jobs: community_build: name: "Community build" runs-on: [self-hosted, deadpool] env: THREADS: 24 MEMGRAPH_ENTERPRISE_LICENSE: ${{ secrets.MEMGRAPH_ENTERPRISE_LICENSE }} MEMGRAPH_ORGANIZATION_NAME: ${{ secrets.MEMGRAPH_ORGANIZATION_NAME }} OS: debian-11 TOOLCHAIN: v5 ARCH: amd BUILD_TYPE: RelWithDebInfo steps: - name: Set up repository uses: actions/checkout@v4 with: # Number of commits to fetch. `0` indicates all history for all # branches and tags. (default: 1) fetch-depth: 0 - name: Spin up mgbuild container run: | ./release/package/run2.sh \ --toolchain $TOOLCHAIN \ --os $OS \ --arch $ARCH \ run - name: Build release binaries run: | ./release/package/run2.sh \ --toolchain $TOOLCHAIN \ --os $OS \ --arch $ARCH \ --build-type $BUILD_TYPE \ --threads $THREADS \ build-memgraph --community - name: Run unit tests run: | ./release/package/run2.sh \ --toolchain $TOOLCHAIN \ --os $OS \ --arch $ARCH \ --threads $THREADS \ --enterprise-license $MEMGRAPH_ENTERPRISE_LICENSE \ --organization-name $MEMGRAPH_ORGANIZATION_NAME \ test-memgraph unit - name: Stop mgbuild container if: always() run: | ./release/package/run2.sh \ --toolchain $TOOLCHAIN \ --os $OS \ --arch $ARCH \ stop --remove debug_build: name: "Debug build" runs-on: [self-hosted, hulk] env: THREADS: 24 MEMGRAPH_ENTERPRISE_LICENSE: ${{ secrets.MEMGRAPH_ENTERPRISE_LICENSE }} MEMGRAPH_ORGANIZATION_NAME: ${{ secrets.MEMGRAPH_ORGANIZATION_NAME }} OS: debian-11 TOOLCHAIN: v5 ARCH: amd BUILD_TYPE: Debug steps: - name: Set up repository uses: actions/checkout@v4 with: # Number of commits to fetch. `0` indicates all history for all # branches and tags. (default: 1) fetch-depth: 0 - name: Spin up mgbuild container run: | ./release/package/run2.sh \ --toolchain $TOOLCHAIN \ --os $OS \ --arch $ARCH \ run - name: Build release binaries run: | ./release/package/run2.sh \ --toolchain $TOOLCHAIN \ --os $OS \ --arch $ARCH \ --build-type $BUILD_TYPE \ --threads $THREADS \ build-memgraph - name: Run leftover CTest tests run: | ./release/package/run2.sh \ --toolchain $TOOLCHAIN \ --os $OS \ --arch $ARCH \ --threads $THREADS \ --enterprise-license $MEMGRAPH_ENTERPRISE_LICENSE \ --organization-name $MEMGRAPH_ORGANIZATION_NAME \ test-memgraph leftover-CTest - name: Run drivers tests run: | ./release/package/run2.sh \ --toolchain $TOOLCHAIN \ --os $OS \ --arch $ARCH \ --threads $THREADS \ --enterprise-license $MEMGRAPH_ENTERPRISE_LICENSE \ --organization-name $MEMGRAPH_ORGANIZATION_NAME \ test-memgraph drivers - name: Run integration tests run: | ./release/package/run2.sh \ --toolchain $TOOLCHAIN \ --os $OS \ --arch $ARCH \ --threads $THREADS \ --enterprise-license $MEMGRAPH_ENTERPRISE_LICENSE \ --organization-name $MEMGRAPH_ORGANIZATION_NAME \ test-memgraph integration - name: Run cppcheck and clang-format run: | ./release/package/run2.sh \ --toolchain $TOOLCHAIN \ --os $OS \ --arch $ARCH \ --threads $THREADS \ --enterprise-license $MEMGRAPH_ENTERPRISE_LICENSE \ --organization-name $MEMGRAPH_ORGANIZATION_NAME \ test-memgraph cppcheck-and-clang-format - name: Save cppcheck and clang-format errors uses: actions/upload-artifact@v4 with: name: "Code coverage(Debug build)" path: tools/github/cppcheck_and_clang_format.txt - name: Stop mgbuild container if: always() run: | ./release/package/run2.sh \ --toolchain $TOOLCHAIN \ --os $OS \ --arch $ARCH \ stop --remove release_build: name: "Release build" runs-on: [self-hosted, black-widow] env: THREADS: 24 MEMGRAPH_ENTERPRISE_LICENSE: ${{ secrets.MEMGRAPH_ENTERPRISE_LICENSE }} MEMGRAPH_ORGANIZATION_NAME: ${{ secrets.MEMGRAPH_ORGANIZATION_NAME }} OS: debian-11 TOOLCHAIN: v5 ARCH: amd BUILD_TYPE: Release steps: - name: Set up repository uses: actions/checkout@v4 with: # Number of commits to fetch. `0` indicates all history for all # branches and tags. (default: 1) fetch-depth: 0 - name: Spin up mgbuild container run: | ./release/package/run2.sh \ --toolchain $TOOLCHAIN \ --os $OS \ --arch $ARCH \ run - name: Build release binaries run: | ./release/package/run2.sh \ --toolchain $TOOLCHAIN \ --os $OS \ --arch $ARCH \ --build-type $BUILD_TYPE \ --threads $THREADS \ build-memgraph - name: Run GQL Behave tests run: | ./release/package/run2.sh \ --toolchain $TOOLCHAIN \ --os $OS \ --arch $ARCH \ --enterprise-license $MEMGRAPH_ENTERPRISE_LICENSE \ --organization-name $MEMGRAPH_ORGANIZATION_NAME \ test-memgraph gql-behave - name: Save quality assurance status uses: actions/upload-artifact@v4 with: name: "GQL Behave Status" path: | tests/gql_behave/gql_behave_status.csv tests/gql_behave/gql_behave_status.html - name: Run unit tests run: | ./release/package/run2.sh \ --toolchain $TOOLCHAIN \ --os $OS \ --arch $ARCH \ --threads $THREADS \ --enterprise-license $MEMGRAPH_ENTERPRISE_LICENSE \ --organization-name $MEMGRAPH_ORGANIZATION_NAME \ test-memgraph unit # - name: Ensure Kafka and Pulsar are up # run: | # cd tests/e2e/streams/kafka # docker-compose up -d # cd ../pulsar # docker-compose up -d # # - name: Run e2e tests # run: | # cd tests # ./setup.sh /opt/toolchain-v4/activate # source ve3/bin/activate_e2e # cd e2e # ./run.sh # # - name: Ensure Kafka and Pulsar are down # run: | # cd tests/e2e/streams/kafka # docker-compose down # cd ../pulsar # docker-compose down - name: Run stress test (plain) run: | ./release/package/run2.sh \ --toolchain $TOOLCHAIN \ --os $OS \ --arch $ARCH \ --enterprise-license $MEMGRAPH_ENTERPRISE_LICENSE \ --organization-name $MEMGRAPH_ORGANIZATION_NAME \ test-memgraph stress-plain - name: Run stress test (SSL) run: | ./release/package/run2.sh \ --toolchain $TOOLCHAIN \ --os $OS \ --arch $ARCH \ --enterprise-license $MEMGRAPH_ENTERPRISE_LICENSE \ --organization-name $MEMGRAPH_ORGANIZATION_NAME \ test-memgraph stress-ssl - name: Run durability test run: | ./release/package/run2.sh \ --toolchain $TOOLCHAIN \ --os $OS \ --arch $ARCH \ --enterprise-license $MEMGRAPH_ENTERPRISE_LICENSE \ --organization-name $MEMGRAPH_ORGANIZATION_NAME \ test-memgraph durability - name: Create enterprise DEB package run: | ./release/package/run2.sh \ --toolchain $TOOLCHAIN \ --os $OS \ --arch $ARCH \ --enterprise-license $MEMGRAPH_ENTERPRISE_LICENSE \ --organization-name $MEMGRAPH_ORGANIZATION_NAME \ package-memgraph mkdir output ./release/package/run2.sh \ --toolchain $TOOLCHAIN \ --os $OS \ --arch $ARCH \ copy - name: Save enterprise DEB package uses: actions/upload-artifact@v4 with: name: "Enterprise DEB package" path: build/output/${{ env.OS }}/memgraph*.deb # # - name: Save test data # uses: actions/upload-artifact@v4 # if: always() # with: # name: "Test data(Release build)" # path: | # # multiple paths could be defined # build/logs - name: Stop mgbuild container if: always() run: | ./release/package/run2.sh \ --toolchain $TOOLCHAIN \ --os $OS \ --arch $ARCH \ stop --remove release_benchmarks: name: "Release benchmarks" # Add Gen7 runs-on: [self-hosted, magneto] env: THREADS: 24 MEMGRAPH_ENTERPRISE_LICENSE: ${{ secrets.MEMGRAPH_ENTERPRISE_LICENSE }} MEMGRAPH_ORGANIZATION_NAME: ${{ secrets.MEMGRAPH_ORGANIZATION_NAME }} OS: debian-11 TOOLCHAIN: v5 ARCH: amd BUILD_TYPE: Release steps: - name: Set up repository uses: actions/checkout@v4 with: # Number of commits to fetch. `0` indicates all history for all # branches and tags. (default: 1) fetch-depth: 0 - name: Spin up mgbuild container run: | ./release/package/run2.sh \ --toolchain $TOOLCHAIN \ --os $OS \ --arch $ARCH \ run - name: Build release binaries run: | ./release/package/run2.sh \ --toolchain $TOOLCHAIN \ --os $OS \ --arch $ARCH \ --build-type $BUILD_TYPE \ --threads $THREADS \ build-memgraph - name: Run macro benchmarks run: | ./release/package/run2.sh \ --toolchain $TOOLCHAIN \ --os $OS \ --arch $ARCH \ --enterprise-license $MEMGRAPH_ENTERPRISE_LICENSE \ --organization-name $MEMGRAPH_ORGANIZATION_NAME \ test-memgraph macro-benchmark - name: Get branch name (merge) if: github.event_name != 'pull_request' shell: bash run: echo "BRANCH_NAME=$(echo ${GITHUB_REF#refs/heads/} | tr / -)" >> $GITHUB_ENV - name: Get branch name (pull request) if: github.event_name == 'pull_request' shell: bash run: echo "BRANCH_NAME=$(echo ${GITHUB_HEAD_REF} | tr / -)" >> $GITHUB_ENV - name: Upload macro benchmark results run: | ./release/package/run2.sh \ --toolchain $TOOLCHAIN \ --os $OS \ --arch $ARCH \ --enterprise-license $MEMGRAPH_ENTERPRISE_LICENSE \ --organization-name $MEMGRAPH_ORGANIZATION_NAME \ test-memgraph upload-to-bench-graph \ --benchmark-name "macro_benchmark" \ --benchmark-results "../../tests/macro_benchmark/.harness_summary" \ --github-run-id "${{ github.run_id }}" \ --github-run-number "${{ github.run_number }}" \ --head-branch-name "${{ env.BRANCH_NAME }}" # TODO (andi) No need for path flags and for --disk-storage and --in-memory-analytical - name: Run mgbench run: | ./release/package/run2.sh \ --toolchain $toolchain \ --os $os \ --arch $arch \ --enterprise-license $memgraph_enterprise_license \ --organization-name $memgraph_organization_name \ test-memgraph mgbench - name: Upload mgbench results run: | ./release/package/run2.sh \ --toolchain $TOOLCHAIN \ --os $OS \ --arch $ARCH \ --enterprise-license $MEMGRAPH_ENTERPRISE_LICENSE \ --organization-name $MEMGRAPH_ORGANIZATION_NAME \ test-memgraph upload-to-bench-graph \ --benchmark-name "mgbench" \ --benchmark-results "../../tests/mgbench/benchmark_result.json" \ --github-run-id "${{ github.run_id }}" \ --github-run-number "${{ github.run_number }}" \ --head-branch-name "${{ env.BRANCH_NAME }}" - name: Stop mgbuild container if: always() run: | ./release/package/run2.sh \ --toolchain $TOOLCHAIN \ --os $OS \ --arch $ARCH \ stop --remove code_analysis: name: "Code analysis" runs-on: [self-hosted, gamora] env: THREADS: 24 MEMGRAPH_ENTERPRISE_LICENSE: ${{ secrets.MEMGRAPH_ENTERPRISE_LICENSE }} MEMGRAPH_ORGANIZATION_NAME: ${{ secrets.MEMGRAPH_ORGANIZATION_NAME }} OS: debian-11 TOOLCHAIN: v5 ARCH: amd BUILD_TYPE: Release steps: - name: Set up repository uses: actions/checkout@v4 with: # Number of commits to fetch. `0` indicates all history for all # branches and tags. (default: 1) fetch-depth: 0 - name: Spin up mgbuild container run: | ./release/package/run2.sh \ --toolchain $TOOLCHAIN \ --os $OS \ --arch $ARCH \ run # This is also needed if we want do to comparison against other branches # See https://github.community/t/checkout-code-fails-when-it-runs-lerna-run-test-since-master/17920 - name: Fetch all history for all tags and branches run: git fetch - name: Initialize deps run: | ./release/package/run2.sh \ --toolchain $TOOLCHAIN \ --os $OS \ --arch $ARCH \ --build-type $BUILD_TYPE \ --threads $THREADS \ build-memgraph --init-only - name: Set base branch if: ${{ github.event_name == 'pull_request' }} run: | echo "BASE_BRANCH=origin/${{ github.base_ref }}" >> $GITHUB_ENV - name: Set base branch # if we manually dispatch or push to master if: ${{ github.event_name != 'pull_request' }} run: | echo "BASE_BRANCH=origin/master" >> $GITHUB_ENV - name: Python code analysis run: | ./release/package/run2.sh \ --toolchain $TOOLCHAIN \ --os $OS \ --arch $ARCH \ --enterprise-license $MEMGRAPH_ENTERPRISE_LICENSE \ --organization-name $MEMGRAPH_ORGANIZATION_NAME \ test-memgraph code-analysis --base-branch "${{ env.BASE_BRANCH }}" - name: Build combined ASAN, UBSAN and coverage binaries run: | ./release/package/run2.sh \ --toolchain $TOOLCHAIN \ --os $OS \ --arch $ARCH \ --build-type $BUILD_TYPE \ --threads $THREADS \ build-memgraph --coverage --asan --ubsan # make -j$THREADS memgraph__unit - name: Run unit tests run: | ./release/package/run2.sh \ --toolchain $toolchain \ --os $os \ --arch $arch \ --enterprise-license $memgraph_enterprise_license \ --organization-name $memgraph_organization_name \ test-memgraph unit-coverage - name: Compute code coverage run: | ./release/package/run2.sh \ --toolchain $toolchain \ --os $os \ --arch $arch \ --enterprise-license $memgraph_enterprise_license \ --organization-name $memgraph_organization_name \ test-memgraph code-coverage - name: Save code coverage uses: actions/upload-artifact@v4 with: name: "Code coverage(Code analysis)" path: tools/github/generated/code_coverage.tar.gz - name: Run clang-tidy run: | ./release/package/run2.sh \ --toolchain $TOOLCHAIN \ --os $OS \ --arch $ARCH \ --threads $THREADS \ --enterprise-license $MEMGRAPH_ENTERPRISE_LICENSE \ --organization-name $MEMGRAPH_ORGANIZATION_NAME \ test-memgraph clang-tidy --base-branch "${{ env.BASE_BRANCH }}" - name: Stop mgbuild container if: always() run: | ./release/package/run2.sh \ --toolchain $TOOLCHAIN \ --os $OS \ --arch $ARCH \ stop --remove