Run CI in mgbuilder containers (#1749)
* Update deployment files for mgbuilders because of toolchain upgrade * Fix args parameter in builder yaml files * Add fedora 38, 39 and rockylinux 9.3 mgbuilder Dockerfiles * Change format of ARG TOOLCHAIN_VERSION from toolchain-vX to vX * Add function to check supported arch, build type, os and toolchain * Add options to init subcommand * Add image names to mgbuilders * Add v2 of the run.sh script * Add testing to run2.sh * Add option for threads --thread * Add options for enterprise license and organization name * Make stop mgbuild container step run always * Add --ci flag to init script * Move init conditionals under build-memgraph flags * Add --community flag to build-memgraph * Change target dir inside mgbuild container * Add node fix to debian 11, ubuntu 20.04 and ubuntu 22.04 * rm memgraph repo after installing deps * Add mg user in Dockerfile * Add step to install rust on all OSs * Chown files copied into mgbuild container * Add e2e tests * Add jepsen test * Bugfix: Using reference in a callback * Bugfix: Broad target for e2e tests * Up db info test limit * Disable e2e streams tests * Fix default THREADS * Prioretize docker compose over docker-compose * Improve selection between docker compose and docker-compose * Install PyYAML as mg user * Fix doxygen install for rocky linux 9.3 * Fix rocky-9.3 environment script to properly install sbcl * Rename all rocky-9 mentions to rocky-9.3 * Add mgdeps-cache and benchgraph-api hostnames to mgbuild images * Add logic to pull mgbuild image if missing * Fix build errors on toolchain-v5 (#1806) * Rename run2 script, remove run script, add small features to mgbuild.sh * Add --no-copy flag to build-memgraph to resolve TODO * Add timeouts to diff jobs * Fix asio flaky clone, try mgdeps-cache first --------- Co-authored-by: Andreja Tonev <andreja.tonev@memgraph.io> Co-authored-by: Ante Pušić <ante.f.pusic@gmail.com> Co-authored-by: antoniofilipovic <filipovicantonio1998@gmail.com>
This commit is contained in:
parent
24f8a14b43
commit
b0cdcd3483
@ -64,8 +64,8 @@ Checks: '*,
|
|||||||
-readability-identifier-length,
|
-readability-identifier-length,
|
||||||
-misc-no-recursion,
|
-misc-no-recursion,
|
||||||
-concurrency-mt-unsafe,
|
-concurrency-mt-unsafe,
|
||||||
-bugprone-easily-swappable-parameters'
|
-bugprone-easily-swappable-parameters,
|
||||||
|
-bugprone-unchecked-optional-access'
|
||||||
WarningsAsErrors: ''
|
WarningsAsErrors: ''
|
||||||
HeaderFilterRegex: 'src/.*'
|
HeaderFilterRegex: 'src/.*'
|
||||||
AnalyzeTemporaryDtors: false
|
AnalyzeTemporaryDtors: false
|
||||||
|
553
.github/workflows/diff.yaml
vendored
553
.github/workflows/diff.yaml
vendored
@ -4,10 +4,6 @@ concurrency:
|
|||||||
cancel-in-progress: true
|
cancel-in-progress: true
|
||||||
|
|
||||||
on:
|
on:
|
||||||
push:
|
|
||||||
branches:
|
|
||||||
- master
|
|
||||||
workflow_dispatch:
|
|
||||||
pull_request:
|
pull_request:
|
||||||
paths-ignore:
|
paths-ignore:
|
||||||
- "docs/**"
|
- "docs/**"
|
||||||
@ -19,11 +15,16 @@ on:
|
|||||||
jobs:
|
jobs:
|
||||||
community_build:
|
community_build:
|
||||||
name: "Community build"
|
name: "Community build"
|
||||||
runs-on: [self-hosted, Linux, X64, Diff]
|
runs-on: [self-hosted, Linux, X64, DockerMgBuild]
|
||||||
|
timeout-minutes: 60
|
||||||
env:
|
env:
|
||||||
THREADS: 24
|
THREADS: 24
|
||||||
MEMGRAPH_ENTERPRISE_LICENSE: ${{ secrets.MEMGRAPH_ENTERPRISE_LICENSE }}
|
MEMGRAPH_ENTERPRISE_LICENSE: ${{ secrets.MEMGRAPH_ENTERPRISE_LICENSE }}
|
||||||
MEMGRAPH_ORGANIZATION_NAME: ${{ secrets.MEMGRAPH_ORGANIZATION_NAME }}
|
MEMGRAPH_ORGANIZATION_NAME: ${{ secrets.MEMGRAPH_ORGANIZATION_NAME }}
|
||||||
|
OS: debian-11
|
||||||
|
TOOLCHAIN: v5
|
||||||
|
ARCH: amd
|
||||||
|
BUILD_TYPE: RelWithDebInfo
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
- name: Set up repository
|
- name: Set up repository
|
||||||
@ -33,35 +34,56 @@ jobs:
|
|||||||
# branches and tags. (default: 1)
|
# branches and tags. (default: 1)
|
||||||
fetch-depth: 0
|
fetch-depth: 0
|
||||||
|
|
||||||
- name: Build community binaries
|
- name: Spin up mgbuild container
|
||||||
run: |
|
run: |
|
||||||
# Activate toolchain.
|
./release/package/mgbuild.sh \
|
||||||
source /opt/toolchain-v4/activate
|
--toolchain $TOOLCHAIN \
|
||||||
|
--os $OS \
|
||||||
|
--arch $ARCH \
|
||||||
|
run
|
||||||
|
|
||||||
# Initialize dependencies.
|
- name: Build release binaries
|
||||||
./init
|
run: |
|
||||||
|
./release/package/mgbuild.sh \
|
||||||
# Build community binaries.
|
--toolchain $TOOLCHAIN \
|
||||||
cd build
|
--os $OS \
|
||||||
cmake -DCMAKE_BUILD_TYPE=RelWithDebInfo -DMG_ENTERPRISE=OFF ..
|
--arch $ARCH \
|
||||||
make -j$THREADS
|
--build-type $BUILD_TYPE \
|
||||||
|
--threads $THREADS \
|
||||||
|
build-memgraph --community
|
||||||
|
|
||||||
- name: Run unit tests
|
- name: Run unit tests
|
||||||
run: |
|
run: |
|
||||||
# Activate toolchain.
|
./release/package/mgbuild.sh \
|
||||||
source /opt/toolchain-v4/activate
|
--toolchain $TOOLCHAIN \
|
||||||
|
--os $OS \
|
||||||
|
--arch $ARCH \
|
||||||
|
--threads $THREADS \
|
||||||
|
--enterprise-license $MEMGRAPH_ENTERPRISE_LICENSE \
|
||||||
|
--organization-name $MEMGRAPH_ORGANIZATION_NAME \
|
||||||
|
test-memgraph unit
|
||||||
|
|
||||||
# Run unit tests.
|
- name: Stop mgbuild container
|
||||||
cd build
|
if: always()
|
||||||
ctest -R memgraph__unit --output-on-failure -j$THREADS
|
run: |
|
||||||
|
./release/package/mgbuild.sh \
|
||||||
|
--toolchain $TOOLCHAIN \
|
||||||
|
--os $OS \
|
||||||
|
--arch $ARCH \
|
||||||
|
stop --remove
|
||||||
|
|
||||||
code_analysis:
|
code_analysis:
|
||||||
name: "Code analysis"
|
name: "Code analysis"
|
||||||
runs-on: [self-hosted, Linux, X64, Diff]
|
runs-on: [self-hosted, Linux, X64, DockerMgBuild]
|
||||||
|
timeout-minutes: 60
|
||||||
env:
|
env:
|
||||||
THREADS: 24
|
THREADS: 24
|
||||||
MEMGRAPH_ENTERPRISE_LICENSE: ${{ secrets.MEMGRAPH_ENTERPRISE_LICENSE }}
|
MEMGRAPH_ENTERPRISE_LICENSE: ${{ secrets.MEMGRAPH_ENTERPRISE_LICENSE }}
|
||||||
MEMGRAPH_ORGANIZATION_NAME: ${{ secrets.MEMGRAPH_ORGANIZATION_NAME }}
|
MEMGRAPH_ORGANIZATION_NAME: ${{ secrets.MEMGRAPH_ORGANIZATION_NAME }}
|
||||||
|
OS: debian-11
|
||||||
|
TOOLCHAIN: v5
|
||||||
|
ARCH: amd
|
||||||
|
BUILD_TYPE: Debug
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
- name: Set up repository
|
- name: Set up repository
|
||||||
@ -71,6 +93,14 @@ jobs:
|
|||||||
# branches and tags. (default: 1)
|
# branches and tags. (default: 1)
|
||||||
fetch-depth: 0
|
fetch-depth: 0
|
||||||
|
|
||||||
|
- name: Spin up mgbuild container
|
||||||
|
run: |
|
||||||
|
./release/package/mgbuild.sh \
|
||||||
|
--toolchain $TOOLCHAIN \
|
||||||
|
--os $OS \
|
||||||
|
--arch $ARCH \
|
||||||
|
run
|
||||||
|
|
||||||
# This is also needed if we want do to comparison against other branches
|
# 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
|
# 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
|
- name: Fetch all history for all tags and branches
|
||||||
@ -78,11 +108,13 @@ jobs:
|
|||||||
|
|
||||||
- name: Initialize deps
|
- name: Initialize deps
|
||||||
run: |
|
run: |
|
||||||
# Activate toolchain.
|
./release/package/mgbuild.sh \
|
||||||
source /opt/toolchain-v4/activate
|
--toolchain $TOOLCHAIN \
|
||||||
|
--os $OS \
|
||||||
# Initialize dependencies.
|
--arch $ARCH \
|
||||||
./init
|
--build-type $BUILD_TYPE \
|
||||||
|
--threads $THREADS \
|
||||||
|
build-memgraph --init-only
|
||||||
|
|
||||||
- name: Set base branch
|
- name: Set base branch
|
||||||
if: ${{ github.event_name == 'pull_request' }}
|
if: ${{ github.event_name == 'pull_request' }}
|
||||||
@ -96,45 +128,43 @@ jobs:
|
|||||||
|
|
||||||
- name: Python code analysis
|
- name: Python code analysis
|
||||||
run: |
|
run: |
|
||||||
CHANGED_FILES=$(git diff -U0 ${{ env.BASE_BRANCH }}... --name-only --diff-filter=d)
|
./release/package/mgbuild.sh \
|
||||||
for file in ${CHANGED_FILES}; do
|
--toolchain $TOOLCHAIN \
|
||||||
echo ${file}
|
--os $OS \
|
||||||
if [[ ${file} == *.py ]]; then
|
--arch $ARCH \
|
||||||
python3 -m black --check --diff ${file}
|
--enterprise-license $MEMGRAPH_ENTERPRISE_LICENSE \
|
||||||
python3 -m isort --profile black --check-only --diff ${file}
|
--organization-name $MEMGRAPH_ORGANIZATION_NAME \
|
||||||
fi
|
test-memgraph code-analysis --base-branch "${{ env.BASE_BRANCH }}"
|
||||||
done
|
|
||||||
|
|
||||||
- name: Build combined ASAN, UBSAN and coverage binaries
|
- name: Build combined ASAN, UBSAN and coverage binaries
|
||||||
run: |
|
run: |
|
||||||
# Activate toolchain.
|
./release/package/mgbuild.sh \
|
||||||
source /opt/toolchain-v4/activate
|
--toolchain $TOOLCHAIN \
|
||||||
|
--os $OS \
|
||||||
cd build
|
--arch $ARCH \
|
||||||
cmake -DTEST_COVERAGE=ON -DASAN=ON -DUBSAN=ON ..
|
--build-type $BUILD_TYPE \
|
||||||
make -j$THREADS memgraph__unit
|
--threads $THREADS \
|
||||||
|
build-memgraph --coverage --asan --ubsan
|
||||||
|
|
||||||
- name: Run unit tests
|
- name: Run unit tests
|
||||||
run: |
|
run: |
|
||||||
# Activate toolchain.
|
./release/package/mgbuild.sh \
|
||||||
source /opt/toolchain-v4/activate
|
--toolchain $TOOLCHAIN \
|
||||||
|
--os $OS \
|
||||||
# Run unit tests. It is restricted to 2 threads intentionally, because higher concurrency makes the timing related tests unstable.
|
--arch $ARCH \
|
||||||
cd build
|
--enterprise-license $MEMGRAPH_ENTERPRISE_LICENSE \
|
||||||
LSAN_OPTIONS=suppressions=$PWD/../tools/lsan.supp UBSAN_OPTIONS=halt_on_error=1 ctest -R memgraph__unit --output-on-failure -j2
|
--organization-name $MEMGRAPH_ORGANIZATION_NAME \
|
||||||
|
test-memgraph unit-coverage
|
||||||
|
|
||||||
- name: Compute code coverage
|
- name: Compute code coverage
|
||||||
run: |
|
run: |
|
||||||
# Activate toolchain.
|
./release/package/mgbuild.sh \
|
||||||
source /opt/toolchain-v4/activate
|
--toolchain $TOOLCHAIN \
|
||||||
|
--os $OS \
|
||||||
# Compute code coverage.
|
--arch $ARCH \
|
||||||
cd tools/github
|
--enterprise-license $MEMGRAPH_ENTERPRISE_LICENSE \
|
||||||
./coverage_convert
|
--organization-name $MEMGRAPH_ORGANIZATION_NAME \
|
||||||
|
test-memgraph code-coverage
|
||||||
# Package code coverage.
|
|
||||||
cd generated
|
|
||||||
tar -czf code_coverage.tar.gz coverage.json html report.json summary.rmu
|
|
||||||
|
|
||||||
- name: Save code coverage
|
- name: Save code coverage
|
||||||
uses: actions/upload-artifact@v4
|
uses: actions/upload-artifact@v4
|
||||||
@ -144,21 +174,36 @@ jobs:
|
|||||||
|
|
||||||
- name: Run clang-tidy
|
- name: Run clang-tidy
|
||||||
run: |
|
run: |
|
||||||
source /opt/toolchain-v4/activate
|
./release/package/mgbuild.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 }}"
|
||||||
|
|
||||||
# Restrict clang-tidy results only to the modified parts
|
- name: Stop mgbuild container
|
||||||
git diff -U0 ${{ env.BASE_BRANCH }}... -- src | ./tools/github/clang-tidy/clang-tidy-diff.py -p 1 -j $THREADS -path build -regex ".+\.cpp" | tee ./build/clang_tidy_output.txt
|
if: always()
|
||||||
|
run: |
|
||||||
# Fail if any warning is reported
|
./release/package/mgbuild.sh \
|
||||||
! cat ./build/clang_tidy_output.txt | ./tools/github/clang-tidy/grep_error_lines.sh > /dev/null
|
--toolchain $TOOLCHAIN \
|
||||||
|
--os $OS \
|
||||||
|
--arch $ARCH \
|
||||||
|
stop --remove
|
||||||
|
|
||||||
debug_build:
|
debug_build:
|
||||||
name: "Debug build"
|
name: "Debug build"
|
||||||
runs-on: [self-hosted, Linux, X64, Diff]
|
runs-on: [self-hosted, Linux, X64, DockerMgBuild]
|
||||||
|
timeout-minutes: 100
|
||||||
env:
|
env:
|
||||||
THREADS: 24
|
THREADS: 24
|
||||||
MEMGRAPH_ENTERPRISE_LICENSE: ${{ secrets.MEMGRAPH_ENTERPRISE_LICENSE }}
|
MEMGRAPH_ENTERPRISE_LICENSE: ${{ secrets.MEMGRAPH_ENTERPRISE_LICENSE }}
|
||||||
MEMGRAPH_ORGANIZATION_NAME: ${{ secrets.MEMGRAPH_ORGANIZATION_NAME }}
|
MEMGRAPH_ORGANIZATION_NAME: ${{ secrets.MEMGRAPH_ORGANIZATION_NAME }}
|
||||||
|
OS: debian-11
|
||||||
|
TOOLCHAIN: v5
|
||||||
|
ARCH: amd
|
||||||
|
BUILD_TYPE: Debug
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
- name: Set up repository
|
- name: Set up repository
|
||||||
@ -168,58 +213,95 @@ jobs:
|
|||||||
# branches and tags. (default: 1)
|
# branches and tags. (default: 1)
|
||||||
fetch-depth: 0
|
fetch-depth: 0
|
||||||
|
|
||||||
- name: Build debug binaries
|
- name: Spin up mgbuild container
|
||||||
run: |
|
run: |
|
||||||
# Activate toolchain.
|
./release/package/mgbuild.sh \
|
||||||
source /opt/toolchain-v4/activate
|
--toolchain $TOOLCHAIN \
|
||||||
|
--os $OS \
|
||||||
|
--arch $ARCH \
|
||||||
|
run
|
||||||
|
|
||||||
# Initialize dependencies.
|
- name: Build release binaries
|
||||||
./init
|
run: |
|
||||||
|
./release/package/mgbuild.sh \
|
||||||
# Build debug binaries.
|
--toolchain $TOOLCHAIN \
|
||||||
cd build
|
--os $OS \
|
||||||
cmake ..
|
--arch $ARCH \
|
||||||
make -j$THREADS
|
--build-type $BUILD_TYPE \
|
||||||
|
--threads $THREADS \
|
||||||
|
build-memgraph
|
||||||
|
|
||||||
- name: Run leftover CTest tests
|
- name: Run leftover CTest tests
|
||||||
run: |
|
run: |
|
||||||
# Activate toolchain.
|
./release/package/mgbuild.sh \
|
||||||
source /opt/toolchain-v4/activate
|
--toolchain $TOOLCHAIN \
|
||||||
|
--os $OS \
|
||||||
# Run leftover CTest tests (all except unit and benchmark tests).
|
--arch $ARCH \
|
||||||
cd build
|
--threads $THREADS \
|
||||||
ctest -E "(memgraph__unit|memgraph__benchmark)" --output-on-failure
|
--enterprise-license $MEMGRAPH_ENTERPRISE_LICENSE \
|
||||||
|
--organization-name $MEMGRAPH_ORGANIZATION_NAME \
|
||||||
|
test-memgraph leftover-CTest
|
||||||
|
|
||||||
- name: Run drivers tests
|
- name: Run drivers tests
|
||||||
run: |
|
run: |
|
||||||
./tests/drivers/run.sh
|
./release/package/mgbuild.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
|
- name: Run integration tests
|
||||||
run: |
|
run: |
|
||||||
tests/integration/run.sh
|
./release/package/mgbuild.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
|
- name: Run cppcheck and clang-format
|
||||||
run: |
|
run: |
|
||||||
# Activate toolchain.
|
./release/package/mgbuild.sh \
|
||||||
source /opt/toolchain-v4/activate
|
--toolchain $TOOLCHAIN \
|
||||||
|
--os $OS \
|
||||||
# Run cppcheck and clang-format.
|
--arch $ARCH \
|
||||||
cd tools/github
|
--threads $THREADS \
|
||||||
./cppcheck_and_clang_format diff
|
--enterprise-license $MEMGRAPH_ENTERPRISE_LICENSE \
|
||||||
|
--organization-name $MEMGRAPH_ORGANIZATION_NAME \
|
||||||
|
test-memgraph cppcheck-and-clang-format
|
||||||
|
|
||||||
- name: Save cppcheck and clang-format errors
|
- name: Save cppcheck and clang-format errors
|
||||||
uses: actions/upload-artifact@v4
|
uses: actions/upload-artifact@v4
|
||||||
with:
|
with:
|
||||||
name: "Code coverage(Debug build)"
|
name: "Code coverage(Debug build)"
|
||||||
path: tools/github/cppcheck_and_clang_format.txt
|
path: tools/github/cppcheck_and_clang_format.txt
|
||||||
|
|
||||||
|
- name: Stop mgbuild container
|
||||||
|
if: always()
|
||||||
|
run: |
|
||||||
|
./release/package/mgbuild.sh \
|
||||||
|
--toolchain $TOOLCHAIN \
|
||||||
|
--os $OS \
|
||||||
|
--arch $ARCH \
|
||||||
|
stop --remove
|
||||||
|
|
||||||
release_build:
|
release_build:
|
||||||
name: "Release build"
|
name: "Release build"
|
||||||
runs-on: [self-hosted, Linux, X64, Diff]
|
runs-on: [self-hosted, Linux, X64, DockerMgBuild]
|
||||||
|
timeout-minutes: 100
|
||||||
env:
|
env:
|
||||||
THREADS: 24
|
THREADS: 24
|
||||||
MEMGRAPH_ENTERPRISE_LICENSE: ${{ secrets.MEMGRAPH_ENTERPRISE_LICENSE }}
|
MEMGRAPH_ENTERPRISE_LICENSE: ${{ secrets.MEMGRAPH_ENTERPRISE_LICENSE }}
|
||||||
MEMGRAPH_ORGANIZATION_NAME: ${{ secrets.MEMGRAPH_ORGANIZATION_NAME }}
|
MEMGRAPH_ORGANIZATION_NAME: ${{ secrets.MEMGRAPH_ORGANIZATION_NAME }}
|
||||||
|
OS: debian-11
|
||||||
|
TOOLCHAIN: v5
|
||||||
|
ARCH: amd
|
||||||
|
BUILD_TYPE: Release
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
- name: Set up repository
|
- name: Set up repository
|
||||||
@ -229,26 +311,33 @@ jobs:
|
|||||||
# branches and tags. (default: 1)
|
# branches and tags. (default: 1)
|
||||||
fetch-depth: 0
|
fetch-depth: 0
|
||||||
|
|
||||||
|
- name: Spin up mgbuild container
|
||||||
|
run: |
|
||||||
|
./release/package/mgbuild.sh \
|
||||||
|
--toolchain $TOOLCHAIN \
|
||||||
|
--os $OS \
|
||||||
|
--arch $ARCH \
|
||||||
|
run
|
||||||
|
|
||||||
- name: Build release binaries
|
- name: Build release binaries
|
||||||
run: |
|
run: |
|
||||||
# Activate toolchain.
|
./release/package/mgbuild.sh \
|
||||||
source /opt/toolchain-v4/activate
|
--toolchain $TOOLCHAIN \
|
||||||
|
--os $OS \
|
||||||
# Initialize dependencies.
|
--arch $ARCH \
|
||||||
./init
|
--build-type $BUILD_TYPE \
|
||||||
|
--threads $THREADS \
|
||||||
# Build release binaries.
|
build-memgraph
|
||||||
cd build
|
|
||||||
cmake -DCMAKE_BUILD_TYPE=Release ..
|
|
||||||
make -j$THREADS
|
|
||||||
|
|
||||||
- name: Run GQL Behave tests
|
- name: Run GQL Behave tests
|
||||||
run: |
|
run: |
|
||||||
cd tests
|
./release/package/mgbuild.sh \
|
||||||
./setup.sh /opt/toolchain-v4/activate
|
--toolchain $TOOLCHAIN \
|
||||||
cd gql_behave
|
--os $OS \
|
||||||
./continuous_integration
|
--arch $ARCH \
|
||||||
|
--enterprise-license $MEMGRAPH_ENTERPRISE_LICENSE \
|
||||||
|
--organization-name $MEMGRAPH_ORGANIZATION_NAME \
|
||||||
|
test-memgraph gql-behave
|
||||||
|
|
||||||
- name: Save quality assurance status
|
- name: Save quality assurance status
|
||||||
uses: actions/upload-artifact@v4
|
uses: actions/upload-artifact@v4
|
||||||
@ -260,14 +349,19 @@ jobs:
|
|||||||
|
|
||||||
- name: Run unit tests
|
- name: Run unit tests
|
||||||
run: |
|
run: |
|
||||||
# Activate toolchain.
|
./release/package/mgbuild.sh \
|
||||||
source /opt/toolchain-v4/activate
|
--toolchain $TOOLCHAIN \
|
||||||
|
--os $OS \
|
||||||
# Run unit tests.
|
--arch $ARCH \
|
||||||
cd build
|
--threads $THREADS \
|
||||||
ctest -R memgraph__unit --output-on-failure -j$THREADS
|
--enterprise-license $MEMGRAPH_ENTERPRISE_LICENSE \
|
||||||
|
--organization-name $MEMGRAPH_ORGANIZATION_NAME \
|
||||||
|
test-memgraph unit
|
||||||
|
|
||||||
|
# This step will be skipped because the e2e stream tests have been disabled
|
||||||
|
# We need to fix this as soon as possible
|
||||||
- name: Ensure Kafka and Pulsar are up
|
- name: Ensure Kafka and Pulsar are up
|
||||||
|
if: false
|
||||||
run: |
|
run: |
|
||||||
cd tests/e2e/streams/kafka
|
cd tests/e2e/streams/kafka
|
||||||
docker-compose up -d
|
docker-compose up -d
|
||||||
@ -276,13 +370,17 @@ jobs:
|
|||||||
|
|
||||||
- name: Run e2e tests
|
- name: Run e2e tests
|
||||||
run: |
|
run: |
|
||||||
cd tests
|
./release/package/mgbuild.sh \
|
||||||
./setup.sh /opt/toolchain-v4/activate
|
--toolchain $TOOLCHAIN \
|
||||||
source ve3/bin/activate_e2e
|
--os $OS \
|
||||||
cd e2e
|
--arch $ARCH \
|
||||||
./run.sh
|
--enterprise-license $MEMGRAPH_ENTERPRISE_LICENSE \
|
||||||
|
--organization-name $MEMGRAPH_ORGANIZATION_NAME \
|
||||||
|
test-memgraph e2e
|
||||||
|
|
||||||
|
# Same as two steps prior
|
||||||
- name: Ensure Kafka and Pulsar are down
|
- name: Ensure Kafka and Pulsar are down
|
||||||
|
if: false
|
||||||
run: |
|
run: |
|
||||||
cd tests/e2e/streams/kafka
|
cd tests/e2e/streams/kafka
|
||||||
docker-compose down
|
docker-compose down
|
||||||
@ -291,59 +389,92 @@ jobs:
|
|||||||
|
|
||||||
- name: Run stress test (plain)
|
- name: Run stress test (plain)
|
||||||
run: |
|
run: |
|
||||||
cd tests/stress
|
./release/package/mgbuild.sh \
|
||||||
source ve3/bin/activate
|
--toolchain $TOOLCHAIN \
|
||||||
./continuous_integration
|
--os $OS \
|
||||||
|
--arch $ARCH \
|
||||||
|
--enterprise-license $MEMGRAPH_ENTERPRISE_LICENSE \
|
||||||
|
--organization-name $MEMGRAPH_ORGANIZATION_NAME \
|
||||||
|
test-memgraph stress-plain
|
||||||
|
|
||||||
- name: Run stress test (SSL)
|
- name: Run stress test (SSL)
|
||||||
run: |
|
run: |
|
||||||
cd tests/stress
|
./release/package/mgbuild.sh \
|
||||||
source ve3/bin/activate
|
--toolchain $TOOLCHAIN \
|
||||||
./continuous_integration --use-ssl
|
--os $OS \
|
||||||
|
--arch $ARCH \
|
||||||
|
--enterprise-license $MEMGRAPH_ENTERPRISE_LICENSE \
|
||||||
|
--organization-name $MEMGRAPH_ORGANIZATION_NAME \
|
||||||
|
test-memgraph stress-ssl
|
||||||
|
|
||||||
- name: Run durability test
|
- name: Run durability test
|
||||||
run: |
|
run: |
|
||||||
cd tests/stress
|
./release/package/mgbuild.sh \
|
||||||
source ve3/bin/activate
|
--toolchain $TOOLCHAIN \
|
||||||
python3 durability --num-steps 5
|
--os $OS \
|
||||||
|
--arch $ARCH \
|
||||||
|
--enterprise-license $MEMGRAPH_ENTERPRISE_LICENSE \
|
||||||
|
--organization-name $MEMGRAPH_ORGANIZATION_NAME \
|
||||||
|
test-memgraph durability
|
||||||
|
|
||||||
- name: Create enterprise DEB package
|
- name: Create enterprise DEB package
|
||||||
run: |
|
run: |
|
||||||
# Activate toolchain.
|
./release/package/mgbuild.sh \
|
||||||
source /opt/toolchain-v4/activate
|
--toolchain $TOOLCHAIN \
|
||||||
cd build
|
--os $OS \
|
||||||
|
--arch $ARCH \
|
||||||
|
--enterprise-license $MEMGRAPH_ENTERPRISE_LICENSE \
|
||||||
|
--organization-name $MEMGRAPH_ORGANIZATION_NAME \
|
||||||
|
package-memgraph
|
||||||
|
|
||||||
# create mgconsole
|
./release/package/mgbuild.sh \
|
||||||
# we use the -B to force the build
|
--toolchain $TOOLCHAIN \
|
||||||
make -j$THREADS -B mgconsole
|
--os $OS \
|
||||||
|
--arch $ARCH \
|
||||||
# Create enterprise DEB package.
|
copy --package
|
||||||
mkdir output && cd output
|
|
||||||
cpack -G DEB --config ../CPackConfig.cmake
|
|
||||||
|
|
||||||
- name: Save enterprise DEB package
|
- name: Save enterprise DEB package
|
||||||
uses: actions/upload-artifact@v4
|
uses: actions/upload-artifact@v4
|
||||||
with:
|
with:
|
||||||
name: "Enterprise DEB package"
|
name: "Enterprise DEB package"
|
||||||
path: build/output/memgraph*.deb
|
path: build/output/${{ env.OS }}/memgraph*.deb
|
||||||
|
|
||||||
|
- name: Copy build logs
|
||||||
|
run: |
|
||||||
|
./release/package/mgbuild.sh \
|
||||||
|
--toolchain $TOOLCHAIN \
|
||||||
|
--os $OS \
|
||||||
|
--arch $ARCH \
|
||||||
|
copy --build-logs
|
||||||
|
|
||||||
- name: Save test data
|
- name: Save test data
|
||||||
uses: actions/upload-artifact@v4
|
uses: actions/upload-artifact@v4
|
||||||
if: always()
|
if: always()
|
||||||
with:
|
with:
|
||||||
name: "Test data(Release build)"
|
name: "Test data(Release build)"
|
||||||
path: |
|
path: build/logs
|
||||||
# multiple paths could be defined
|
|
||||||
build/logs
|
- name: Stop mgbuild container
|
||||||
|
if: always()
|
||||||
|
run: |
|
||||||
|
./release/package/mgbuild.sh \
|
||||||
|
--toolchain $TOOLCHAIN \
|
||||||
|
--os $OS \
|
||||||
|
--arch $ARCH \
|
||||||
|
stop --remove
|
||||||
|
|
||||||
release_jepsen_test:
|
release_jepsen_test:
|
||||||
name: "Release Jepsen Test"
|
name: "Release Jepsen Test"
|
||||||
runs-on: [self-hosted, Linux, X64, Debian10, JepsenControl]
|
runs-on: [self-hosted, Linux, X64, DockerMgBuild]
|
||||||
#continue-on-error: true
|
timeout-minutes: 80
|
||||||
env:
|
env:
|
||||||
THREADS: 24
|
THREADS: 24
|
||||||
MEMGRAPH_ENTERPRISE_LICENSE: ${{ secrets.MEMGRAPH_ENTERPRISE_LICENSE }}
|
MEMGRAPH_ENTERPRISE_LICENSE: ${{ secrets.MEMGRAPH_ENTERPRISE_LICENSE }}
|
||||||
MEMGRAPH_ORGANIZATION_NAME: ${{ secrets.MEMGRAPH_ORGANIZATION_NAME }}
|
MEMGRAPH_ORGANIZATION_NAME: ${{ secrets.MEMGRAPH_ORGANIZATION_NAME }}
|
||||||
|
OS: debian-10
|
||||||
|
TOOLCHAIN: v4
|
||||||
|
ARCH: amd
|
||||||
|
BUILD_TYPE: RelWithDebInfo
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
- name: Set up repository
|
- name: Set up repository
|
||||||
@ -353,16 +484,31 @@ jobs:
|
|||||||
# branches and tags. (default: 1)
|
# branches and tags. (default: 1)
|
||||||
fetch-depth: 0
|
fetch-depth: 0
|
||||||
|
|
||||||
|
- name: Spin up mgbuild container
|
||||||
|
run: |
|
||||||
|
./release/package/mgbuild.sh \
|
||||||
|
--toolchain $TOOLCHAIN \
|
||||||
|
--os $OS \
|
||||||
|
--arch $ARCH \
|
||||||
|
run
|
||||||
|
|
||||||
- name: Build release binaries
|
- name: Build release binaries
|
||||||
run: |
|
run: |
|
||||||
# Activate toolchain.
|
./release/package/mgbuild.sh \
|
||||||
source /opt/toolchain-v4/activate
|
--toolchain $TOOLCHAIN \
|
||||||
# Initialize dependencies.
|
--os $OS \
|
||||||
./init
|
--arch $ARCH \
|
||||||
# Build only memgraph release binarie.
|
--build-type $BUILD_TYPE \
|
||||||
cd build
|
--threads $THREADS \
|
||||||
cmake -DCMAKE_BUILD_TYPE=RelWithDebInfo ..
|
build-memgraph
|
||||||
make -j$THREADS memgraph
|
|
||||||
|
- name: Copy memgraph binary
|
||||||
|
run: |
|
||||||
|
./release/package/mgbuild.sh \
|
||||||
|
--toolchain $TOOLCHAIN \
|
||||||
|
--os $OS \
|
||||||
|
--arch $ARCH \
|
||||||
|
copy --binary
|
||||||
|
|
||||||
- name: Refresh Jepsen Cluster
|
- name: Refresh Jepsen Cluster
|
||||||
run: |
|
run: |
|
||||||
@ -381,13 +527,27 @@ jobs:
|
|||||||
name: "Jepsen Report"
|
name: "Jepsen Report"
|
||||||
path: tests/jepsen/Jepsen.tar.gz
|
path: tests/jepsen/Jepsen.tar.gz
|
||||||
|
|
||||||
|
- name: Stop mgbuild container
|
||||||
|
if: always()
|
||||||
|
run: |
|
||||||
|
./release/package/mgbuild.sh \
|
||||||
|
--toolchain $TOOLCHAIN \
|
||||||
|
--os $OS \
|
||||||
|
--arch $ARCH \
|
||||||
|
stop --remove
|
||||||
|
|
||||||
release_benchmarks:
|
release_benchmarks:
|
||||||
name: "Release benchmarks"
|
name: "Release benchmarks"
|
||||||
runs-on: [self-hosted, Linux, X64, Diff, Gen7]
|
runs-on: [self-hosted, Linux, X64, DockerMgBuild, Gen7]
|
||||||
|
timeout-minutes: 60
|
||||||
env:
|
env:
|
||||||
THREADS: 24
|
THREADS: 24
|
||||||
MEMGRAPH_ENTERPRISE_LICENSE: ${{ secrets.MEMGRAPH_ENTERPRISE_LICENSE }}
|
MEMGRAPH_ENTERPRISE_LICENSE: ${{ secrets.MEMGRAPH_ENTERPRISE_LICENSE }}
|
||||||
MEMGRAPH_ORGANIZATION_NAME: ${{ secrets.MEMGRAPH_ORGANIZATION_NAME }}
|
MEMGRAPH_ORGANIZATION_NAME: ${{ secrets.MEMGRAPH_ORGANIZATION_NAME }}
|
||||||
|
OS: debian-11
|
||||||
|
TOOLCHAIN: v5
|
||||||
|
ARCH: amd
|
||||||
|
BUILD_TYPE: Release
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
- name: Set up repository
|
- name: Set up repository
|
||||||
@ -397,25 +557,33 @@ jobs:
|
|||||||
# branches and tags. (default: 1)
|
# branches and tags. (default: 1)
|
||||||
fetch-depth: 0
|
fetch-depth: 0
|
||||||
|
|
||||||
|
- name: Spin up mgbuild container
|
||||||
|
run: |
|
||||||
|
./release/package/mgbuild.sh \
|
||||||
|
--toolchain $TOOLCHAIN \
|
||||||
|
--os $OS \
|
||||||
|
--arch $ARCH \
|
||||||
|
run
|
||||||
|
|
||||||
- name: Build release binaries
|
- name: Build release binaries
|
||||||
run: |
|
run: |
|
||||||
# Activate toolchain.
|
./release/package/mgbuild.sh \
|
||||||
source /opt/toolchain-v4/activate
|
--toolchain $TOOLCHAIN \
|
||||||
|
--os $OS \
|
||||||
# Initialize dependencies.
|
--arch $ARCH \
|
||||||
./init
|
--build-type $BUILD_TYPE \
|
||||||
|
--threads $THREADS \
|
||||||
# Build only memgraph release binaries.
|
build-memgraph
|
||||||
cd build
|
|
||||||
cmake -DCMAKE_BUILD_TYPE=release ..
|
|
||||||
make -j$THREADS
|
|
||||||
|
|
||||||
- name: Run macro benchmarks
|
- name: Run macro benchmarks
|
||||||
run: |
|
run: |
|
||||||
cd tests/macro_benchmark
|
./release/package/mgbuild.sh \
|
||||||
./harness QuerySuite MemgraphRunner \
|
--toolchain $TOOLCHAIN \
|
||||||
--groups aggregation 1000_create unwind_create dense_expand match \
|
--os $OS \
|
||||||
--no-strict
|
--arch $ARCH \
|
||||||
|
--enterprise-license $MEMGRAPH_ENTERPRISE_LICENSE \
|
||||||
|
--organization-name $MEMGRAPH_ORGANIZATION_NAME \
|
||||||
|
test-memgraph macro-benchmark
|
||||||
|
|
||||||
- name: Get branch name (merge)
|
- name: Get branch name (merge)
|
||||||
if: github.event_name != 'pull_request'
|
if: github.event_name != 'pull_request'
|
||||||
@ -429,30 +597,49 @@ jobs:
|
|||||||
|
|
||||||
- name: Upload macro benchmark results
|
- name: Upload macro benchmark results
|
||||||
run: |
|
run: |
|
||||||
cd tools/bench-graph-client
|
./release/package/mgbuild.sh \
|
||||||
virtualenv -p python3 ve3
|
--toolchain $TOOLCHAIN \
|
||||||
source ve3/bin/activate
|
--os $OS \
|
||||||
pip install -r requirements.txt
|
--arch $ARCH \
|
||||||
./main.py --benchmark-name "macro_benchmark" \
|
--enterprise-license $MEMGRAPH_ENTERPRISE_LICENSE \
|
||||||
--benchmark-results "../../tests/macro_benchmark/.harness_summary" \
|
--organization-name $MEMGRAPH_ORGANIZATION_NAME \
|
||||||
--github-run-id "${{ github.run_id }}" \
|
test-memgraph upload-to-bench-graph \
|
||||||
--github-run-number "${{ github.run_number }}" \
|
--benchmark-name "macro_benchmark" \
|
||||||
--head-branch-name "${{ env.BRANCH_NAME }}"
|
--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
|
- name: Run mgbench
|
||||||
run: |
|
run: |
|
||||||
cd tests/mgbench
|
./release/package/mgbuild.sh \
|
||||||
./benchmark.py vendor-native --num-workers-for-benchmark 12 --export-results benchmark_result.json pokec/medium/*/*
|
--toolchain $TOOLCHAIN \
|
||||||
|
--os $OS \
|
||||||
|
--arch $ARCH \
|
||||||
|
--enterprise-license $MEMGRAPH_ENTERPRISE_LICENSE \
|
||||||
|
--organization-name $MEMGRAPH_ORGANIZATION_NAME \
|
||||||
|
test-memgraph mgbench
|
||||||
|
|
||||||
- name: Upload mgbench results
|
- name: Upload mgbench results
|
||||||
run: |
|
run: |
|
||||||
cd tools/bench-graph-client
|
./release/package/mgbuild.sh \
|
||||||
virtualenv -p python3 ve3
|
--toolchain $TOOLCHAIN \
|
||||||
source ve3/bin/activate
|
--os $OS \
|
||||||
pip install -r requirements.txt
|
--arch $ARCH \
|
||||||
./main.py --benchmark-name "mgbench" \
|
--enterprise-license $MEMGRAPH_ENTERPRISE_LICENSE \
|
||||||
--benchmark-results "../../tests/mgbench/benchmark_result.json" \
|
--organization-name $MEMGRAPH_ORGANIZATION_NAME \
|
||||||
--github-run-id "${{ github.run_id }}" \
|
test-memgraph upload-to-bench-graph \
|
||||||
--github-run-number "${{ github.run_number }}" \
|
--benchmark-name "mgbench" \
|
||||||
--head-branch-name "${{ env.BRANCH_NAME }}"
|
--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/mgbuild.sh \
|
||||||
|
--toolchain $TOOLCHAIN \
|
||||||
|
--os $OS \
|
||||||
|
--arch $ARCH \
|
||||||
|
stop --remove
|
||||||
|
@ -59,7 +59,7 @@ MEMGRAPH_BUILD_DEPS=(
|
|||||||
doxygen graphviz # source documentation generators
|
doxygen graphviz # source documentation generators
|
||||||
which nodejs golang custom-golang1.18.9 # for driver tests
|
which nodejs golang custom-golang1.18.9 # for driver tests
|
||||||
zip unzip java-11-openjdk-devel java-17-openjdk java-17-openjdk-devel custom-maven3.9.3 # for driver tests
|
zip unzip java-11-openjdk-devel java-17-openjdk java-17-openjdk-devel custom-maven3.9.3 # for driver tests
|
||||||
sbcl # for custom Lisp C++ preprocessing
|
cl-asdf common-lisp-controller sbcl # for custom Lisp C++ preprocessing
|
||||||
autoconf # for jemalloc code generation
|
autoconf # for jemalloc code generation
|
||||||
libtool # for protobuf code generation
|
libtool # for protobuf code generation
|
||||||
cyrus-sasl-devel
|
cyrus-sasl-devel
|
||||||
@ -162,6 +162,30 @@ install() {
|
|||||||
fi
|
fi
|
||||||
continue
|
continue
|
||||||
fi
|
fi
|
||||||
|
if [ "$pkg" == doxygen ]; then
|
||||||
|
if ! dnf list installed doxygen >/dev/null 2>/dev/null; then
|
||||||
|
dnf install -y https://dl.rockylinux.org/pub/rocky/9/CRB/x86_64/os/Packages/d/doxygen-1.9.1-11.el9.x86_64.rpm
|
||||||
|
fi
|
||||||
|
continue
|
||||||
|
fi
|
||||||
|
if [ "$pkg" == cl-asdf ]; then
|
||||||
|
if ! dnf list installed cl-asdf >/dev/null 2>/dev/null; then
|
||||||
|
dnf install -y https://pkgs.sysadmins.ws/el8/base/x86_64/cl-asdf-20101028-18.el8.noarch.rpm
|
||||||
|
fi
|
||||||
|
continue
|
||||||
|
fi
|
||||||
|
if [ "$pkg" == common-lisp-controller ]; then
|
||||||
|
if ! dnf list installed common-lisp-controller >/dev/null 2>/dev/null; then
|
||||||
|
dnf install -y https://pkgs.sysadmins.ws/el8/base/x86_64/common-lisp-controller-7.4-20.el8.noarch.rpm
|
||||||
|
fi
|
||||||
|
continue
|
||||||
|
fi
|
||||||
|
if [ "$pkg" == sbcl ]; then
|
||||||
|
if ! dnf list installed sbcl >/dev/null 2>/dev/null; then
|
||||||
|
dnf install -y https://pkgs.sysadmins.ws/el8/base/x86_64/sbcl-2.0.1-4.el8.x86_64.rpm
|
||||||
|
fi
|
||||||
|
continue
|
||||||
|
fi
|
||||||
if [ "$pkg" == PyYAML ]; then
|
if [ "$pkg" == PyYAML ]; then
|
||||||
if [ -z ${SUDO_USER+x} ]; then # Running as root (e.g. Docker).
|
if [ -z ${SUDO_USER+x} ]; then # Running as root (e.g. Docker).
|
||||||
pip3 install --user PyYAML
|
pip3 install --user PyYAML
|
||||||
|
34
init
34
init
@ -14,6 +14,7 @@ function print_help () {
|
|||||||
echo "Optional arguments:"
|
echo "Optional arguments:"
|
||||||
echo -e " -h\tdisplay this help and exit"
|
echo -e " -h\tdisplay this help and exit"
|
||||||
echo -e " --without-libs-setup\tskip the step for setting up libs"
|
echo -e " --without-libs-setup\tskip the step for setting up libs"
|
||||||
|
echo -e " --ci\tscript is being run inside ci"
|
||||||
}
|
}
|
||||||
|
|
||||||
function setup_virtualenv () {
|
function setup_virtualenv () {
|
||||||
@ -35,6 +36,7 @@ function setup_virtualenv () {
|
|||||||
}
|
}
|
||||||
|
|
||||||
setup_libs=true
|
setup_libs=true
|
||||||
|
ci=false
|
||||||
if [[ $# -eq 1 && "$1" == "-h" ]]; then
|
if [[ $# -eq 1 && "$1" == "-h" ]]; then
|
||||||
print_help
|
print_help
|
||||||
exit 0
|
exit 0
|
||||||
@ -45,6 +47,10 @@ else
|
|||||||
shift
|
shift
|
||||||
setup_libs=false
|
setup_libs=false
|
||||||
;;
|
;;
|
||||||
|
--ci)
|
||||||
|
shift
|
||||||
|
ci=true
|
||||||
|
;;
|
||||||
*)
|
*)
|
||||||
# unknown option
|
# unknown option
|
||||||
echo "Invalid argument provided: $1"
|
echo "Invalid argument provided: $1"
|
||||||
@ -76,11 +82,13 @@ if [[ "$setup_libs" == "true" ]]; then
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
# Fix for centos 7 during release
|
# Fix for centos 7 during release
|
||||||
if [ "${DISTRO}" = "centos-7" ] || [ "${DISTRO}" = "debian-11" ] || [ "${DISTRO}" = "amzn-2" ]; then
|
if [[ "$ci" == "false" ]]; then
|
||||||
if python3 -m pip show virtualenv >/dev/null 2>/dev/null; then
|
if [ "${DISTRO}" = "centos-7" ] || [ "${DISTRO}" = "debian-11" ] || [ "${DISTRO}" = "amzn-2" ]; then
|
||||||
python3 -m pip uninstall -y virtualenv
|
if python3 -m pip show virtualenv >/dev/null 2>/dev/null; then
|
||||||
|
python3 -m pip uninstall -y virtualenv
|
||||||
|
fi
|
||||||
|
python3 -m pip install virtualenv
|
||||||
fi
|
fi
|
||||||
python3 -m pip install virtualenv
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# setup gql_behave dependencies
|
# setup gql_behave dependencies
|
||||||
@ -119,14 +127,16 @@ fi
|
|||||||
# Install precommit hook except on old operating systems because we don't
|
# Install precommit hook except on old operating systems because we don't
|
||||||
# develop on them -> pre-commit hook not required -> we can use latest
|
# develop on them -> pre-commit hook not required -> we can use latest
|
||||||
# packages.
|
# packages.
|
||||||
if [ "${DISTRO}" != "centos-7" ] && [ "$DISTRO" != "debian-10" ] && [ "${DISTRO}" != "ubuntu-18.04" ] && [ "${DISTRO}" != "amzn-2" ]; then
|
if [[ "$ci" == "false" ]]; then
|
||||||
python3 -m pip install pre-commit
|
if [ "${DISTRO}" != "centos-7" ] && [ "$DISTRO" != "debian-10" ] && [ "${DISTRO}" != "ubuntu-18.04" ] && [ "${DISTRO}" != "amzn-2" ]; then
|
||||||
python3 -m pre_commit install
|
python3 -m pip install pre-commit
|
||||||
# Install py format tools for usage during the development.
|
python3 -m pre_commit install
|
||||||
echo "Install black formatter"
|
# Install py format tools for usage during the development.
|
||||||
python3 -m pip install black==23.1.*
|
echo "Install black formatter"
|
||||||
echo "Install isort"
|
python3 -m pip install black==23.1.*
|
||||||
python3 -m pip install isort==5.12.*
|
echo "Install isort"
|
||||||
|
python3 -m pip install isort==5.12.*
|
||||||
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Link `include/mgp.py` with `release/mgp/mgp.py`
|
# Link `include/mgp.py` with `release/mgp/mgp.py`
|
||||||
|
@ -127,6 +127,7 @@ declare -A primary_urls=(
|
|||||||
["jemalloc"]="http://$local_cache_host/git/jemalloc.git"
|
["jemalloc"]="http://$local_cache_host/git/jemalloc.git"
|
||||||
["range-v3"]="http://$local_cache_host/git/range-v3.git"
|
["range-v3"]="http://$local_cache_host/git/range-v3.git"
|
||||||
["nuraft"]="http://$local_cache_host/git/NuRaft.git"
|
["nuraft"]="http://$local_cache_host/git/NuRaft.git"
|
||||||
|
["asio"]="http://$local_cache_host/git/asio.git"
|
||||||
)
|
)
|
||||||
|
|
||||||
# The goal of secondary urls is to have links to the "source of truth" of
|
# The goal of secondary urls is to have links to the "source of truth" of
|
||||||
@ -157,6 +158,7 @@ declare -A secondary_urls=(
|
|||||||
["jemalloc"]="https://github.com/jemalloc/jemalloc.git"
|
["jemalloc"]="https://github.com/jemalloc/jemalloc.git"
|
||||||
["range-v3"]="https://github.com/ericniebler/range-v3.git"
|
["range-v3"]="https://github.com/ericniebler/range-v3.git"
|
||||||
["nuraft"]="https://github.com/eBay/NuRaft.git"
|
["nuraft"]="https://github.com/eBay/NuRaft.git"
|
||||||
|
["asio"]="https://github.com/chriskohlhoff/asio.git"
|
||||||
)
|
)
|
||||||
|
|
||||||
# antlr
|
# antlr
|
||||||
@ -286,5 +288,7 @@ nuraft_tag="v2.1.0"
|
|||||||
repo_clone_try_double "${primary_urls[nuraft]}" "${secondary_urls[nuraft]}" "nuraft" "$nuraft_tag" true
|
repo_clone_try_double "${primary_urls[nuraft]}" "${secondary_urls[nuraft]}" "nuraft" "$nuraft_tag" true
|
||||||
pushd nuraft
|
pushd nuraft
|
||||||
git apply ../nuraft2.1.0.patch
|
git apply ../nuraft2.1.0.patch
|
||||||
|
asio_tag="asio-1-29-0"
|
||||||
|
repo_clone_try_double "${primary_urls[asio]}" "${secondary_urls[asio]}" "asio" "$asio_tag" true
|
||||||
./prepare.sh
|
./prepare.sh
|
||||||
popd
|
popd
|
||||||
|
73
release/package/amd-builders-v4.yml
Normal file
73
release/package/amd-builders-v4.yml
Normal file
@ -0,0 +1,73 @@
|
|||||||
|
version: "3"
|
||||||
|
services:
|
||||||
|
mgbuild_v4_amzn-2:
|
||||||
|
image: "memgraph/mgbuild:v4_amzn-2"
|
||||||
|
build:
|
||||||
|
context: amzn-2
|
||||||
|
args:
|
||||||
|
TOOLCHAIN_VERSION: "v4"
|
||||||
|
container_name: "mgbuild_v4_amzn-2"
|
||||||
|
|
||||||
|
mgbuild_v4_centos-7:
|
||||||
|
image: "memgraph/mgbuild:v4_centos-7"
|
||||||
|
build:
|
||||||
|
context: centos-7
|
||||||
|
args:
|
||||||
|
TOOLCHAIN_VERSION: "v4"
|
||||||
|
container_name: "mgbuild_v4_centos-7"
|
||||||
|
|
||||||
|
mgbuild_v4_centos-9:
|
||||||
|
image: "memgraph/mgbuild:v4_centos-9"
|
||||||
|
build:
|
||||||
|
context: centos-9
|
||||||
|
args:
|
||||||
|
TOOLCHAIN_VERSION: "v4"
|
||||||
|
container_name: "mgbuild_v4_centos-9"
|
||||||
|
|
||||||
|
mgbuild_v4_debian-10:
|
||||||
|
image: "memgraph/mgbuild:v4_debian-10"
|
||||||
|
build:
|
||||||
|
context: debian-10
|
||||||
|
args:
|
||||||
|
TOOLCHAIN_VERSION: "v4"
|
||||||
|
container_name: "mgbuild_v4_debian-10"
|
||||||
|
|
||||||
|
mgbuild_v4_debian-11:
|
||||||
|
image: "memgraph/mgbuild:v4_debian-11"
|
||||||
|
build:
|
||||||
|
context: debian-11
|
||||||
|
args:
|
||||||
|
TOOLCHAIN_VERSION: "v4"
|
||||||
|
container_name: "mgbuild_v4_debian-11"
|
||||||
|
|
||||||
|
mgbuild_v4_fedora-36:
|
||||||
|
image: "memgraph/mgbuild:v4_fedora-36"
|
||||||
|
build:
|
||||||
|
context: fedora-36
|
||||||
|
args:
|
||||||
|
TOOLCHAIN_VERSION: "v4"
|
||||||
|
container_name: "mgbuild_v4_fedora-36"
|
||||||
|
|
||||||
|
mgbuild_v4_ubuntu-18.04:
|
||||||
|
image: "memgraph/mgbuild:v4_ubuntu-18.04"
|
||||||
|
build:
|
||||||
|
context: ubuntu-18.04
|
||||||
|
args:
|
||||||
|
TOOLCHAIN_VERSION: "v4"
|
||||||
|
container_name: "mgbuild_v4_ubuntu-18.04"
|
||||||
|
|
||||||
|
mgbuild_v4_ubuntu-20.04:
|
||||||
|
image: "memgraph/mgbuild:v4_ubuntu-20.04"
|
||||||
|
build:
|
||||||
|
context: ubuntu-20.04
|
||||||
|
args:
|
||||||
|
TOOLCHAIN_VERSION: "v4"
|
||||||
|
container_name: "mgbuild_v4_ubuntu-20.04"
|
||||||
|
|
||||||
|
mgbuild_v4_ubuntu-22.04:
|
||||||
|
image: "memgraph/mgbuild:v4_ubuntu-22.04"
|
||||||
|
build:
|
||||||
|
context: ubuntu-22.04
|
||||||
|
args:
|
||||||
|
TOOLCHAIN_VERSION: "v4"
|
||||||
|
container_name: "mgbuild_v4_ubuntu-22.04"
|
81
release/package/amd-builders-v5.yml
Normal file
81
release/package/amd-builders-v5.yml
Normal file
@ -0,0 +1,81 @@
|
|||||||
|
version: "3"
|
||||||
|
services:
|
||||||
|
mgbuild_v5_amzn-2:
|
||||||
|
image: "memgraph/mgbuild:v5_amzn-2"
|
||||||
|
build:
|
||||||
|
context: amzn-2
|
||||||
|
args:
|
||||||
|
TOOLCHAIN_VERSION: "v5"
|
||||||
|
container_name: "mgbuild_v5_amzn-2"
|
||||||
|
|
||||||
|
mgbuild_v5_centos-7:
|
||||||
|
image: "memgraph/mgbuild:v5_centos-7"
|
||||||
|
build:
|
||||||
|
context: centos-7
|
||||||
|
args:
|
||||||
|
TOOLCHAIN_VERSION: "v5"
|
||||||
|
container_name: "mgbuild_v5_centos-7"
|
||||||
|
|
||||||
|
mgbuild_v5_centos-9:
|
||||||
|
image: "memgraph/mgbuild:v5_centos-9"
|
||||||
|
build:
|
||||||
|
context: centos-9
|
||||||
|
args:
|
||||||
|
TOOLCHAIN_VERSION: "v5"
|
||||||
|
container_name: "mgbuild_v5_centos-9"
|
||||||
|
|
||||||
|
mgbuild_v5_debian-11:
|
||||||
|
image: "memgraph/mgbuild:v5_debian-11"
|
||||||
|
build:
|
||||||
|
context: debian-11
|
||||||
|
args:
|
||||||
|
TOOLCHAIN_VERSION: "v5"
|
||||||
|
container_name: "mgbuild_v5_debian-11"
|
||||||
|
|
||||||
|
mgbuild_v5_debian-12:
|
||||||
|
image: "memgraph/mgbuild:v5_debian-12"
|
||||||
|
build:
|
||||||
|
context: debian-12
|
||||||
|
args:
|
||||||
|
TOOLCHAIN_VERSION: "v5"
|
||||||
|
container_name: "mgbuild_v5_debian-12"
|
||||||
|
|
||||||
|
mgbuild_v5_fedora-38:
|
||||||
|
image: "memgraph/mgbuild:v5_fedora-38"
|
||||||
|
build:
|
||||||
|
context: fedora-38
|
||||||
|
args:
|
||||||
|
TOOLCHAIN_VERSION: "v5"
|
||||||
|
container_name: "mgbuild_v5_fedora-38"
|
||||||
|
|
||||||
|
mgbuild_v5_fedora-39:
|
||||||
|
image: "memgraph/mgbuild:v5_fedora-39"
|
||||||
|
build:
|
||||||
|
context: fedora-39
|
||||||
|
args:
|
||||||
|
TOOLCHAIN_VERSION: "v5"
|
||||||
|
container_name: "mgbuild_v5_fedora-39"
|
||||||
|
|
||||||
|
mgbuild_v5_rocky-9.3:
|
||||||
|
image: "memgraph/mgbuild:v5_rocky-9.3"
|
||||||
|
build:
|
||||||
|
context: rocky-9.3
|
||||||
|
args:
|
||||||
|
TOOLCHAIN_VERSION: "v5"
|
||||||
|
container_name: "mgbuild_v5_rocky-9.3"
|
||||||
|
|
||||||
|
mgbuild_v5_ubuntu-20.04:
|
||||||
|
image: "memgraph/mgbuild:v5_ubuntu-20.04"
|
||||||
|
build:
|
||||||
|
context: ubuntu-20.04
|
||||||
|
args:
|
||||||
|
TOOLCHAIN_VERSION: "v5"
|
||||||
|
container_name: "mgbuild_v5_ubuntu-20.04"
|
||||||
|
|
||||||
|
mgbuild_v5_ubuntu-22.04:
|
||||||
|
image: "memgraph/mgbuild:v5_ubuntu-22.04"
|
||||||
|
build:
|
||||||
|
context: ubuntu-22.04
|
||||||
|
args:
|
||||||
|
TOOLCHAIN_VERSION: "v5"
|
||||||
|
container_name: "mgbuild_v5_ubuntu-22.04"
|
@ -7,9 +7,34 @@ RUN yum -y update \
|
|||||||
# Do NOT be smart here and clean the cache because the container is used in the
|
# Do NOT be smart here and clean the cache because the container is used in the
|
||||||
# stateful context.
|
# stateful context.
|
||||||
|
|
||||||
RUN wget -q https://s3-eu-west-1.amazonaws.com/deps.memgraph.io/${TOOLCHAIN_VERSION}/${TOOLCHAIN_VERSION}-binaries-amzn-2-x86_64.tar.gz \
|
# Download and install toolchain
|
||||||
-O ${TOOLCHAIN_VERSION}-binaries-amzn-2-x86_64.tar.gz \
|
RUN wget -q https://s3-eu-west-1.amazonaws.com/deps.memgraph.io/toolchain-${TOOLCHAIN_VERSION}/toolchain-${TOOLCHAIN_VERSION}-binaries-amzn-2-x86_64.tar.gz \
|
||||||
&& tar xzvf ${TOOLCHAIN_VERSION}-binaries-amzn-2-x86_64.tar.gz -C /opt \
|
-O toolchain-${TOOLCHAIN_VERSION}-binaries-amzn-2-x86_64.tar.gz \
|
||||||
&& rm ${TOOLCHAIN_VERSION}-binaries-amzn-2-x86_64.tar.gz
|
&& tar xzvf toolchain-${TOOLCHAIN_VERSION}-binaries-amzn-2-x86_64.tar.gz -C /opt \
|
||||||
|
&& rm toolchain-${TOOLCHAIN_VERSION}-binaries-amzn-2-x86_64.tar.gz
|
||||||
|
|
||||||
|
# Install toolchain run deps and memgraph build deps
|
||||||
|
SHELL ["/bin/bash", "-c"]
|
||||||
|
RUN git clone https://github.com/memgraph/memgraph.git \
|
||||||
|
&& cd memgraph \
|
||||||
|
&& ./environment/os/amzn-2.sh install TOOLCHAIN_RUN_DEPS \
|
||||||
|
&& ./environment/os/amzn-2.sh install MEMGRAPH_BUILD_DEPS \
|
||||||
|
&& cd .. && rm -rf memgraph
|
||||||
|
|
||||||
|
# Add mgdeps-cache and bench-graph-api hostnames
|
||||||
|
RUN echo -e "10.42.16.10 mgdeps-cache\n10.42.16.10 bench-graph-api" >> /etc/hosts
|
||||||
|
|
||||||
|
# Create mg user and set as default
|
||||||
|
RUN useradd -m -s /bin/bash mg
|
||||||
|
USER mg
|
||||||
|
|
||||||
|
# Install rust
|
||||||
|
RUN curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y
|
||||||
|
|
||||||
|
# Fix node
|
||||||
|
RUN curl https://raw.githubusercontent.com/creationix/nvm/master/install.sh | bash
|
||||||
|
|
||||||
|
# Install PyYAML (only for amzn-2, centos-7, cento-9 and rocky-9)
|
||||||
|
RUN pip3 install --user PyYAML
|
||||||
|
|
||||||
ENTRYPOINT ["sleep", "infinity"]
|
ENTRYPOINT ["sleep", "infinity"]
|
||||||
|
18
release/package/arm-builders-v4.yml
Normal file
18
release/package/arm-builders-v4.yml
Normal file
@ -0,0 +1,18 @@
|
|||||||
|
version: "3"
|
||||||
|
|
||||||
|
services:
|
||||||
|
mgbuild_v4_debian-11-arm:
|
||||||
|
image: "memgraph/mgbuild:v4_debian-11-arm"
|
||||||
|
build:
|
||||||
|
context: debian-11-arm
|
||||||
|
args:
|
||||||
|
TOOLCHAIN_VERSION: "v4"
|
||||||
|
container_name: "mgbuild_v4_debian-11-arm"
|
||||||
|
|
||||||
|
mgbuild_v4_ubuntu_v4_22.04-arm:
|
||||||
|
image: "memgraph/mgbuild:v4_ubuntu-22.04-arm"
|
||||||
|
build:
|
||||||
|
context: ubuntu-22.04-arm
|
||||||
|
args:
|
||||||
|
TOOLCHAIN_VERSION: "v4"
|
||||||
|
container_name: "mgbuild_v4_ubuntu-22.04-arm"
|
18
release/package/arm-builders-v5.yml
Normal file
18
release/package/arm-builders-v5.yml
Normal file
@ -0,0 +1,18 @@
|
|||||||
|
version: "3"
|
||||||
|
|
||||||
|
services:
|
||||||
|
debian-12-arm:
|
||||||
|
image: "memgraph/mgbuild:v5_debian-12-arm"
|
||||||
|
build:
|
||||||
|
context: debian-12-arm
|
||||||
|
args:
|
||||||
|
TOOLCHAIN_VERSION: "v4"
|
||||||
|
container_name: "mgbuild_debian-12-arm"
|
||||||
|
|
||||||
|
ubuntu-22.04-arm:
|
||||||
|
image: "memgraph/mgbuild:v5_ubuntu-22.04-arm"
|
||||||
|
build:
|
||||||
|
context: ubuntu-22.04-arm
|
||||||
|
args:
|
||||||
|
TOOLCHAIN_VERSION: "v4"
|
||||||
|
container_name: "mgbuild_ubuntu-22.04-arm"
|
@ -1,11 +0,0 @@
|
|||||||
version: "3"
|
|
||||||
|
|
||||||
services:
|
|
||||||
debian-11-arm:
|
|
||||||
build:
|
|
||||||
context: debian-11-arm
|
|
||||||
container_name: "mgbuild_debian-11-arm"
|
|
||||||
ubuntu-2204-arm:
|
|
||||||
build:
|
|
||||||
context: ubuntu-22.04-arm
|
|
||||||
container_name: "mgbuild_ubuntu-22.04-arm"
|
|
@ -7,9 +7,33 @@ RUN yum -y update \
|
|||||||
# Do NOT be smart here and clean the cache because the container is used in the
|
# Do NOT be smart here and clean the cache because the container is used in the
|
||||||
# stateful context.
|
# stateful context.
|
||||||
|
|
||||||
RUN wget -q https://s3-eu-west-1.amazonaws.com/deps.memgraph.io/${TOOLCHAIN_VERSION}/${TOOLCHAIN_VERSION}-binaries-centos-7-x86_64.tar.gz \
|
RUN wget -q https://s3-eu-west-1.amazonaws.com/deps.memgraph.io/toolchain-${TOOLCHAIN_VERSION}/toolchain-${TOOLCHAIN_VERSION}-binaries-centos-7-x86_64.tar.gz \
|
||||||
-O ${TOOLCHAIN_VERSION}-binaries-centos-7-x86_64.tar.gz \
|
-O toolchain-${TOOLCHAIN_VERSION}-binaries-centos-7-x86_64.tar.gz \
|
||||||
&& tar xzvf ${TOOLCHAIN_VERSION}-binaries-centos-7-x86_64.tar.gz -C /opt \
|
&& tar xzvf toolchain-${TOOLCHAIN_VERSION}-binaries-centos-7-x86_64.tar.gz -C /opt \
|
||||||
&& rm ${TOOLCHAIN_VERSION}-binaries-centos-7-x86_64.tar.gz
|
&& rm toolchain-${TOOLCHAIN_VERSION}-binaries-centos-7-x86_64.tar.gz
|
||||||
|
|
||||||
|
# Install toolchain run deps and memgraph build deps
|
||||||
|
SHELL ["/bin/bash", "-c"]
|
||||||
|
RUN git clone https://github.com/memgraph/memgraph.git \
|
||||||
|
&& cd memgraph \
|
||||||
|
&& ./environment/os/centos-7.sh install TOOLCHAIN_RUN_DEPS \
|
||||||
|
&& ./environment/os/centos-7.sh install MEMGRAPH_BUILD_DEPS \
|
||||||
|
&& cd .. && rm -rf memgraph
|
||||||
|
|
||||||
|
# Add mgdeps-cache and bench-graph-api hostnames
|
||||||
|
RUN echo -e "10.42.16.10 mgdeps-cache\n10.42.16.10 bench-graph-api" >> /etc/hosts
|
||||||
|
|
||||||
|
# Create mg user and set as default
|
||||||
|
RUN useradd -m -s /bin/bash mg
|
||||||
|
USER mg
|
||||||
|
|
||||||
|
# Install rust
|
||||||
|
RUN curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y
|
||||||
|
|
||||||
|
# Fix node
|
||||||
|
RUN curl https://raw.githubusercontent.com/creationix/nvm/master/install.sh | bash
|
||||||
|
|
||||||
|
# Install PyYAML (only for amzn-2, centos-7, cento-9 and rocky-9)
|
||||||
|
RUN pip3 install --user PyYAML
|
||||||
|
|
||||||
ENTRYPOINT ["sleep", "infinity"]
|
ENTRYPOINT ["sleep", "infinity"]
|
||||||
|
@ -7,9 +7,33 @@ RUN yum -y update \
|
|||||||
# Do NOT be smart here and clean the cache because the container is used in the
|
# Do NOT be smart here and clean the cache because the container is used in the
|
||||||
# stateful context.
|
# stateful context.
|
||||||
|
|
||||||
RUN wget -q https://s3-eu-west-1.amazonaws.com/deps.memgraph.io/${TOOLCHAIN_VERSION}/${TOOLCHAIN_VERSION}-binaries-centos-9-x86_64.tar.gz \
|
RUN wget -q https://s3-eu-west-1.amazonaws.com/deps.memgraph.io/toolchain-${TOOLCHAIN_VERSION}/toolchain-${TOOLCHAIN_VERSION}-binaries-centos-9-x86_64.tar.gz \
|
||||||
-O ${TOOLCHAIN_VERSION}-binaries-centos-9-x86_64.tar.gz \
|
-O toolchain-${TOOLCHAIN_VERSION}-binaries-centos-9-x86_64.tar.gz \
|
||||||
&& tar xzvf ${TOOLCHAIN_VERSION}-binaries-centos-9-x86_64.tar.gz -C /opt \
|
&& tar xzvf toolchain-${TOOLCHAIN_VERSION}-binaries-centos-9-x86_64.tar.gz -C /opt \
|
||||||
&& rm ${TOOLCHAIN_VERSION}-binaries-centos-9-x86_64.tar.gz
|
&& rm toolchain-${TOOLCHAIN_VERSION}-binaries-centos-9-x86_64.tar.gz
|
||||||
|
|
||||||
|
# Install toolchain run deps and memgraph build deps
|
||||||
|
SHELL ["/bin/bash", "-c"]
|
||||||
|
RUN git clone https://github.com/memgraph/memgraph.git \
|
||||||
|
&& cd memgraph \
|
||||||
|
&& ./environment/os/centos-9.sh install TOOLCHAIN_RUN_DEPS \
|
||||||
|
&& ./environment/os/centos-9.sh install MEMGRAPH_BUILD_DEPS \
|
||||||
|
&& cd .. && rm -rf memgraph
|
||||||
|
|
||||||
|
# Add mgdeps-cache and bench-graph-api hostnames
|
||||||
|
RUN echo -e "10.42.16.10 mgdeps-cache\n10.42.16.10 bench-graph-api" >> /etc/hosts
|
||||||
|
|
||||||
|
# Create mg user and set as default
|
||||||
|
RUN useradd -m -s /bin/bash mg
|
||||||
|
USER mg
|
||||||
|
|
||||||
|
# Install rust
|
||||||
|
RUN curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y
|
||||||
|
|
||||||
|
# Fix node
|
||||||
|
RUN curl https://raw.githubusercontent.com/creationix/nvm/master/install.sh | bash
|
||||||
|
|
||||||
|
# Install PyYAML (only for amzn-2, centos-7, cento-9 and rocky-9)
|
||||||
|
RUN pip3 install --user PyYAML
|
||||||
|
|
||||||
ENTRYPOINT ["sleep", "infinity"]
|
ENTRYPOINT ["sleep", "infinity"]
|
||||||
|
@ -10,9 +10,30 @@ RUN apt update && apt install -y \
|
|||||||
# Do NOT be smart here and clean the cache because the container is used in the
|
# Do NOT be smart here and clean the cache because the container is used in the
|
||||||
# stateful context.
|
# stateful context.
|
||||||
|
|
||||||
RUN wget -q https://s3-eu-west-1.amazonaws.com/deps.memgraph.io/${TOOLCHAIN_VERSION}/${TOOLCHAIN_VERSION}-binaries-debian-10-amd64.tar.gz \
|
RUN wget -q https://s3-eu-west-1.amazonaws.com/deps.memgraph.io/toolchain-${TOOLCHAIN_VERSION}/toolchain-${TOOLCHAIN_VERSION}-binaries-debian-10-amd64.tar.gz \
|
||||||
-O ${TOOLCHAIN_VERSION}-binaries-debian-10-amd64.tar.gz \
|
-O toolchain-${TOOLCHAIN_VERSION}-binaries-debian-10-amd64.tar.gz \
|
||||||
&& tar xzvf ${TOOLCHAIN_VERSION}-binaries-debian-10-amd64.tar.gz -C /opt \
|
&& tar xzvf toolchain-${TOOLCHAIN_VERSION}-binaries-debian-10-amd64.tar.gz -C /opt \
|
||||||
&& rm ${TOOLCHAIN_VERSION}-binaries-debian-10-amd64.tar.gz
|
&& rm toolchain-${TOOLCHAIN_VERSION}-binaries-debian-10-amd64.tar.gz
|
||||||
|
|
||||||
|
# Install toolchain run deps and memgraph build deps
|
||||||
|
SHELL ["/bin/bash", "-c"]
|
||||||
|
RUN git clone https://github.com/memgraph/memgraph.git \
|
||||||
|
&& cd memgraph \
|
||||||
|
&& ./environment/os/debian-10.sh install TOOLCHAIN_RUN_DEPS \
|
||||||
|
&& ./environment/os/debian-10.sh install MEMGRAPH_BUILD_DEPS \
|
||||||
|
&& cd .. && rm -rf memgraph
|
||||||
|
|
||||||
|
# Add mgdeps-cache and bench-graph-api hostnames
|
||||||
|
RUN echo -e "10.42.16.10 mgdeps-cache\n10.42.16.10 bench-graph-api" >> /etc/hosts
|
||||||
|
|
||||||
|
# Create mg user and set as default
|
||||||
|
RUN useradd -m -s /bin/bash mg
|
||||||
|
USER mg
|
||||||
|
|
||||||
|
# Install rust
|
||||||
|
RUN curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y
|
||||||
|
|
||||||
|
# Fix node
|
||||||
|
RUN curl https://raw.githubusercontent.com/creationix/nvm/master/install.sh | bash
|
||||||
|
|
||||||
ENTRYPOINT ["sleep", "infinity"]
|
ENTRYPOINT ["sleep", "infinity"]
|
||||||
|
@ -10,9 +10,30 @@ RUN apt update && apt install -y \
|
|||||||
# Do NOT be smart here and clean the cache because the container is used in the
|
# Do NOT be smart here and clean the cache because the container is used in the
|
||||||
# stateful context.
|
# stateful context.
|
||||||
|
|
||||||
RUN wget -q https://s3-eu-west-1.amazonaws.com/deps.memgraph.io/${TOOLCHAIN_VERSION}/${TOOLCHAIN_VERSION}-binaries-debian-11-arm64.tar.gz \
|
RUN wget -q https://s3-eu-west-1.amazonaws.com/deps.memgraph.io/toolchain-${TOOLCHAIN_VERSION}/toolchain-${TOOLCHAIN_VERSION}-binaries-debian-11-arm64.tar.gz \
|
||||||
-O ${TOOLCHAIN_VERSION}-binaries-debian-11-arm64.tar.gz \
|
-O toolchain-${TOOLCHAIN_VERSION}-binaries-debian-11-arm64.tar.gz \
|
||||||
&& tar xzvf ${TOOLCHAIN_VERSION}-binaries-debian-11-arm64.tar.gz -C /opt \
|
&& tar xzvf toolchain-${TOOLCHAIN_VERSION}-binaries-debian-11-arm64.tar.gz -C /opt \
|
||||||
&& rm ${TOOLCHAIN_VERSION}-binaries-debian-11-arm64.tar.gz
|
&& rm toolchain-${TOOLCHAIN_VERSION}-binaries-debian-11-arm64.tar.gz
|
||||||
|
|
||||||
|
# Install toolchain run deps and memgraph build deps
|
||||||
|
SHELL ["/bin/bash", "-c"]
|
||||||
|
RUN git clone https://github.com/memgraph/memgraph.git \
|
||||||
|
&& cd memgraph \
|
||||||
|
&& ./environment/os/debian-11-arm.sh install TOOLCHAIN_RUN_DEPS \
|
||||||
|
&& ./environment/os/debian-11-arm.sh install MEMGRAPH_BUILD_DEPS \
|
||||||
|
&& cd .. && rm -rf memgraph
|
||||||
|
|
||||||
|
# Add mgdeps-cache and bench-graph-api hostnames
|
||||||
|
RUN echo -e "10.42.16.10 mgdeps-cache\n10.42.16.10 bench-graph-api" >> /etc/hosts
|
||||||
|
|
||||||
|
# Create mg user and set as default
|
||||||
|
RUN useradd -m -s /bin/bash mg
|
||||||
|
USER mg
|
||||||
|
|
||||||
|
# Install rust
|
||||||
|
RUN curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y
|
||||||
|
|
||||||
|
# Fix node
|
||||||
|
RUN curl https://raw.githubusercontent.com/creationix/nvm/master/install.sh | bash
|
||||||
|
|
||||||
ENTRYPOINT ["sleep", "infinity"]
|
ENTRYPOINT ["sleep", "infinity"]
|
||||||
|
@ -10,9 +10,30 @@ RUN apt update && apt install -y \
|
|||||||
# Do NOT be smart here and clean the cache because the container is used in the
|
# Do NOT be smart here and clean the cache because the container is used in the
|
||||||
# stateful context.
|
# stateful context.
|
||||||
|
|
||||||
RUN wget -q https://s3-eu-west-1.amazonaws.com/deps.memgraph.io/${TOOLCHAIN_VERSION}/${TOOLCHAIN_VERSION}-binaries-debian-11-amd64.tar.gz \
|
RUN wget -q https://s3-eu-west-1.amazonaws.com/deps.memgraph.io/toolchain-${TOOLCHAIN_VERSION}/toolchain-${TOOLCHAIN_VERSION}-binaries-debian-11-amd64.tar.gz \
|
||||||
-O ${TOOLCHAIN_VERSION}-binaries-debian-11-amd64.tar.gz \
|
-O toolchain-${TOOLCHAIN_VERSION}-binaries-debian-11-amd64.tar.gz \
|
||||||
&& tar xzvf ${TOOLCHAIN_VERSION}-binaries-debian-11-amd64.tar.gz -C /opt \
|
&& tar xzvf toolchain-${TOOLCHAIN_VERSION}-binaries-debian-11-amd64.tar.gz -C /opt \
|
||||||
&& rm ${TOOLCHAIN_VERSION}-binaries-debian-11-amd64.tar.gz
|
&& rm toolchain-${TOOLCHAIN_VERSION}-binaries-debian-11-amd64.tar.gz
|
||||||
|
|
||||||
|
# Install toolchain run deps and memgraph build deps
|
||||||
|
SHELL ["/bin/bash", "-c"]
|
||||||
|
RUN git clone https://github.com/memgraph/memgraph.git \
|
||||||
|
&& cd memgraph \
|
||||||
|
&& ./environment/os/debian-11.sh install TOOLCHAIN_RUN_DEPS \
|
||||||
|
&& ./environment/os/debian-11.sh install MEMGRAPH_BUILD_DEPS \
|
||||||
|
&& cd .. && rm -rf memgraph
|
||||||
|
|
||||||
|
# Add mgdeps-cache and bench-graph-api hostnames
|
||||||
|
RUN echo -e "10.42.16.10 mgdeps-cache\n10.42.16.10 bench-graph-api" >> /etc/hosts
|
||||||
|
|
||||||
|
# Create mg user and set as default
|
||||||
|
RUN useradd -m -s /bin/bash mg
|
||||||
|
USER mg
|
||||||
|
|
||||||
|
# Install rust
|
||||||
|
RUN curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y
|
||||||
|
|
||||||
|
# Fix node
|
||||||
|
RUN curl https://raw.githubusercontent.com/creationix/nvm/master/install.sh | bash
|
||||||
|
|
||||||
ENTRYPOINT ["sleep", "infinity"]
|
ENTRYPOINT ["sleep", "infinity"]
|
||||||
|
39
release/package/debian-12-arm/Dockerfile
Normal file
39
release/package/debian-12-arm/Dockerfile
Normal file
@ -0,0 +1,39 @@
|
|||||||
|
FROM debian:12
|
||||||
|
|
||||||
|
ARG TOOLCHAIN_VERSION
|
||||||
|
|
||||||
|
# Stops tzdata interactive configuration.
|
||||||
|
ENV DEBIAN_FRONTEND=noninteractive
|
||||||
|
|
||||||
|
RUN apt update && apt install -y \
|
||||||
|
ca-certificates wget git
|
||||||
|
# Do NOT be smart here and clean the cache because the container is used in the
|
||||||
|
# stateful context.
|
||||||
|
|
||||||
|
RUN wget -q https://s3-eu-west-1.amazonaws.com/deps.memgraph.io/toolchain-${TOOLCHAIN_VERSION}/toolchain-${TOOLCHAIN_VERSION}-binaries-debian-12-arm64.tar.gz \
|
||||||
|
-O toolchain-${TOOLCHAIN_VERSION}-binaries-debian-12-arm64.tar.gz \
|
||||||
|
&& tar xzvf toolchain-${TOOLCHAIN_VERSION}-binaries-debian-12-arm64.tar.gz -C /opt \
|
||||||
|
&& rm toolchain-${TOOLCHAIN_VERSION}-binaries-debian-12-arm64.tar.gz
|
||||||
|
|
||||||
|
# Install toolchain run deps and memgraph build deps
|
||||||
|
SHELL ["/bin/bash", "-c"]
|
||||||
|
RUN git clone https://github.com/memgraph/memgraph.git \
|
||||||
|
&& cd memgraph \
|
||||||
|
&& ./environment/os/debian-12-arm.sh install TOOLCHAIN_RUN_DEPS \
|
||||||
|
&& ./environment/os/debian-12-arm.sh install MEMGRAPH_BUILD_DEPS \
|
||||||
|
&& cd .. && rm -rf memgraph
|
||||||
|
|
||||||
|
# Add mgdeps-cache and bench-graph-api hostnames
|
||||||
|
RUN echo -e "10.42.16.10 mgdeps-cache\n10.42.16.10 bench-graph-api" >> /etc/hosts
|
||||||
|
|
||||||
|
# Create mg user and set as default
|
||||||
|
RUN useradd -m -s /bin/bash mg
|
||||||
|
USER mg
|
||||||
|
|
||||||
|
# Install rust
|
||||||
|
RUN curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y
|
||||||
|
|
||||||
|
# Fix node
|
||||||
|
RUN curl https://raw.githubusercontent.com/creationix/nvm/master/install.sh | bash
|
||||||
|
|
||||||
|
ENTRYPOINT ["sleep", "infinity"]
|
39
release/package/debian-12/Dockerfile
Normal file
39
release/package/debian-12/Dockerfile
Normal file
@ -0,0 +1,39 @@
|
|||||||
|
FROM debian:12
|
||||||
|
|
||||||
|
ARG TOOLCHAIN_VERSION
|
||||||
|
|
||||||
|
# Stops tzdata interactive configuration.
|
||||||
|
ENV DEBIAN_FRONTEND=noninteractive
|
||||||
|
|
||||||
|
RUN apt update && apt install -y \
|
||||||
|
ca-certificates wget git
|
||||||
|
# Do NOT be smart here and clean the cache because the container is used in the
|
||||||
|
# stateful context.
|
||||||
|
|
||||||
|
RUN wget -q https://s3-eu-west-1.amazonaws.com/deps.memgraph.io/toolchain-${TOOLCHAIN_VERSION}/toolchain-${TOOLCHAIN_VERSION}-binaries-debian-12-amd64.tar.gz \
|
||||||
|
-O toolchain-${TOOLCHAIN_VERSION}-binaries-debian-12-amd64.tar.gz \
|
||||||
|
&& tar xzvf toolchain-${TOOLCHAIN_VERSION}-binaries-debian-12-amd64.tar.gz -C /opt \
|
||||||
|
&& rm toolchain-${TOOLCHAIN_VERSION}-binaries-debian-12-amd64.tar.gz
|
||||||
|
|
||||||
|
# Install toolchain run deps and memgraph build deps
|
||||||
|
SHELL ["/bin/bash", "-c"]
|
||||||
|
RUN git clone https://github.com/memgraph/memgraph.git \
|
||||||
|
&& cd memgraph \
|
||||||
|
&& ./environment/os/debian-12.sh install TOOLCHAIN_RUN_DEPS \
|
||||||
|
&& ./environment/os/debian-12.sh install MEMGRAPH_BUILD_DEPS \
|
||||||
|
&& cd .. && rm -rf memgraph
|
||||||
|
|
||||||
|
# Add mgdeps-cache and bench-graph-api hostnames
|
||||||
|
RUN echo -e "10.42.16.10 mgdeps-cache\n10.42.16.10 bench-graph-api" >> /etc/hosts
|
||||||
|
|
||||||
|
# Create mg user and set as default
|
||||||
|
RUN useradd -m -s /bin/bash mg
|
||||||
|
USER mg
|
||||||
|
|
||||||
|
# Install rust
|
||||||
|
RUN curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y
|
||||||
|
|
||||||
|
# Fix node
|
||||||
|
RUN curl https://raw.githubusercontent.com/creationix/nvm/master/install.sh | bash
|
||||||
|
|
||||||
|
ENTRYPOINT ["sleep", "infinity"]
|
@ -1,38 +0,0 @@
|
|||||||
version: "3"
|
|
||||||
services:
|
|
||||||
mgbuild_centos-7:
|
|
||||||
build:
|
|
||||||
context: centos-7
|
|
||||||
container_name: "mgbuild_centos-7"
|
|
||||||
mgbuild_centos-9:
|
|
||||||
build:
|
|
||||||
context: centos-9
|
|
||||||
container_name: "mgbuild_centos-9"
|
|
||||||
mgbuild_debian-10:
|
|
||||||
build:
|
|
||||||
context: debian-10
|
|
||||||
container_name: "mgbuild_debian-10"
|
|
||||||
mgbuild_debian-11:
|
|
||||||
build:
|
|
||||||
context: debian-11
|
|
||||||
container_name: "mgbuild_debian-11"
|
|
||||||
mgbuild_ubuntu-18.04:
|
|
||||||
build:
|
|
||||||
context: ubuntu-18.04
|
|
||||||
container_name: "mgbuild_ubuntu-18.04"
|
|
||||||
mgbuild_ubuntu-20.04:
|
|
||||||
build:
|
|
||||||
context: ubuntu-20.04
|
|
||||||
container_name: "mgbuild_ubuntu-20.04"
|
|
||||||
mgbuild_ubuntu-22.04:
|
|
||||||
build:
|
|
||||||
context: ubuntu-22.04
|
|
||||||
container_name: "mgbuild_ubuntu-22.04"
|
|
||||||
mgbuild_fedora-36:
|
|
||||||
build:
|
|
||||||
context: fedora-36
|
|
||||||
container_name: "mgbuild_fedora-36"
|
|
||||||
mgbuild_amzn-2:
|
|
||||||
build:
|
|
||||||
context: amzn-2
|
|
||||||
container_name: "mgbuild_amzn-2"
|
|
@ -8,9 +8,30 @@ RUN yum -y update \
|
|||||||
# Do NOT be smart here and clean the cache because the container is used in the
|
# Do NOT be smart here and clean the cache because the container is used in the
|
||||||
# stateful context.
|
# stateful context.
|
||||||
|
|
||||||
RUN wget -q https://s3-eu-west-1.amazonaws.com/deps.memgraph.io/${TOOLCHAIN_VERSION}/${TOOLCHAIN_VERSION}-binaries-fedora-36-x86_64.tar.gz \
|
RUN wget -q https://s3-eu-west-1.amazonaws.com/deps.memgraph.io/toolchain-${TOOLCHAIN_VERSION}/toolchain-${TOOLCHAIN_VERSION}-binaries-fedora-36-x86_64.tar.gz \
|
||||||
-O ${TOOLCHAIN_VERSION}-binaries-fedora-36-x86_64.tar.gz \
|
-O toolchain-${TOOLCHAIN_VERSION}-binaries-fedora-36-x86_64.tar.gz \
|
||||||
&& tar xzvf ${TOOLCHAIN_VERSION}-binaries-fedora-36-x86_64.tar.gz -C /opt \
|
&& tar xzvf toolchain-${TOOLCHAIN_VERSION}-binaries-fedora-36-x86_64.tar.gz -C /opt \
|
||||||
&& rm ${TOOLCHAIN_VERSION}-binaries-fedora-36-x86_64.tar.gz
|
&& rm toolchain-${TOOLCHAIN_VERSION}-binaries-fedora-36-x86_64.tar.gz
|
||||||
|
|
||||||
|
# Install toolchain run deps and memgraph build deps
|
||||||
|
SHELL ["/bin/bash", "-c"]
|
||||||
|
RUN git clone https://github.com/memgraph/memgraph.git \
|
||||||
|
&& cd memgraph \
|
||||||
|
&& ./environment/os/fedora-36.sh install TOOLCHAIN_RUN_DEPS \
|
||||||
|
&& ./environment/os/fedora-36.sh install MEMGRAPH_BUILD_DEPS \
|
||||||
|
&& cd .. && rm -rf memgraph
|
||||||
|
|
||||||
|
# Add mgdeps-cache and bench-graph-api hostnames
|
||||||
|
RUN echo -e "10.42.16.10 mgdeps-cache\n10.42.16.10 bench-graph-api" >> /etc/hosts
|
||||||
|
|
||||||
|
# Create mg user and set as default
|
||||||
|
RUN useradd -m -s /bin/bash mg
|
||||||
|
USER mg
|
||||||
|
|
||||||
|
# Install rust
|
||||||
|
RUN curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y
|
||||||
|
|
||||||
|
# Fix node
|
||||||
|
RUN curl https://raw.githubusercontent.com/creationix/nvm/master/install.sh | bash
|
||||||
|
|
||||||
ENTRYPOINT ["sleep", "infinity"]
|
ENTRYPOINT ["sleep", "infinity"]
|
||||||
|
37
release/package/fedora-38/Dockerfile
Normal file
37
release/package/fedora-38/Dockerfile
Normal file
@ -0,0 +1,37 @@
|
|||||||
|
FROM fedora:38
|
||||||
|
|
||||||
|
ARG TOOLCHAIN_VERSION
|
||||||
|
|
||||||
|
# Stops tzdata interactive configuration.
|
||||||
|
RUN yum -y update \
|
||||||
|
&& yum install -y wget git
|
||||||
|
# Do NOT be smart here and clean the cache because the container is used in the
|
||||||
|
# stateful context.
|
||||||
|
|
||||||
|
RUN wget -q https://s3-eu-west-1.amazonaws.com/deps.memgraph.io/toolchain-${TOOLCHAIN_VERSION}/toolchain-${TOOLCHAIN_VERSION}-binaries-fedora-38-amd64.tar.gz \
|
||||||
|
-O toolchain-${TOOLCHAIN_VERSION}-binaries-fedora-38-amd64.tar.gz \
|
||||||
|
&& tar xzvf toolchain-${TOOLCHAIN_VERSION}-binaries-fedora-38-amd64.tar.gz -C /opt \
|
||||||
|
&& rm toolchain-${TOOLCHAIN_VERSION}-binaries-fedora-38-amd64.tar.gz
|
||||||
|
|
||||||
|
# Install toolchain run deps and memgraph build deps
|
||||||
|
SHELL ["/bin/bash", "-c"]
|
||||||
|
RUN git clone https://github.com/memgraph/memgraph.git \
|
||||||
|
&& cd memgraph \
|
||||||
|
&& ./environment/os/fedora-38.sh install TOOLCHAIN_RUN_DEPS \
|
||||||
|
&& ./environment/os/fedora-38.sh install MEMGRAPH_BUILD_DEPS \
|
||||||
|
&& cd .. && rm -rf memgraph
|
||||||
|
|
||||||
|
# Add mgdeps-cache and bench-graph-api hostnames
|
||||||
|
RUN echo -e "10.42.16.10 mgdeps-cache\n10.42.16.10 bench-graph-api" >> /etc/hosts
|
||||||
|
|
||||||
|
# Create mg user and set as default
|
||||||
|
RUN useradd -m -s /bin/bash mg
|
||||||
|
USER mg
|
||||||
|
|
||||||
|
# Install rust
|
||||||
|
RUN curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y
|
||||||
|
|
||||||
|
# Fix node
|
||||||
|
RUN curl https://raw.githubusercontent.com/creationix/nvm/master/install.sh | bash
|
||||||
|
|
||||||
|
ENTRYPOINT ["sleep", "infinity"]
|
37
release/package/fedora-39/Dockerfile
Normal file
37
release/package/fedora-39/Dockerfile
Normal file
@ -0,0 +1,37 @@
|
|||||||
|
FROM fedora:39
|
||||||
|
|
||||||
|
ARG TOOLCHAIN_VERSION
|
||||||
|
|
||||||
|
# Stops tzdata interactive configuration.
|
||||||
|
RUN yum -y update \
|
||||||
|
&& yum install -y wget git
|
||||||
|
# Do NOT be smart here and clean the cache because the container is used in the
|
||||||
|
# stateful context.
|
||||||
|
|
||||||
|
RUN wget -q https://s3-eu-west-1.amazonaws.com/deps.memgraph.io/toolchain-${TOOLCHAIN_VERSION}/toolchain-${TOOLCHAIN_VERSION}-binaries-fedora-39-amd64.tar.gz \
|
||||||
|
-O toolchain-${TOOLCHAIN_VERSION}-binaries-fedora-39-amd64.tar.gz \
|
||||||
|
&& tar xzvf toolchain-${TOOLCHAIN_VERSION}-binaries-fedora-39-amd64.tar.gz -C /opt \
|
||||||
|
&& rm toolchain-${TOOLCHAIN_VERSION}-binaries-fedora-39-amd64.tar.gz
|
||||||
|
|
||||||
|
# Install toolchain run deps and memgraph build deps
|
||||||
|
SHELL ["/bin/bash", "-c"]
|
||||||
|
RUN git clone https://github.com/memgraph/memgraph.git \
|
||||||
|
&& cd memgraph \
|
||||||
|
&& ./environment/os/fedora-39.sh install TOOLCHAIN_RUN_DEPS \
|
||||||
|
&& ./environment/os/fedora-39.sh install MEMGRAPH_BUILD_DEPS \
|
||||||
|
&& cd .. && rm -rf memgraph
|
||||||
|
|
||||||
|
# Add mgdeps-cache and bench-graph-api hostnames
|
||||||
|
RUN echo -e "10.42.16.10 mgdeps-cache\n10.42.16.10 bench-graph-api" >> /etc/hosts
|
||||||
|
|
||||||
|
# Create mg user and set as default
|
||||||
|
RUN useradd -m -s /bin/bash mg
|
||||||
|
USER mg
|
||||||
|
|
||||||
|
# Install rust
|
||||||
|
RUN curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y
|
||||||
|
|
||||||
|
# Fix node
|
||||||
|
RUN curl https://raw.githubusercontent.com/creationix/nvm/master/install.sh | bash
|
||||||
|
|
||||||
|
ENTRYPOINT ["sleep", "infinity"]
|
665
release/package/mgbuild.sh
Executable file
665
release/package/mgbuild.sh
Executable file
@ -0,0 +1,665 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
set -Eeuo pipefail
|
||||||
|
SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
|
||||||
|
SCRIPT_NAME=${0##*/}
|
||||||
|
PROJECT_ROOT="$SCRIPT_DIR/../.."
|
||||||
|
MGBUILD_HOME_DIR="/home/mg"
|
||||||
|
MGBUILD_ROOT_DIR="$MGBUILD_HOME_DIR/memgraph"
|
||||||
|
|
||||||
|
DEFAULT_TOOLCHAIN="v5"
|
||||||
|
SUPPORTED_TOOLCHAINS=(
|
||||||
|
v4 v5
|
||||||
|
)
|
||||||
|
DEFAULT_OS="all"
|
||||||
|
SUPPORTED_OS=(
|
||||||
|
all
|
||||||
|
amzn-2
|
||||||
|
centos-7 centos-9
|
||||||
|
debian-10 debian-11 debian-11-arm debian-12 debian-12-arm
|
||||||
|
fedora-36 fedora-38 fedora-39
|
||||||
|
rocky-9.3
|
||||||
|
ubuntu-18.04 ubuntu-20.04 ubuntu-22.04 ubuntu-22.04-arm
|
||||||
|
)
|
||||||
|
SUPPORTED_OS_V4=(
|
||||||
|
amzn-2
|
||||||
|
centos-7 centos-9
|
||||||
|
debian-10 debian-11 debian-11-arm
|
||||||
|
fedora-36
|
||||||
|
ubuntu-18.04 ubuntu-20.04 ubuntu-22.04 ubuntu-22.04-arm
|
||||||
|
)
|
||||||
|
SUPPORTED_OS_V5=(
|
||||||
|
amzn-2
|
||||||
|
centos-7 centos-9
|
||||||
|
debian-11 debian-11-arm debian-12 debian-12-arm
|
||||||
|
fedora-38 fedora-39
|
||||||
|
rocky-9.3
|
||||||
|
ubuntu-20.04 ubuntu-22.04 ubuntu-22.04-arm
|
||||||
|
)
|
||||||
|
DEFAULT_BUILD_TYPE="Release"
|
||||||
|
SUPPORTED_BUILD_TYPES=(
|
||||||
|
Debug
|
||||||
|
Release
|
||||||
|
RelWithDebInfo
|
||||||
|
)
|
||||||
|
DEFAULT_ARCH="amd"
|
||||||
|
SUPPORTED_ARCHS=(
|
||||||
|
amd
|
||||||
|
arm
|
||||||
|
)
|
||||||
|
SUPPORTED_TESTS=(
|
||||||
|
clang-tidy cppcheck-and-clang-format code-analysis
|
||||||
|
code-coverage drivers durability e2e gql-behave
|
||||||
|
integration leftover-CTest macro-benchmark
|
||||||
|
mgbench stress-plain stress-ssl
|
||||||
|
unit unit-coverage upload-to-bench-graph
|
||||||
|
|
||||||
|
)
|
||||||
|
DEFAULT_THREADS=0
|
||||||
|
DEFAULT_ENTERPRISE_LICENSE=""
|
||||||
|
DEFAULT_ORGANIZATION_NAME="memgraph"
|
||||||
|
|
||||||
|
print_help () {
|
||||||
|
echo -e "\nUsage: $SCRIPT_NAME [GLOBAL OPTIONS] COMMAND [COMMAND OPTIONS]"
|
||||||
|
echo -e "\nInteract with mgbuild containers"
|
||||||
|
|
||||||
|
echo -e "\nCommands:"
|
||||||
|
echo -e " build Build mgbuild image"
|
||||||
|
echo -e " build-memgraph [OPTIONS] Build memgraph binary inside mgbuild container"
|
||||||
|
echo -e " copy OPTIONS Copy an artifact from mgbuild container to host"
|
||||||
|
echo -e " package-memgraph Create memgraph package from built binary inside mgbuild container"
|
||||||
|
echo -e " pull Pull mgbuild image from dockerhub"
|
||||||
|
echo -e " push [OPTIONS] Push mgbuild image to dockerhub"
|
||||||
|
echo -e " run [OPTIONS] Run mgbuild container"
|
||||||
|
echo -e " stop [OPTIONS] Stop mgbuild container"
|
||||||
|
echo -e " test-memgraph TEST Run a selected test TEST (see supported tests below) inside mgbuild container"
|
||||||
|
|
||||||
|
echo -e "\nSupported tests:"
|
||||||
|
echo -e " \"${SUPPORTED_TESTS[*]}\""
|
||||||
|
|
||||||
|
echo -e "\nGlobal options:"
|
||||||
|
echo -e " --arch string Specify target architecture (\"${SUPPORTED_ARCHS[*]}\") (default \"$DEFAULT_ARCH\")"
|
||||||
|
echo -e " --build-type string Specify build type (\"${SUPPORTED_BUILD_TYPES[*]}\") (default \"$DEFAULT_BUILD_TYPE\")"
|
||||||
|
echo -e " --enterprise-license string Specify the enterprise license (default \"\")"
|
||||||
|
echo -e " --organization-name string Specify the organization name (default \"memgraph\")"
|
||||||
|
echo -e " --os string Specify operating system (\"${SUPPORTED_OS[*]}\") (default \"$DEFAULT_OS\")"
|
||||||
|
echo -e " --threads int Specify the number of threads a command will use (default \"\$(nproc)\" for container)"
|
||||||
|
echo -e " --toolchain string Specify toolchain version (\"${SUPPORTED_TOOLCHAINS[*]}\") (default \"$DEFAULT_TOOLCHAIN\")"
|
||||||
|
|
||||||
|
echo -e "\nbuild-memgraph options:"
|
||||||
|
echo -e " --asan Build with ASAN"
|
||||||
|
echo -e " --community Build community version"
|
||||||
|
echo -e " --coverage Build with code coverage"
|
||||||
|
echo -e " --for-docker Add flag -DMG_TELEMETRY_ID_OVERRIDE=DOCKER to cmake"
|
||||||
|
echo -e " --for-platform Add flag -DMG_TELEMETRY_ID_OVERRIDE=DOCKER-PLATFORM to cmake"
|
||||||
|
echo -e " --init-only Only run init script"
|
||||||
|
echo -e " --no-copy Don't copy the memgraph repo from host."
|
||||||
|
echo -e " Use this option with caution, be sure that memgraph source code is in correct location inside mgbuild container"
|
||||||
|
echo -e " --ubsan Build with UBSAN"
|
||||||
|
|
||||||
|
echo -e "\ncopy options:"
|
||||||
|
echo -e " --binary Copy memgraph binary from mgbuild container to host"
|
||||||
|
echo -e " --build-logs Copy build logs from mgbuild container to host"
|
||||||
|
echo -e " --package Copy memgraph package from mgbuild container to host"
|
||||||
|
|
||||||
|
echo -e "\npush options:"
|
||||||
|
echo -e " -p, --password string Specify password for docker login"
|
||||||
|
echo -e " -u, --username string Specify username for docker login"
|
||||||
|
|
||||||
|
echo -e "\nrun options:"
|
||||||
|
echo -e " --pull Pull the mgbuild image before running"
|
||||||
|
|
||||||
|
echo -e "\nstop options:"
|
||||||
|
echo -e " --remove Remove the stopped mgbuild container"
|
||||||
|
|
||||||
|
echo -e "\nToolchain v4 supported OSs:"
|
||||||
|
echo -e " \"${SUPPORTED_OS_V4[*]}\""
|
||||||
|
|
||||||
|
echo -e "\nToolchain v5 supported OSs:"
|
||||||
|
echo -e " \"${SUPPORTED_OS_V5[*]}\""
|
||||||
|
|
||||||
|
echo -e "\nExample usage:"
|
||||||
|
echo -e " $SCRIPT_NAME --os debian-12 --toolchain v5 --arch amd run"
|
||||||
|
echo -e " $SCRIPT_NAME --os debian-12 --toolchain v5 --arch amd --build-type RelWithDebInfo build-memgraph --community"
|
||||||
|
echo -e " $SCRIPT_NAME --os debian-12 --toolchain v5 --arch amd --build-type RelWithDebInfo test-memgraph unit"
|
||||||
|
echo -e " $SCRIPT_NAME --os debian-12 --toolchain v5 --arch amd package"
|
||||||
|
echo -e " $SCRIPT_NAME --os debian-12 --toolchain v5 --arch amd copy --package"
|
||||||
|
echo -e " $SCRIPT_NAME --os debian-12 --toolchain v5 --arch amd stop --remove"
|
||||||
|
}
|
||||||
|
|
||||||
|
check_support() {
|
||||||
|
local is_supported=false
|
||||||
|
case "$1" in
|
||||||
|
arch)
|
||||||
|
for e in "${SUPPORTED_ARCHS[@]}"; do
|
||||||
|
if [[ "$e" == "$2" ]]; then
|
||||||
|
is_supported=true
|
||||||
|
break
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
if [[ "$is_supported" == false ]]; then
|
||||||
|
echo -e "Error: Architecture $2 isn't supported!\nChoose from ${SUPPORTED_ARCHS[*]}"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
build_type)
|
||||||
|
for e in "${SUPPORTED_BUILD_TYPES[@]}"; do
|
||||||
|
if [[ "$e" == "$2" ]]; then
|
||||||
|
is_supported=true
|
||||||
|
break
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
if [[ "$is_supported" == false ]]; then
|
||||||
|
echo -e "Error: Build type $2 isn't supported!\nChoose from ${SUPPORTED_BUILD_TYPES[*]}"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
os)
|
||||||
|
for e in "${SUPPORTED_OS[@]}"; do
|
||||||
|
if [[ "$e" == "$2" ]]; then
|
||||||
|
is_supported=true
|
||||||
|
break
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
if [[ "$is_supported" == false ]]; then
|
||||||
|
echo -e "Error: OS $2 isn't supported!\nChoose from ${SUPPORTED_OS[*]}"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
toolchain)
|
||||||
|
for e in "${SUPPORTED_TOOLCHAINS[@]}"; do
|
||||||
|
if [[ "$e" == "$2" ]]; then
|
||||||
|
is_supported=true
|
||||||
|
break
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
if [[ "$is_supported" == false ]]; then
|
||||||
|
echo -e "TError: oolchain version $2 isn't supported!\nChoose from ${SUPPORTED_TOOLCHAINS[*]}"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
os_toolchain_combo)
|
||||||
|
if [[ "$3" == "v4" ]]; then
|
||||||
|
local SUPPORTED_OS_TOOLCHAIN=("${SUPPORTED_OS_V4[@]}")
|
||||||
|
elif [[ "$3" == "v5" ]]; then
|
||||||
|
local SUPPORTED_OS_TOOLCHAIN=("${SUPPORTED_OS_V5[@]}")
|
||||||
|
else
|
||||||
|
echo -e "Error: $3 isn't a supported toolchain_version!\nChoose from ${SUPPORTED_TOOLCHAINS[*]}"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
for e in "${SUPPORTED_OS_TOOLCHAIN[@]}"; do
|
||||||
|
if [[ "$e" == "$2" ]]; then
|
||||||
|
is_supported=true
|
||||||
|
break
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
if [[ "$is_supported" == false ]]; then
|
||||||
|
echo -e "Error: Toolchain version $3 doesn't support OS $2!\nChoose from ${SUPPORTED_OS_TOOLCHAIN[*]}"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
echo -e "Error: This function can only check arch, build_type, os, toolchain version and os toolchain combination"
|
||||||
|
exit 1
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
##################################################
|
||||||
|
######## BUILD, COPY AND PACKAGE MEMGRAPH ########
|
||||||
|
##################################################
|
||||||
|
build_memgraph () {
|
||||||
|
local build_container="mgbuild_${toolchain_version}_${os}"
|
||||||
|
local ACTIVATE_TOOLCHAIN="source /opt/toolchain-${toolchain_version}/activate"
|
||||||
|
local container_build_dir="$MGBUILD_ROOT_DIR/build"
|
||||||
|
local container_output_dir="$container_build_dir/output"
|
||||||
|
local arm_flag=""
|
||||||
|
if [[ "$arch" == "arm" ]] || [[ "$os" =~ "-arm" ]]; then
|
||||||
|
arm_flag="-DMG_ARCH="ARM64""
|
||||||
|
fi
|
||||||
|
local build_type_flag="-DCMAKE_BUILD_TYPE=$build_type"
|
||||||
|
local telemetry_id_override_flag=""
|
||||||
|
local community_flag=""
|
||||||
|
local coverage_flag=""
|
||||||
|
local asan_flag=""
|
||||||
|
local ubsan_flag=""
|
||||||
|
local init_only=false
|
||||||
|
local for_docker=false
|
||||||
|
local for_platform=false
|
||||||
|
local copy_from_host=true
|
||||||
|
while [[ "$#" -gt 0 ]]; do
|
||||||
|
case "$1" in
|
||||||
|
--community)
|
||||||
|
community_flag="-DMG_ENTERPRISE=OFF"
|
||||||
|
shift 1
|
||||||
|
;;
|
||||||
|
--init-only)
|
||||||
|
init_only=true
|
||||||
|
shift 1
|
||||||
|
;;
|
||||||
|
--for-docker)
|
||||||
|
for_docker=true
|
||||||
|
if [[ "$for_platform" == "true" ]]; then
|
||||||
|
echo "Error: Cannot combine --for-docker and --for-platform flags"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
telemetry_id_override_flag=" -DMG_TELEMETRY_ID_OVERRIDE=DOCKER "
|
||||||
|
shift 1
|
||||||
|
;;
|
||||||
|
--for-platform)
|
||||||
|
for_platform=true
|
||||||
|
if [[ "$for_docker" == "true" ]]; then
|
||||||
|
echo "Error: Cannot combine --for-docker and --for-platform flags"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
telemetry_id_override_flag=" -DMG_TELEMETRY_ID_OVERRIDE=DOCKER-PLATFORM "
|
||||||
|
shift 1
|
||||||
|
;;
|
||||||
|
--coverage)
|
||||||
|
coverage_flag="-DTEST_COVERAGE=ON"
|
||||||
|
shift 1
|
||||||
|
;;
|
||||||
|
--asan)
|
||||||
|
asan_flag="-DASAN=ON"
|
||||||
|
shift 1
|
||||||
|
;;
|
||||||
|
--ubsan)
|
||||||
|
ubsan_flag="-DUBSAN=ON"
|
||||||
|
shift 1
|
||||||
|
;;
|
||||||
|
--no-copy)
|
||||||
|
copy_from_host=false
|
||||||
|
shift 1
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
echo "Error: Unknown flag '$1'"
|
||||||
|
exit 1
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
|
||||||
|
echo "Initializing deps ..."
|
||||||
|
# If master is not the current branch, fetch it, because the get_version
|
||||||
|
# script depends on it. If we are on master, the fetch command is going to
|
||||||
|
# fail so that's why there is the explicit check.
|
||||||
|
# Required here because Docker build container can't access remote.
|
||||||
|
cd "$PROJECT_ROOT"
|
||||||
|
if [[ "$(git rev-parse --abbrev-ref HEAD)" != "master" ]]; then
|
||||||
|
git fetch origin master:master
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [[ "$copy_from_host" == "true" ]]; then
|
||||||
|
# Ensure we have a clean build directory
|
||||||
|
docker exec -u mg "$build_container" bash -c "rm -rf $MGBUILD_ROOT_DIR && mkdir -p $MGBUILD_ROOT_DIR"
|
||||||
|
echo "Copying project files..."
|
||||||
|
docker cp "$PROJECT_ROOT/." "$build_container:$MGBUILD_ROOT_DIR/"
|
||||||
|
fi
|
||||||
|
# Change ownership of copied files so the mg user inside container can access them
|
||||||
|
docker exec -u root $build_container bash -c "chown -R mg:mg $MGBUILD_ROOT_DIR"
|
||||||
|
|
||||||
|
echo "Installing dependencies using '/memgraph/environment/os/$os.sh' script..."
|
||||||
|
docker exec -u root "$build_container" bash -c "$MGBUILD_ROOT_DIR/environment/os/$os.sh check TOOLCHAIN_RUN_DEPS || /environment/os/$os.sh install TOOLCHAIN_RUN_DEPS"
|
||||||
|
docker exec -u root "$build_container" bash -c "$MGBUILD_ROOT_DIR/environment/os/$os.sh check MEMGRAPH_BUILD_DEPS || /environment/os/$os.sh install MEMGRAPH_BUILD_DEPS"
|
||||||
|
|
||||||
|
echo "Building targeted package..."
|
||||||
|
# Fix issue with git marking directory as not safe
|
||||||
|
docker exec -u mg "$build_container" bash -c "cd $MGBUILD_ROOT_DIR && git config --global --add safe.directory '*'"
|
||||||
|
docker exec -u mg "$build_container" bash -c "cd $MGBUILD_ROOT_DIR && $ACTIVATE_TOOLCHAIN && ./init --ci"
|
||||||
|
if [[ "$init_only" == "true" ]]; then
|
||||||
|
return
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "Building Memgraph for $os on $build_container..."
|
||||||
|
docker exec -u mg "$build_container" bash -c "cd $container_build_dir && rm -rf ./*"
|
||||||
|
# Fix cmake failing locally if remote is clone via ssh
|
||||||
|
docker exec -u mg "$build_container" bash -c "cd $MGBUILD_ROOT_DIR && git remote set-url origin https://github.com/memgraph/memgraph.git"
|
||||||
|
|
||||||
|
# Define cmake command
|
||||||
|
local cmake_cmd="cmake $build_type_flag $arm_flag $community_flag $telemetry_id_override_flag $coverage_flag $asan_flag $ubsan_flag .."
|
||||||
|
docker exec -u mg "$build_container" bash -c "cd $container_build_dir && $ACTIVATE_TOOLCHAIN && $cmake_cmd"
|
||||||
|
|
||||||
|
# ' is used instead of " because we need to run make within the allowed
|
||||||
|
# container resources.
|
||||||
|
# Default value for $threads is 0 instead of $(nproc) because macos
|
||||||
|
# doesn't support the nproc command.
|
||||||
|
# 0 is set for default value and checked here because mgbuild containers
|
||||||
|
# support nproc
|
||||||
|
# shellcheck disable=SC2016
|
||||||
|
if [[ "$threads" == 0 ]]; then
|
||||||
|
docker exec -u mg "$build_container" bash -c "cd $container_build_dir && $ACTIVATE_TOOLCHAIN "'&& make -j$(nproc)'
|
||||||
|
docker exec -u mg "$build_container" bash -c "cd $container_build_dir && $ACTIVATE_TOOLCHAIN "'&& make -j$(nproc) -B mgconsole'
|
||||||
|
else
|
||||||
|
docker exec -u mg "$build_container" bash -c "cd $container_build_dir && $ACTIVATE_TOOLCHAIN "'&& make -j$threads'
|
||||||
|
docker exec -u mg "$build_container" bash -c "cd $container_build_dir && $ACTIVATE_TOOLCHAIN "'&& make -j$threads -B mgconsole'
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
package_memgraph() {
|
||||||
|
local ACTIVATE_TOOLCHAIN="source /opt/toolchain-${toolchain_version}/activate"
|
||||||
|
local build_container="mgbuild_${toolchain_version}_${os}"
|
||||||
|
local container_output_dir="$MGBUILD_ROOT_DIR/build/output"
|
||||||
|
local package_command=""
|
||||||
|
if [[ "$os" =~ ^"centos".* ]] || [[ "$os" =~ ^"fedora".* ]] || [[ "$os" =~ ^"amzn".* ]] || [[ "$os" =~ ^"rocky".* ]]; then
|
||||||
|
docker exec -u root "$build_container" bash -c "yum -y update"
|
||||||
|
package_command=" cpack -G RPM --config ../CPackConfig.cmake && rpmlint --file='../../release/rpm/rpmlintrc' memgraph*.rpm "
|
||||||
|
fi
|
||||||
|
if [[ "$os" =~ ^"debian".* ]]; then
|
||||||
|
docker exec -u root "$build_container" bash -c "apt --allow-releaseinfo-change -y update"
|
||||||
|
package_command=" cpack -G DEB --config ../CPackConfig.cmake "
|
||||||
|
fi
|
||||||
|
if [[ "$os" =~ ^"ubuntu".* ]]; then
|
||||||
|
docker exec -u root "$build_container" bash -c "apt update"
|
||||||
|
package_command=" cpack -G DEB --config ../CPackConfig.cmake "
|
||||||
|
fi
|
||||||
|
docker exec -u mg "$build_container" bash -c "mkdir -p $container_output_dir && cd $container_output_dir && $ACTIVATE_TOOLCHAIN && $package_command"
|
||||||
|
}
|
||||||
|
|
||||||
|
copy_memgraph() {
|
||||||
|
local build_container="mgbuild_${toolchain_version}_${os}"
|
||||||
|
case "$1" in
|
||||||
|
--binary)
|
||||||
|
echo "Copying memgraph binary to host..."
|
||||||
|
local container_output_path="$MGBUILD_ROOT_DIR/build/memgraph"
|
||||||
|
local host_output_path="$PROJECT_ROOT/build/memgraph"
|
||||||
|
mkdir -p "$PROJECT_ROOT/build"
|
||||||
|
docker cp -L $build_container:$container_output_path $host_output_path
|
||||||
|
echo "Binary saved to $host_output_path"
|
||||||
|
;;
|
||||||
|
--build-logs)
|
||||||
|
echo "Copying memgraph build logs to host..."
|
||||||
|
local container_output_path="$MGBUILD_ROOT_DIR/build/logs"
|
||||||
|
local host_output_path="$PROJECT_ROOT/build/logs"
|
||||||
|
mkdir -p "$PROJECT_ROOT/build"
|
||||||
|
docker cp -L $build_container:$container_output_path $host_output_path
|
||||||
|
echo "Build logs saved to $host_output_path"
|
||||||
|
;;
|
||||||
|
--package)
|
||||||
|
echo "Copying memgraph package to host..."
|
||||||
|
local container_output_dir="$MGBUILD_ROOT_DIR/build/output"
|
||||||
|
local host_output_dir="$PROJECT_ROOT/build/output/$os"
|
||||||
|
local last_package_name=$(docker exec -u mg "$build_container" bash -c "cd $container_output_dir && ls -t memgraph* | head -1")
|
||||||
|
mkdir -p "$host_output_dir"
|
||||||
|
docker cp "$build_container:$container_output_dir/$last_package_name" "$host_output_dir/$last_package_name"
|
||||||
|
echo "Package saved to $host_output_dir/$last_package_name"
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
echo "Error: Unknown flag '$1'"
|
||||||
|
exit 1
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
##################################################
|
||||||
|
##################### TESTS ######################
|
||||||
|
##################################################
|
||||||
|
test_memgraph() {
|
||||||
|
local ACTIVATE_TOOLCHAIN="source /opt/toolchain-${toolchain_version}/activate"
|
||||||
|
local ACTIVATE_VENV="./setup.sh /opt/toolchain-${toolchain_version}/activate"
|
||||||
|
local EXPORT_LICENSE="export MEMGRAPH_ENTERPRISE_LICENSE=$enterprise_license"
|
||||||
|
local EXPORT_ORG_NAME="export MEMGRAPH_ORGANIZATION_NAME=$organization_name"
|
||||||
|
local BUILD_DIR="$MGBUILD_ROOT_DIR/build"
|
||||||
|
local build_container="mgbuild_${toolchain_version}_${os}"
|
||||||
|
echo "Running $1 test on $build_container..."
|
||||||
|
|
||||||
|
case "$1" in
|
||||||
|
unit)
|
||||||
|
docker exec -u mg $build_container bash -c "$EXPORT_LICENSE && $EXPORT_ORG_NAME && cd $BUILD_DIR && $ACTIVATE_TOOLCHAIN "'&& ctest -R memgraph__unit --output-on-failure -j$threads'
|
||||||
|
;;
|
||||||
|
unit-coverage)
|
||||||
|
local setup_lsan_ubsan="export LSAN_OPTIONS=suppressions=$BUILD_DIR/../tools/lsan.supp && export UBSAN_OPTIONS=halt_on_error=1"
|
||||||
|
docker exec -u mg $build_container bash -c "$EXPORT_LICENSE && $EXPORT_ORG_NAME && cd $BUILD_DIR && $ACTIVATE_TOOLCHAIN && $setup_lsan_ubsan "'&& ctest -R memgraph__unit --output-on-failure -j2'
|
||||||
|
;;
|
||||||
|
leftover-CTest)
|
||||||
|
docker exec -u mg $build_container bash -c "$EXPORT_LICENSE && $EXPORT_ORG_NAME && cd $BUILD_DIR && $ACTIVATE_TOOLCHAIN "'&& ctest -E "(memgraph__unit|memgraph__benchmark)" --output-on-failure'
|
||||||
|
;;
|
||||||
|
drivers)
|
||||||
|
docker exec -u mg $build_container bash -c "$EXPORT_LICENSE && $EXPORT_ORG_NAME && cd $MGBUILD_ROOT_DIR "'&& ./tests/drivers/run.sh'
|
||||||
|
;;
|
||||||
|
integration)
|
||||||
|
docker exec -u mg $build_container bash -c "$EXPORT_LICENSE && $EXPORT_ORG_NAME && cd $MGBUILD_ROOT_DIR "'&& tests/integration/run.sh'
|
||||||
|
;;
|
||||||
|
cppcheck-and-clang-format)
|
||||||
|
local test_output_path="$MGBUILD_ROOT_DIR/tools/github/cppcheck_and_clang_format.txt"
|
||||||
|
local test_output_host_dest="$PROJECT_ROOT/tools/github/cppcheck_and_clang_format.txt"
|
||||||
|
docker exec -u mg $build_container bash -c "$EXPORT_LICENSE && $EXPORT_ORG_NAME && cd $MGBUILD_ROOT_DIR/tools/github && $ACTIVATE_TOOLCHAIN "'&& ./cppcheck_and_clang_format diff'
|
||||||
|
docker cp $build_container:$test_output_path $test_output_host_dest
|
||||||
|
;;
|
||||||
|
stress-plain)
|
||||||
|
docker exec -u mg $build_container bash -c "$EXPORT_LICENSE && $EXPORT_ORG_NAME && cd $MGBUILD_ROOT_DIR/tests/stress && source ve3/bin/activate "'&& ./continuous_integration'
|
||||||
|
;;
|
||||||
|
stress-ssl)
|
||||||
|
docker exec -u mg $build_container bash -c "$EXPORT_LICENSE && $EXPORT_ORG_NAME && cd $MGBUILD_ROOT_DIR/tests/stress && source ve3/bin/activate "'&& ./continuous_integration --use-ssl'
|
||||||
|
;;
|
||||||
|
durability)
|
||||||
|
docker exec -u mg $build_container bash -c "$EXPORT_LICENSE && $EXPORT_ORG_NAME && cd $MGBUILD_ROOT_DIR/tests/stress && source ve3/bin/activate "'&& python3 durability --num-steps 5'
|
||||||
|
;;
|
||||||
|
gql-behave)
|
||||||
|
local test_output_dir="$MGBUILD_ROOT_DIR/tests/gql_behave"
|
||||||
|
local test_output_host_dest="$PROJECT_ROOT/tests/gql_behave"
|
||||||
|
docker exec -u mg $build_container bash -c "$EXPORT_LICENSE && $EXPORT_ORG_NAME && cd $MGBUILD_ROOT_DIR/tests && $ACTIVATE_VENV && cd $MGBUILD_ROOT_DIR/tests/gql_behave "'&& ./continuous_integration'
|
||||||
|
docker cp $build_container:$test_output_dir/gql_behave_status.csv $test_output_host_dest/gql_behave_status.csv
|
||||||
|
docker cp $build_container:$test_output_dir/gql_behave_status.html $test_output_host_dest/gql_behave_status.html
|
||||||
|
;;
|
||||||
|
macro-benchmark)
|
||||||
|
docker exec -u mg $build_container bash -c "$EXPORT_LICENSE && $EXPORT_ORG_NAME && export USER=mg && export LANG=$(echo $LANG) && cd $MGBUILD_ROOT_DIR/tests/macro_benchmark "'&& ./harness QuerySuite MemgraphRunner --groups aggregation 1000_create unwind_create dense_expand match --no-strict'
|
||||||
|
;;
|
||||||
|
mgbench)
|
||||||
|
docker exec -u mg $build_container bash -c "$EXPORT_LICENSE && $EXPORT_ORG_NAME && cd $MGBUILD_ROOT_DIR/tests/mgbench "'&& ./benchmark.py vendor-native --num-workers-for-benchmark 12 --export-results benchmark_result.json pokec/medium/*/*'
|
||||||
|
;;
|
||||||
|
upload-to-bench-graph)
|
||||||
|
shift 1
|
||||||
|
local SETUP_PASSED_ARGS="export PASSED_ARGS=\"$@\""
|
||||||
|
local SETUP_VE3_ENV="virtualenv -p python3 ve3 && source ve3/bin/activate && pip install -r requirements.txt"
|
||||||
|
docker exec -u mg $build_container bash -c "$EXPORT_LICENSE && $EXPORT_ORG_NAME && cd $MGBUILD_ROOT_DIR/tools/bench-graph-client && $SETUP_VE3_ENV && $SETUP_PASSED_ARGS "'&& ./main.py $PASSED_ARGS'
|
||||||
|
;;
|
||||||
|
code-analysis)
|
||||||
|
shift 1
|
||||||
|
local SETUP_PASSED_ARGS="export PASSED_ARGS=\"$@\""
|
||||||
|
docker exec -u mg $build_container bash -c "$EXPORT_LICENSE && $EXPORT_ORG_NAME && cd $MGBUILD_ROOT_DIR/tests/code_analysis && $SETUP_PASSED_ARGS "'&& ./python_code_analysis.sh $PASSED_ARGS'
|
||||||
|
;;
|
||||||
|
code-coverage)
|
||||||
|
local test_output_path="$MGBUILD_ROOT_DIR/tools/github/generated/code_coverage.tar.gz"
|
||||||
|
local test_output_host_dest="$PROJECT_ROOT/tools/github/generated/code_coverage.tar.gz"
|
||||||
|
docker exec -u mg $build_container bash -c "$EXPORT_LICENSE && $EXPORT_ORG_NAME && $ACTIVATE_TOOLCHAIN && cd $MGBUILD_ROOT_DIR/tools/github "'&& ./coverage_convert'
|
||||||
|
docker exec -u mg $build_container bash -c "cd $MGBUILD_ROOT_DIR/tools/github/generated && tar -czf code_coverage.tar.gz coverage.json html report.json summary.rmu"
|
||||||
|
mkdir -p $PROJECT_ROOT/tools/github/generated
|
||||||
|
docker cp $build_container:$test_output_path $test_output_host_dest
|
||||||
|
;;
|
||||||
|
clang-tidy)
|
||||||
|
shift 1
|
||||||
|
local SETUP_PASSED_ARGS="export PASSED_ARGS=\"$@\""
|
||||||
|
docker exec -u mg $build_container bash -c "$EXPORT_LICENSE && $EXPORT_ORG_NAME && export THREADS=$threads && $ACTIVATE_TOOLCHAIN && cd $MGBUILD_ROOT_DIR/tests/code_analysis && $SETUP_PASSED_ARGS "'&& ./clang_tidy.sh $PASSED_ARGS'
|
||||||
|
;;
|
||||||
|
e2e)
|
||||||
|
# local kafka_container="kafka_kafka_1"
|
||||||
|
# local kafka_hostname="kafka"
|
||||||
|
# local pulsar_container="pulsar_pulsar_1"
|
||||||
|
# local pulsar_hostname="pulsar"
|
||||||
|
# local setup_hostnames="export KAFKA_HOSTNAME=$kafka_hostname && PULSAR_HOSTNAME=$pulsar_hostname"
|
||||||
|
# local build_container_network=$(docker inspect $build_container --format='{{ .HostConfig.NetworkMode }}')
|
||||||
|
# docker network connect --alias $kafka_hostname $build_container_network $kafka_container > /dev/null 2>&1 || echo "Kafka container already inside correct network or something went wrong ..."
|
||||||
|
# docker network connect --alias $pulsar_hostname $build_container_network $pulsar_container > /dev/null 2>&1 || echo "Kafka container already inside correct network or something went wrong ..."
|
||||||
|
docker exec -u mg $build_container bash -c "pip install --user networkx && pip3 install --user networkx"
|
||||||
|
docker exec -u mg $build_container bash -c "$EXPORT_LICENSE && $EXPORT_ORG_NAME && cd $MGBUILD_ROOT_DIR/tests && $ACTIVATE_VENV && source ve3/bin/activate_e2e && cd $MGBUILD_ROOT_DIR/tests/e2e "'&& ./run.sh'
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
echo "Error: Unknown test '$1'"
|
||||||
|
exit 1
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
##################################################
|
||||||
|
################### PARSE ARGS ###################
|
||||||
|
##################################################
|
||||||
|
if [ "$#" -eq 0 ] || [ "$1" == "-h" ] || [ "$1" == "--help" ]; then
|
||||||
|
print_help
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
arch=$DEFAULT_ARCH
|
||||||
|
build_type=$DEFAULT_BUILD_TYPE
|
||||||
|
enterprise_license=$DEFAULT_ENTERPRISE_LICENSE
|
||||||
|
organization_name=$DEFAULT_ORGANIZATION_NAME
|
||||||
|
os=$DEFAULT_OS
|
||||||
|
threads=$DEFAULT_THREADS
|
||||||
|
toolchain_version=$DEFAULT_TOOLCHAIN
|
||||||
|
command=""
|
||||||
|
while [[ $# -gt 0 ]]; do
|
||||||
|
case "$1" in
|
||||||
|
--arch)
|
||||||
|
arch=$2
|
||||||
|
check_support arch $arch
|
||||||
|
shift 2
|
||||||
|
;;
|
||||||
|
--build-type)
|
||||||
|
build_type=$2
|
||||||
|
check_support build_type $build_type
|
||||||
|
shift 2
|
||||||
|
;;
|
||||||
|
--enterprise-license)
|
||||||
|
enterprise_license=$2
|
||||||
|
shift 2
|
||||||
|
;;
|
||||||
|
--organization-name)
|
||||||
|
organization_name=$2
|
||||||
|
shift 2
|
||||||
|
;;
|
||||||
|
--os)
|
||||||
|
os=$2
|
||||||
|
check_support os $os
|
||||||
|
shift 2
|
||||||
|
;;
|
||||||
|
--threads)
|
||||||
|
threads=$2
|
||||||
|
shift 2
|
||||||
|
;;
|
||||||
|
--toolchain)
|
||||||
|
toolchain_version=$2
|
||||||
|
check_support toolchain $toolchain_version
|
||||||
|
shift 2
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
if [[ "$1" =~ ^--.* ]]; then
|
||||||
|
echo -e "Error: Unknown option '$1'"
|
||||||
|
exit 1
|
||||||
|
else
|
||||||
|
command=$1
|
||||||
|
shift 1
|
||||||
|
break
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
check_support os_toolchain_combo $os $toolchain_version
|
||||||
|
|
||||||
|
if [[ "$command" == "" ]]; then
|
||||||
|
echo -e "Error: Command not provided, please provide command"
|
||||||
|
print_help
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
if docker compose version > /dev/null 2>&1; then
|
||||||
|
docker_compose_cmd="docker compose"
|
||||||
|
elif which docker-compose > /dev/null 2>&1; then
|
||||||
|
docker_compose_cmd="docker-compose"
|
||||||
|
else
|
||||||
|
echo -e "Missing command: There has to be installed either 'docker-compose' or 'docker compose'"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
echo "Using $docker_compose_cmd"
|
||||||
|
|
||||||
|
##################################################
|
||||||
|
################# PARSE COMMAND ##################
|
||||||
|
##################################################
|
||||||
|
case $command in
|
||||||
|
build)
|
||||||
|
cd $SCRIPT_DIR
|
||||||
|
if [[ "$os" == "all" ]]; then
|
||||||
|
$docker_compose_cmd -f ${arch}-builders-${toolchain_version}.yml build
|
||||||
|
else
|
||||||
|
$docker_compose_cmd -f ${arch}-builders-${toolchain_version}.yml build mgbuild_${toolchain_version}_${os}
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
run)
|
||||||
|
cd $SCRIPT_DIR
|
||||||
|
pull=false
|
||||||
|
if [[ "$#" -gt 0 ]]; then
|
||||||
|
if [[ "$1" == "--pull" ]]; then
|
||||||
|
pull=true
|
||||||
|
else
|
||||||
|
echo "Error: Unknown flag '$1'"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
if [[ "$os" == "all" ]]; then
|
||||||
|
if [[ "$pull" == "true" ]]; then
|
||||||
|
$docker_compose_cmd -f ${arch}-builders-${toolchain_version}.yml pull --ignore-pull-failures
|
||||||
|
elif [[ "$docker_compose_cmd" == "docker compose" ]]; then
|
||||||
|
$docker_compose_cmd -f ${arch}-builders-${toolchain_version}.yml pull --ignore-pull-failures --policy missing
|
||||||
|
fi
|
||||||
|
$docker_compose_cmd -f ${arch}-builders-${toolchain_version}.yml up -d
|
||||||
|
else
|
||||||
|
if [[ "$pull" == "true" ]]; then
|
||||||
|
$docker_compose_cmd -f ${arch}-builders-${toolchain_version}.yml pull mgbuild_${toolchain_version}_${os}
|
||||||
|
elif ! docker image inspect memgraph/mgbuild:${toolchain_version}_${os} > /dev/null 2>&1; then
|
||||||
|
$docker_compose_cmd -f ${arch}-builders-${toolchain_version}.yml pull --ignore-pull-failures mgbuild_${toolchain_version}_${os}
|
||||||
|
fi
|
||||||
|
$docker_compose_cmd -f ${arch}-builders-${toolchain_version}.yml up -d mgbuild_${toolchain_version}_${os}
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
stop)
|
||||||
|
cd $SCRIPT_DIR
|
||||||
|
remove=false
|
||||||
|
if [[ "$#" -gt 0 ]]; then
|
||||||
|
if [[ "$1" == "--remove" ]]; then
|
||||||
|
remove=true
|
||||||
|
else
|
||||||
|
echo "Error: Unknown flag '$1'"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
if [[ "$os" == "all" ]]; then
|
||||||
|
$docker_compose_cmd -f ${arch}-builders-${toolchain_version}.yml down
|
||||||
|
else
|
||||||
|
docker stop mgbuild_${toolchain_version}_${os}
|
||||||
|
if [[ "$remove" == "true" ]]; then
|
||||||
|
docker rm mgbuild_${toolchain_version}_${os}
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
pull)
|
||||||
|
cd $SCRIPT_DIR
|
||||||
|
if [[ "$os" == "all" ]]; then
|
||||||
|
$docker_compose_cmd -f ${arch}-builders-${toolchain_version}.yml pull --ignore-pull-failures
|
||||||
|
else
|
||||||
|
$docker_compose_cmd -f ${arch}-builders-${toolchain_version}.yml pull mgbuild_${toolchain_version}_${os}
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
push)
|
||||||
|
docker login $@
|
||||||
|
cd $SCRIPT_DIR
|
||||||
|
if [[ "$os" == "all" ]]; then
|
||||||
|
$docker_compose_cmd -f ${arch}-builders-${toolchain_version}.yml push --ignore-push-failures
|
||||||
|
else
|
||||||
|
$docker_compose_cmd -f ${arch}-builders-${toolchain_version}.yml push mgbuild_${toolchain_version}_${os}
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
build-memgraph)
|
||||||
|
build_memgraph $@
|
||||||
|
;;
|
||||||
|
package-memgraph)
|
||||||
|
package_memgraph
|
||||||
|
;;
|
||||||
|
test-memgraph)
|
||||||
|
test_memgraph $@
|
||||||
|
;;
|
||||||
|
copy)
|
||||||
|
copy_memgraph $@
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
echo "Error: Unknown command '$command'"
|
||||||
|
exit 1
|
||||||
|
;;
|
||||||
|
esac
|
40
release/package/rocky-9.3/Dockerfile
Normal file
40
release/package/rocky-9.3/Dockerfile
Normal file
@ -0,0 +1,40 @@
|
|||||||
|
FROM rockylinux:9.3
|
||||||
|
|
||||||
|
ARG TOOLCHAIN_VERSION
|
||||||
|
|
||||||
|
# Stops tzdata interactive configuration.
|
||||||
|
RUN yum -y update \
|
||||||
|
&& yum install -y wget git
|
||||||
|
# Do NOT be smart here and clean the cache because the container is used in the
|
||||||
|
# stateful context.
|
||||||
|
|
||||||
|
RUN wget -q https://s3-eu-west-1.amazonaws.com/deps.memgraph.io/toolchain-${TOOLCHAIN_VERSION}/toolchain-${TOOLCHAIN_VERSION}-binaries-rocky-9.3-amd64.tar.gz \
|
||||||
|
-O toolchain-${TOOLCHAIN_VERSION}-binaries-rocky-9.3-amd64.tar.gz \
|
||||||
|
&& tar xzvf toolchain-${TOOLCHAIN_VERSION}-binaries-rocky-9.3-amd64.tar.gz -C /opt \
|
||||||
|
&& rm toolchain-${TOOLCHAIN_VERSION}-binaries-rocky-9.3-amd64.tar.gz
|
||||||
|
|
||||||
|
# Install toolchain run deps and memgraph build deps
|
||||||
|
SHELL ["/bin/bash", "-c"]
|
||||||
|
RUN git clone https://github.com/memgraph/memgraph.git \
|
||||||
|
&& cd memgraph \
|
||||||
|
&& ./environment/os/rocky-9.3.sh install TOOLCHAIN_RUN_DEPS \
|
||||||
|
&& ./environment/os/rocky-9.3.sh install MEMGRAPH_BUILD_DEPS \
|
||||||
|
&& cd .. && rm -rf memgraph
|
||||||
|
|
||||||
|
# Add mgdeps-cache and bench-graph-api hostnames
|
||||||
|
RUN echo -e "10.42.16.10 mgdeps-cache\n10.42.16.10 bench-graph-api" >> /etc/hosts
|
||||||
|
|
||||||
|
# Create mg user and set as default
|
||||||
|
RUN useradd -m -s /bin/bash mg
|
||||||
|
USER mg
|
||||||
|
|
||||||
|
# Install rust
|
||||||
|
RUN curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y
|
||||||
|
|
||||||
|
# Fix node
|
||||||
|
RUN curl https://raw.githubusercontent.com/creationix/nvm/master/install.sh | bash
|
||||||
|
|
||||||
|
# Install PyYAML (only for amzn-2, centos-7, cento-9 and rocky-9.3)
|
||||||
|
RUN pip3 install --user PyYAML
|
||||||
|
|
||||||
|
ENTRYPOINT ["sleep", "infinity"]
|
@ -1,208 +0,0 @@
|
|||||||
#!/bin/bash
|
|
||||||
|
|
||||||
set -Eeuo pipefail
|
|
||||||
|
|
||||||
SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
|
|
||||||
SUPPORTED_OS=(
|
|
||||||
centos-7 centos-9
|
|
||||||
debian-10 debian-11 debian-11-arm
|
|
||||||
ubuntu-18.04 ubuntu-20.04 ubuntu-22.04 ubuntu-22.04-arm
|
|
||||||
fedora-36
|
|
||||||
amzn-2
|
|
||||||
)
|
|
||||||
|
|
||||||
SUPPORTED_BUILD_TYPES=(
|
|
||||||
Debug
|
|
||||||
Release
|
|
||||||
RelWithDebInfo
|
|
||||||
)
|
|
||||||
|
|
||||||
PROJECT_ROOT="$SCRIPT_DIR/../.."
|
|
||||||
TOOLCHAIN_VERSION="toolchain-v4"
|
|
||||||
ACTIVATE_TOOLCHAIN="source /opt/${TOOLCHAIN_VERSION}/activate"
|
|
||||||
HOST_OUTPUT_DIR="$PROJECT_ROOT/build/output"
|
|
||||||
|
|
||||||
print_help () {
|
|
||||||
# TODO(gitbuda): Update the release/package/run.sh help
|
|
||||||
echo "$0 init|package|docker|test {os} {build_type} [--for-docker|--for-platform]"
|
|
||||||
echo ""
|
|
||||||
echo " OSs: ${SUPPORTED_OS[*]}"
|
|
||||||
echo " Build types: ${SUPPORTED_BUILD_TYPES[*]}"
|
|
||||||
exit 1
|
|
||||||
}
|
|
||||||
|
|
||||||
make_package () {
|
|
||||||
os="$1"
|
|
||||||
build_type="$2"
|
|
||||||
|
|
||||||
build_container="mgbuild_$os"
|
|
||||||
echo "Building Memgraph for $os on $build_container..."
|
|
||||||
|
|
||||||
package_command=""
|
|
||||||
if [[ "$os" =~ ^"centos".* ]] || [[ "$os" =~ ^"fedora".* ]] || [[ "$os" =~ ^"amzn".* ]]; then
|
|
||||||
docker exec "$build_container" bash -c "yum -y update"
|
|
||||||
package_command=" cpack -G RPM --config ../CPackConfig.cmake && rpmlint --file='../../release/rpm/rpmlintrc' memgraph*.rpm "
|
|
||||||
fi
|
|
||||||
if [[ "$os" =~ ^"debian".* ]]; then
|
|
||||||
docker exec "$build_container" bash -c "apt --allow-releaseinfo-change -y update"
|
|
||||||
package_command=" cpack -G DEB --config ../CPackConfig.cmake "
|
|
||||||
fi
|
|
||||||
if [[ "$os" =~ ^"ubuntu".* ]]; then
|
|
||||||
docker exec "$build_container" bash -c "apt update"
|
|
||||||
package_command=" cpack -G DEB --config ../CPackConfig.cmake "
|
|
||||||
fi
|
|
||||||
telemetry_id_override_flag=""
|
|
||||||
if [[ "$#" -gt 2 ]]; then
|
|
||||||
if [[ "$3" == "--for-docker" ]]; then
|
|
||||||
telemetry_id_override_flag=" -DMG_TELEMETRY_ID_OVERRIDE=DOCKER "
|
|
||||||
elif [[ "$3" == "--for-platform" ]]; then
|
|
||||||
telemetry_id_override_flag=" -DMG_TELEMETRY_ID_OVERRIDE=DOCKER-PLATFORM"
|
|
||||||
else
|
|
||||||
print_help
|
|
||||||
exit
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
|
|
||||||
echo "Copying project files..."
|
|
||||||
# If master is not the current branch, fetch it, because the get_version
|
|
||||||
# script depends on it. If we are on master, the fetch command is going to
|
|
||||||
# fail so that's why there is the explicit check.
|
|
||||||
# Required here because Docker build container can't access remote.
|
|
||||||
cd "$PROJECT_ROOT"
|
|
||||||
if [[ "$(git rev-parse --abbrev-ref HEAD)" != "master" ]]; then
|
|
||||||
git fetch origin master:master
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Ensure we have a clean build directory
|
|
||||||
docker exec "$build_container" rm -rf /memgraph
|
|
||||||
|
|
||||||
docker exec "$build_container" mkdir -p /memgraph
|
|
||||||
# TODO(gitbuda): Revisit copying the whole repo -> makese sense under CI.
|
|
||||||
docker cp "$PROJECT_ROOT/." "$build_container:/memgraph/"
|
|
||||||
|
|
||||||
container_build_dir="/memgraph/build"
|
|
||||||
container_output_dir="$container_build_dir/output"
|
|
||||||
|
|
||||||
# TODO(gitbuda): TOOLCHAIN_RUN_DEPS should be installed during the Docker
|
|
||||||
# image build phase, but that is not easy at this point because the
|
|
||||||
# environment/os/{os}.sh does not come within the toolchain package. When
|
|
||||||
# migrating to the next version of toolchain do that, and remove the
|
|
||||||
# TOOLCHAIN_RUN_DEPS installation from here.
|
|
||||||
# TODO(gitbuda): On the other side, having this here allows updating deps
|
|
||||||
# wihout reruning the build containers.
|
|
||||||
echo "Installing dependencies using '/memgraph/environment/os/$os.sh' script..."
|
|
||||||
docker exec "$build_container" bash -c "/memgraph/environment/os/$os.sh install TOOLCHAIN_RUN_DEPS"
|
|
||||||
docker exec "$build_container" bash -c "/memgraph/environment/os/$os.sh install MEMGRAPH_BUILD_DEPS"
|
|
||||||
|
|
||||||
echo "Building targeted package..."
|
|
||||||
# Fix issue with git marking directory as not safe
|
|
||||||
docker exec "$build_container" bash -c "cd /memgraph && git config --global --add safe.directory '*'"
|
|
||||||
docker exec "$build_container" bash -c "cd /memgraph && $ACTIVATE_TOOLCHAIN && ./init"
|
|
||||||
docker exec "$build_container" bash -c "cd $container_build_dir && rm -rf ./*"
|
|
||||||
# TODO(gitbuda): cmake fails locally if remote is clone via ssh because of the key -> FIX
|
|
||||||
if [[ "$os" =~ "-arm" ]]; then
|
|
||||||
docker exec "$build_container" bash -c "cd $container_build_dir && $ACTIVATE_TOOLCHAIN && cmake -DCMAKE_BUILD_TYPE=$build_type -DMG_ARCH="ARM64" $telemetry_id_override_flag .."
|
|
||||||
else
|
|
||||||
docker exec "$build_container" bash -c "cd $container_build_dir && $ACTIVATE_TOOLCHAIN && cmake -DCMAKE_BUILD_TYPE=$build_type $telemetry_id_override_flag .."
|
|
||||||
fi
|
|
||||||
# ' is used instead of " because we need to run make within the allowed
|
|
||||||
# container resources.
|
|
||||||
# shellcheck disable=SC2016
|
|
||||||
docker exec "$build_container" bash -c "cd $container_build_dir && $ACTIVATE_TOOLCHAIN "'&& make -j$(nproc)'
|
|
||||||
docker exec "$build_container" bash -c "cd $container_build_dir && $ACTIVATE_TOOLCHAIN "'&& make -j$(nproc) -B mgconsole'
|
|
||||||
docker exec "$build_container" bash -c "mkdir -p $container_output_dir && cd $container_output_dir && $ACTIVATE_TOOLCHAIN && $package_command"
|
|
||||||
|
|
||||||
echo "Copying targeted package to host..."
|
|
||||||
last_package_name=$(docker exec "$build_container" bash -c "cd $container_output_dir && ls -t memgraph* | head -1")
|
|
||||||
# The operating system folder is introduced because multiple different
|
|
||||||
# packages could be preserved during the same build "session".
|
|
||||||
mkdir -p "$HOST_OUTPUT_DIR/$os"
|
|
||||||
package_host_destination="$HOST_OUTPUT_DIR/$os/$last_package_name"
|
|
||||||
docker cp "$build_container:$container_output_dir/$last_package_name" "$package_host_destination"
|
|
||||||
echo "Package saved to $package_host_destination."
|
|
||||||
}
|
|
||||||
|
|
||||||
case "$1" in
|
|
||||||
init)
|
|
||||||
cd "$SCRIPT_DIR"
|
|
||||||
if ! which "docker-compose" >/dev/null; then
|
|
||||||
docker_compose_cmd="docker compose"
|
|
||||||
else
|
|
||||||
docker_compose_cmd="docker-compose"
|
|
||||||
fi
|
|
||||||
$docker_compose_cmd build --build-arg TOOLCHAIN_VERSION="${TOOLCHAIN_VERSION}"
|
|
||||||
$docker_compose_cmd up -d
|
|
||||||
;;
|
|
||||||
|
|
||||||
docker)
|
|
||||||
# NOTE: Docker is build on top of Debian 11 package.
|
|
||||||
based_on_os="debian-11"
|
|
||||||
# shellcheck disable=SC2012
|
|
||||||
last_package_name=$(cd "$HOST_OUTPUT_DIR/$based_on_os" && ls -t memgraph* | head -1)
|
|
||||||
docker_build_folder="$PROJECT_ROOT/release/docker"
|
|
||||||
cd "$docker_build_folder"
|
|
||||||
./package_docker --latest "$HOST_OUTPUT_DIR/$based_on_os/$last_package_name"
|
|
||||||
# shellcheck disable=SC2012
|
|
||||||
docker_image_name=$(cd "$docker_build_folder" && ls -t memgraph* | head -1)
|
|
||||||
docker_host_folder="$HOST_OUTPUT_DIR/docker"
|
|
||||||
docker_host_image_path="$docker_host_folder/$docker_image_name"
|
|
||||||
mkdir -p "$docker_host_folder"
|
|
||||||
cp "$docker_build_folder/$docker_image_name" "$docker_host_image_path"
|
|
||||||
echo "Docker images saved to $docker_host_image_path."
|
|
||||||
;;
|
|
||||||
|
|
||||||
package)
|
|
||||||
shift 1
|
|
||||||
if [[ "$#" -lt 2 ]]; then
|
|
||||||
print_help
|
|
||||||
fi
|
|
||||||
os="$1"
|
|
||||||
build_type="$2"
|
|
||||||
shift 2
|
|
||||||
is_os_ok=false
|
|
||||||
for supported_os in "${SUPPORTED_OS[@]}"; do
|
|
||||||
if [[ "$supported_os" == "${os}" ]]; then
|
|
||||||
is_os_ok=true
|
|
||||||
break
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
is_build_type_ok=false
|
|
||||||
for supported_build_type in "${SUPPORTED_BUILD_TYPES[@]}"; do
|
|
||||||
if [[ "$supported_build_type" == "${build_type}" ]]; then
|
|
||||||
is_build_type_ok=true
|
|
||||||
break
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
if [[ "$is_os_ok" == true && "$is_build_type_ok" == true ]]; then
|
|
||||||
make_package "$os" "$build_type" "$@"
|
|
||||||
else
|
|
||||||
if [[ "$is_os_ok" == false ]]; then
|
|
||||||
echo "Unsupported OS: $os"
|
|
||||||
elif [[ "$is_build_type_ok" == false ]]; then
|
|
||||||
echo "Unsupported build type: $build_type"
|
|
||||||
fi
|
|
||||||
print_help
|
|
||||||
fi
|
|
||||||
;;
|
|
||||||
|
|
||||||
build)
|
|
||||||
shift 1
|
|
||||||
if [[ "$#" -ne 2 ]]; then
|
|
||||||
print_help
|
|
||||||
fi
|
|
||||||
# in the vX format, e.g. v5
|
|
||||||
toolchain_version="$1"
|
|
||||||
# a name of the os folder, e.g. ubuntu-22.04-arm
|
|
||||||
os="$2"
|
|
||||||
cd "$SCRIPT_DIR/$os"
|
|
||||||
docker build -f Dockerfile --build-arg TOOLCHAIN_VERSION="toolchain-$toolchain_version" -t "memgraph/memgraph-builder:${toolchain_version}_$os" .
|
|
||||||
;;
|
|
||||||
|
|
||||||
test)
|
|
||||||
echo "TODO(gitbuda): Test all packages on mgtest containers."
|
|
||||||
;;
|
|
||||||
|
|
||||||
*)
|
|
||||||
print_help
|
|
||||||
;;
|
|
||||||
esac
|
|
@ -10,9 +10,30 @@ RUN apt update && apt install -y \
|
|||||||
# Do NOT be smart here and clean the cache because the container is used in the
|
# Do NOT be smart here and clean the cache because the container is used in the
|
||||||
# stateful context.
|
# stateful context.
|
||||||
|
|
||||||
RUN wget -q https://s3-eu-west-1.amazonaws.com/deps.memgraph.io/${TOOLCHAIN_VERSION}/${TOOLCHAIN_VERSION}-binaries-ubuntu-18.04-amd64.tar.gz \
|
RUN wget -q https://s3-eu-west-1.amazonaws.com/deps.memgraph.io/toolchain-${TOOLCHAIN_VERSION}/toolchain-${TOOLCHAIN_VERSION}-binaries-ubuntu-18.04-amd64.tar.gz \
|
||||||
-O ${TOOLCHAIN_VERSION}-binaries-ubuntu-18.04-amd64.tar.gz \
|
-O toolchain-${TOOLCHAIN_VERSION}-binaries-ubuntu-18.04-amd64.tar.gz \
|
||||||
&& tar xzvf ${TOOLCHAIN_VERSION}-binaries-ubuntu-18.04-amd64.tar.gz -C /opt \
|
&& tar xzvf toolchain-${TOOLCHAIN_VERSION}-binaries-ubuntu-18.04-amd64.tar.gz -C /opt \
|
||||||
&& rm ${TOOLCHAIN_VERSION}-binaries-ubuntu-18.04-amd64.tar.gz
|
&& rm toolchain-${TOOLCHAIN_VERSION}-binaries-ubuntu-18.04-amd64.tar.gz
|
||||||
|
|
||||||
|
# Install toolchain run deps and memgraph build deps
|
||||||
|
SHELL ["/bin/bash", "-c"]
|
||||||
|
RUN git clone https://github.com/memgraph/memgraph.git \
|
||||||
|
&& cd memgraph \
|
||||||
|
&& ./environment/os/ubuntu-18.04.sh install TOOLCHAIN_RUN_DEPS \
|
||||||
|
&& ./environment/os/ubuntu-18.04.sh install MEMGRAPH_BUILD_DEPS \
|
||||||
|
&& cd .. && rm -rf memgraph
|
||||||
|
|
||||||
|
# Add mgdeps-cache and bench-graph-api hostnames
|
||||||
|
RUN echo -e "10.42.16.10 mgdeps-cache\n10.42.16.10 bench-graph-api" >> /etc/hosts
|
||||||
|
|
||||||
|
# Create mg user and set as default
|
||||||
|
RUN useradd -m -s /bin/bash mg
|
||||||
|
USER mg
|
||||||
|
|
||||||
|
# Install rust
|
||||||
|
RUN curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y
|
||||||
|
|
||||||
|
# Fix node
|
||||||
|
RUN curl https://raw.githubusercontent.com/creationix/nvm/master/install.sh | bash
|
||||||
|
|
||||||
ENTRYPOINT ["sleep", "infinity"]
|
ENTRYPOINT ["sleep", "infinity"]
|
||||||
|
@ -10,9 +10,30 @@ RUN apt update && apt install -y \
|
|||||||
# Do NOT be smart here and clean the cache because the container is used in the
|
# Do NOT be smart here and clean the cache because the container is used in the
|
||||||
# stateful context.
|
# stateful context.
|
||||||
|
|
||||||
RUN wget -q https://s3-eu-west-1.amazonaws.com/deps.memgraph.io/${TOOLCHAIN_VERSION}/${TOOLCHAIN_VERSION}-binaries-ubuntu-20.04-amd64.tar.gz \
|
RUN wget -q https://s3-eu-west-1.amazonaws.com/deps.memgraph.io/toolchain-${TOOLCHAIN_VERSION}/toolchain-${TOOLCHAIN_VERSION}-binaries-ubuntu-20.04-amd64.tar.gz \
|
||||||
-O ${TOOLCHAIN_VERSION}-binaries-ubuntu-20.04-amd64.tar.gz \
|
-O toolchain-${TOOLCHAIN_VERSION}-binaries-ubuntu-20.04-amd64.tar.gz \
|
||||||
&& tar xzvf ${TOOLCHAIN_VERSION}-binaries-ubuntu-20.04-amd64.tar.gz -C /opt \
|
&& tar xzvf toolchain-${TOOLCHAIN_VERSION}-binaries-ubuntu-20.04-amd64.tar.gz -C /opt \
|
||||||
&& rm ${TOOLCHAIN_VERSION}-binaries-ubuntu-20.04-amd64.tar.gz
|
&& rm toolchain-${TOOLCHAIN_VERSION}-binaries-ubuntu-20.04-amd64.tar.gz
|
||||||
|
|
||||||
|
# Install toolchain run deps and memgraph build deps
|
||||||
|
SHELL ["/bin/bash", "-c"]
|
||||||
|
RUN git clone https://github.com/memgraph/memgraph.git \
|
||||||
|
&& cd memgraph \
|
||||||
|
&& ./environment/os/ubuntu-20.04.sh install TOOLCHAIN_RUN_DEPS \
|
||||||
|
&& ./environment/os/ubuntu-20.04.sh install MEMGRAPH_BUILD_DEPS \
|
||||||
|
&& cd .. && rm -rf memgraph
|
||||||
|
|
||||||
|
# Add mgdeps-cache and bench-graph-api hostnames
|
||||||
|
RUN echo -e "10.42.16.10 mgdeps-cache\n10.42.16.10 bench-graph-api" >> /etc/hosts
|
||||||
|
|
||||||
|
# Create mg user and set as default
|
||||||
|
RUN useradd -m -s /bin/bash mg
|
||||||
|
USER mg
|
||||||
|
|
||||||
|
# Install rust
|
||||||
|
RUN curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y
|
||||||
|
|
||||||
|
# Fix node
|
||||||
|
RUN curl https://raw.githubusercontent.com/creationix/nvm/master/install.sh | bash
|
||||||
|
|
||||||
ENTRYPOINT ["sleep", "infinity"]
|
ENTRYPOINT ["sleep", "infinity"]
|
||||||
|
@ -10,9 +10,30 @@ RUN apt update && apt install -y \
|
|||||||
# Do NOT be smart here and clean the cache because the container is used in the
|
# Do NOT be smart here and clean the cache because the container is used in the
|
||||||
# stateful context.
|
# stateful context.
|
||||||
|
|
||||||
RUN wget -q https://s3-eu-west-1.amazonaws.com/deps.memgraph.io/${TOOLCHAIN_VERSION}/${TOOLCHAIN_VERSION}-binaries-ubuntu-22.04-arm64.tar.gz \
|
RUN wget -q https://s3-eu-west-1.amazonaws.com/deps.memgraph.io/toolchain-${TOOLCHAIN_VERSION}/toolchain-${TOOLCHAIN_VERSION}-binaries-ubuntu-22.04-arm64.tar.gz \
|
||||||
-O ${TOOLCHAIN_VERSION}-binaries-ubuntu-22.04-arm64.tar.gz \
|
-O toolchain-${TOOLCHAIN_VERSION}-binaries-ubuntu-22.04-arm64.tar.gz \
|
||||||
&& tar xzvf ${TOOLCHAIN_VERSION}-binaries-ubuntu-22.04-arm64.tar.gz -C /opt \
|
&& tar xzvf toolchain-${TOOLCHAIN_VERSION}-binaries-ubuntu-22.04-arm64.tar.gz -C /opt \
|
||||||
&& rm ${TOOLCHAIN_VERSION}-binaries-ubuntu-22.04-arm64.tar.gz
|
&& rm toolchain-${TOOLCHAIN_VERSION}-binaries-ubuntu-22.04-arm64.tar.gz
|
||||||
|
|
||||||
|
# Install toolchain run deps and memgraph build deps
|
||||||
|
SHELL ["/bin/bash", "-c"]
|
||||||
|
RUN git clone https://github.com/memgraph/memgraph.git \
|
||||||
|
&& cd memgraph \
|
||||||
|
&& ./environment/os/ubuntu-22.04-arm.sh install TOOLCHAIN_RUN_DEPS \
|
||||||
|
&& ./environment/os/ubuntu-22.04-arm.sh install MEMGRAPH_BUILD_DEPS \
|
||||||
|
&& cd .. && rm -rf memgraph
|
||||||
|
|
||||||
|
# Add mgdeps-cache and bench-graph-api hostnames
|
||||||
|
RUN echo -e "10.42.16.10 mgdeps-cache\n10.42.16.10 bench-graph-api" >> /etc/hosts
|
||||||
|
|
||||||
|
# Create mg user and set as default
|
||||||
|
RUN useradd -m -s /bin/bash mg
|
||||||
|
USER mg
|
||||||
|
|
||||||
|
# Install rust
|
||||||
|
RUN curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y
|
||||||
|
|
||||||
|
# Fix node
|
||||||
|
RUN curl https://raw.githubusercontent.com/creationix/nvm/master/install.sh | bash
|
||||||
|
|
||||||
ENTRYPOINT ["sleep", "infinity"]
|
ENTRYPOINT ["sleep", "infinity"]
|
||||||
|
@ -10,9 +10,30 @@ RUN apt update && apt install -y \
|
|||||||
# Do NOT be smart here and clean the cache because the container is used in the
|
# Do NOT be smart here and clean the cache because the container is used in the
|
||||||
# stateful context.
|
# stateful context.
|
||||||
|
|
||||||
RUN wget -q https://s3-eu-west-1.amazonaws.com/deps.memgraph.io/${TOOLCHAIN_VERSION}/${TOOLCHAIN_VERSION}-binaries-ubuntu-22.04-amd64.tar.gz \
|
RUN wget -q https://s3-eu-west-1.amazonaws.com/deps.memgraph.io/toolchain-${TOOLCHAIN_VERSION}/toolchain-${TOOLCHAIN_VERSION}-binaries-ubuntu-22.04-amd64.tar.gz \
|
||||||
-O ${TOOLCHAIN_VERSION}-binaries-ubuntu-22.04-amd64.tar.gz \
|
-O toolchain-${TOOLCHAIN_VERSION}-binaries-ubuntu-22.04-amd64.tar.gz \
|
||||||
&& tar xzvf ${TOOLCHAIN_VERSION}-binaries-ubuntu-22.04-amd64.tar.gz -C /opt \
|
&& tar xzvf toolchain-${TOOLCHAIN_VERSION}-binaries-ubuntu-22.04-amd64.tar.gz -C /opt \
|
||||||
&& rm ${TOOLCHAIN_VERSION}-binaries-ubuntu-22.04-amd64.tar.gz
|
&& rm toolchain-${TOOLCHAIN_VERSION}-binaries-ubuntu-22.04-amd64.tar.gz
|
||||||
|
|
||||||
|
# Install toolchain run deps and memgraph build deps
|
||||||
|
SHELL ["/bin/bash", "-c"]
|
||||||
|
RUN git clone https://github.com/memgraph/memgraph.git \
|
||||||
|
&& cd memgraph \
|
||||||
|
&& ./environment/os/ubuntu-22.04.sh install TOOLCHAIN_RUN_DEPS \
|
||||||
|
&& ./environment/os/ubuntu-22.04.sh install MEMGRAPH_BUILD_DEPS \
|
||||||
|
&& cd .. && rm -rf memgraph
|
||||||
|
|
||||||
|
# Add mgdeps-cache and bench-graph-api hostnames
|
||||||
|
RUN echo -e "10.42.16.10 mgdeps-cache\n10.42.16.10 bench-graph-api" >> /etc/hosts
|
||||||
|
|
||||||
|
# Create mg user and set as default
|
||||||
|
RUN useradd -m -s /bin/bash mg
|
||||||
|
USER mg
|
||||||
|
|
||||||
|
# Install rust
|
||||||
|
RUN curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y
|
||||||
|
|
||||||
|
# Fix node
|
||||||
|
RUN curl https://raw.githubusercontent.com/creationix/nvm/master/install.sh | bash
|
||||||
|
|
||||||
ENTRYPOINT ["sleep", "infinity"]
|
ENTRYPOINT ["sleep", "infinity"]
|
||||||
|
@ -12,6 +12,7 @@
|
|||||||
#ifdef MG_ENTERPRISE
|
#ifdef MG_ENTERPRISE
|
||||||
#include <chrono>
|
#include <chrono>
|
||||||
|
|
||||||
|
#include <spdlog/spdlog.h>
|
||||||
#include "coordination/coordinator_config.hpp"
|
#include "coordination/coordinator_config.hpp"
|
||||||
#include "coordination/coordinator_exceptions.hpp"
|
#include "coordination/coordinator_exceptions.hpp"
|
||||||
#include "coordination/raft_state.hpp"
|
#include "coordination/raft_state.hpp"
|
||||||
@ -123,7 +124,7 @@ auto RaftState::AddCoordinatorInstance(uint32_t raft_server_id, uint32_t raft_po
|
|||||||
spdlog::info("Request to add server {} to the cluster accepted", endpoint);
|
spdlog::info("Request to add server {} to the cluster accepted", endpoint);
|
||||||
} else {
|
} else {
|
||||||
throw RaftAddServerException("Failed to accept request to add server {} to the cluster with error code {}",
|
throw RaftAddServerException("Failed to accept request to add server {} to the cluster with error code {}",
|
||||||
endpoint, cmd_result->get_result_code());
|
endpoint, int(cmd_result->get_result_code()));
|
||||||
}
|
}
|
||||||
|
|
||||||
// Waiting for server to join
|
// Waiting for server to join
|
||||||
@ -173,7 +174,8 @@ auto RaftState::AppendRegisterReplicationInstanceLog(CoordinatorClientConfig con
|
|||||||
spdlog::info("Request for registering instance {} accepted", config.instance_name);
|
spdlog::info("Request for registering instance {} accepted", config.instance_name);
|
||||||
|
|
||||||
if (res->get_result_code() != nuraft::cmd_result_code::OK) {
|
if (res->get_result_code() != nuraft::cmd_result_code::OK) {
|
||||||
spdlog::error("Failed to register instance {} with error code {}", config.instance_name, res->get_result_code());
|
spdlog::error("Failed to register instance {} with error code {}", config.instance_name,
|
||||||
|
int(res->get_result_code()));
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -194,7 +196,7 @@ auto RaftState::AppendUnregisterReplicationInstanceLog(std::string_view instance
|
|||||||
spdlog::info("Request for unregistering instance {} accepted", instance_name);
|
spdlog::info("Request for unregistering instance {} accepted", instance_name);
|
||||||
|
|
||||||
if (res->get_result_code() != nuraft::cmd_result_code::OK) {
|
if (res->get_result_code() != nuraft::cmd_result_code::OK) {
|
||||||
spdlog::error("Failed to unregister instance {} with error code {}", instance_name, res->get_result_code());
|
spdlog::error("Failed to unregister instance {} with error code {}", instance_name, int(res->get_result_code()));
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
@ -214,7 +216,7 @@ auto RaftState::AppendSetInstanceAsMainLog(std::string_view instance_name) -> bo
|
|||||||
spdlog::info("Request for promoting instance {} accepted", instance_name);
|
spdlog::info("Request for promoting instance {} accepted", instance_name);
|
||||||
|
|
||||||
if (res->get_result_code() != nuraft::cmd_result_code::OK) {
|
if (res->get_result_code() != nuraft::cmd_result_code::OK) {
|
||||||
spdlog::error("Failed to promote instance {} with error code {}", instance_name, res->get_result_code());
|
spdlog::error("Failed to promote instance {} with error code {}", instance_name, int(res->get_result_code()));
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
@ -233,7 +235,7 @@ auto RaftState::AppendSetInstanceAsReplicaLog(std::string_view instance_name) ->
|
|||||||
spdlog::info("Request for demoting instance {} accepted", instance_name);
|
spdlog::info("Request for demoting instance {} accepted", instance_name);
|
||||||
|
|
||||||
if (res->get_result_code() != nuraft::cmd_result_code::OK) {
|
if (res->get_result_code() != nuraft::cmd_result_code::OK) {
|
||||||
spdlog::error("Failed to promote instance {} with error code {}", instance_name, res->get_result_code());
|
spdlog::error("Failed to promote instance {} with error code {}", instance_name, int(res->get_result_code()));
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -252,7 +254,7 @@ auto RaftState::AppendUpdateUUIDLog(utils::UUID const &uuid) -> bool {
|
|||||||
spdlog::info("Request for updating UUID accepted");
|
spdlog::info("Request for updating UUID accepted");
|
||||||
|
|
||||||
if (res->get_result_code() != nuraft::cmd_result_code::OK) {
|
if (res->get_result_code() != nuraft::cmd_result_code::OK) {
|
||||||
spdlog::error("Failed to update UUID with error code {}", res->get_result_code());
|
spdlog::error("Failed to update UUID with error code {}", int(res->get_result_code()));
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -589,7 +589,6 @@ uint64_t InMemoryReplicationHandlers::ReadAndApplyDelta(storage::InMemoryStorage
|
|||||||
if (timestamp < storage->timestamp_) {
|
if (timestamp < storage->timestamp_) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
SPDLOG_INFO(" Delta {}", applied_deltas);
|
SPDLOG_INFO(" Delta {}", applied_deltas);
|
||||||
switch (delta.type) {
|
switch (delta.type) {
|
||||||
case WalDeltaData::Type::VERTEX_CREATE: {
|
case WalDeltaData::Type::VERTEX_CREATE: {
|
||||||
@ -634,9 +633,10 @@ uint64_t InMemoryReplicationHandlers::ReadAndApplyDelta(storage::InMemoryStorage
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case WalDeltaData::Type::VERTEX_SET_PROPERTY: {
|
case WalDeltaData::Type::VERTEX_SET_PROPERTY: {
|
||||||
spdlog::trace(" Vertex {} set property {} to {}", delta.vertex_edge_set_property.gid.AsUint(),
|
spdlog::trace(" Vertex {} set property", delta.vertex_edge_set_property.gid.AsUint());
|
||||||
delta.vertex_edge_set_property.property, delta.vertex_edge_set_property.value);
|
// NOLINTNEXTLINE
|
||||||
auto *transaction = get_transaction(timestamp);
|
auto *transaction = get_transaction(timestamp);
|
||||||
|
// NOLINTNEXTLINE
|
||||||
auto vertex = transaction->FindVertex(delta.vertex_edge_set_property.gid, View::NEW);
|
auto vertex = transaction->FindVertex(delta.vertex_edge_set_property.gid, View::NEW);
|
||||||
if (!vertex)
|
if (!vertex)
|
||||||
throw utils::BasicException("Invalid transaction! Please raise an issue, {}:{}", __FILE__, __LINE__);
|
throw utils::BasicException("Invalid transaction! Please raise an issue, {}:{}", __FILE__, __LINE__);
|
||||||
@ -684,8 +684,7 @@ uint64_t InMemoryReplicationHandlers::ReadAndApplyDelta(storage::InMemoryStorage
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case WalDeltaData::Type::EDGE_SET_PROPERTY: {
|
case WalDeltaData::Type::EDGE_SET_PROPERTY: {
|
||||||
spdlog::trace(" Edge {} set property {} to {}", delta.vertex_edge_set_property.gid.AsUint(),
|
spdlog::trace(" Edge {} set property", delta.vertex_edge_set_property.gid.AsUint());
|
||||||
delta.vertex_edge_set_property.property, delta.vertex_edge_set_property.value);
|
|
||||||
if (!storage->config_.salient.items.properties_on_edges)
|
if (!storage->config_.salient.items.properties_on_edges)
|
||||||
throw utils::BasicException(
|
throw utils::BasicException(
|
||||||
"Can't set properties on edges because properties on edges "
|
"Can't set properties on edges because properties on edges "
|
||||||
@ -917,5 +916,4 @@ uint64_t InMemoryReplicationHandlers::ReadAndApplyDelta(storage::InMemoryStorage
|
|||||||
spdlog::debug("Applied {} deltas", applied_deltas);
|
spdlog::debug("Applied {} deltas", applied_deltas);
|
||||||
return applied_deltas;
|
return applied_deltas;
|
||||||
}
|
}
|
||||||
|
|
||||||
} // namespace memgraph::dbms
|
} // namespace memgraph::dbms
|
||||||
|
@ -13,6 +13,7 @@
|
|||||||
|
|
||||||
#include "replication/replication_client.hpp"
|
#include "replication/replication_client.hpp"
|
||||||
#include "storage/v2/inmemory/storage.hpp"
|
#include "storage/v2/inmemory/storage.hpp"
|
||||||
|
#include "storage/v2/replication/enums.hpp"
|
||||||
#include "storage/v2/storage.hpp"
|
#include "storage/v2/storage.hpp"
|
||||||
#include "utils/exceptions.hpp"
|
#include "utils/exceptions.hpp"
|
||||||
#include "utils/on_scope_exit.hpp"
|
#include "utils/on_scope_exit.hpp"
|
||||||
@ -247,11 +248,13 @@ bool ReplicationStorageClient::FinalizeTransactionReplication(Storage *storage,
|
|||||||
MG_ASSERT(replica_stream_, "Missing stream for transaction deltas");
|
MG_ASSERT(replica_stream_, "Missing stream for transaction deltas");
|
||||||
try {
|
try {
|
||||||
auto response = replica_stream_->Finalize();
|
auto response = replica_stream_->Finalize();
|
||||||
return replica_state_.WithLock([storage, &response, db_acc = std::move(db_acc), this](auto &state) mutable {
|
// NOLINTNEXTLINE
|
||||||
|
return replica_state_.WithLock([storage, response, db_acc = std::move(db_acc), this](auto &state) mutable {
|
||||||
replica_stream_.reset();
|
replica_stream_.reset();
|
||||||
if (!response.success || state == replication::ReplicaState::RECOVERY) {
|
if (!response.success || state == replication::ReplicaState::RECOVERY) {
|
||||||
state = replication::ReplicaState::RECOVERY;
|
state = replication::ReplicaState::RECOVERY;
|
||||||
client_.thread_pool_.AddTask([storage, &response, db_acc = std::move(db_acc), this] {
|
// NOLINTNEXTLINE
|
||||||
|
client_.thread_pool_.AddTask([storage, response, db_acc = std::move(db_acc), this] {
|
||||||
this->RecoverReplica(response.current_commit_timestamp, storage);
|
this->RecoverReplica(response.current_commit_timestamp, storage);
|
||||||
});
|
});
|
||||||
return false;
|
return false;
|
||||||
|
23
tests/code_analysis/clang_tidy.sh
Executable file
23
tests/code_analysis/clang_tidy.sh
Executable file
@ -0,0 +1,23 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
|
||||||
|
PROJECT_ROOT="$SCRIPT_DIR/../.."
|
||||||
|
BASE_BRANCH="origin/master"
|
||||||
|
THREADS=${THREADS:-$(nproc)}
|
||||||
|
|
||||||
|
if [[ "$#" -gt 0 ]]; then
|
||||||
|
case "$1" in
|
||||||
|
--base-branch)
|
||||||
|
BASE_BRANCH=$2
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
echo "Error: Unknown flag '$1'"
|
||||||
|
exit 1
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
fi
|
||||||
|
|
||||||
|
cd $PROJECT_ROOT
|
||||||
|
git diff -U0 $BASE_BRANCH... -- src | ./tools/github/clang-tidy/clang-tidy-diff.py -p 1 -j $THREADS -path build -regex ".+\.cpp" | tee ./build/clang_tidy_output.txt
|
||||||
|
# Fail if any warning is reported
|
||||||
|
! cat ./build/clang_tidy_output.txt | ./tools/github/clang-tidy/grep_error_lines.sh > /dev/null
|
||||||
|
cd $SCRIPT_DIR
|
27
tests/code_analysis/python_code_analysis.sh
Executable file
27
tests/code_analysis/python_code_analysis.sh
Executable file
@ -0,0 +1,27 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
|
||||||
|
PROJECT_ROOT="$SCRIPT_DIR/../.."
|
||||||
|
BASE_BRANCH="origin/master"
|
||||||
|
|
||||||
|
if [[ "$#" -gt 0 ]]; then
|
||||||
|
case "$1" in
|
||||||
|
--base-branch)
|
||||||
|
BASE_BRANCH=$2
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
echo "Error: Unknown flag '$1'"
|
||||||
|
exit 1
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
fi
|
||||||
|
|
||||||
|
cd $PROJECT_ROOT
|
||||||
|
CHANGED_FILES=$(git diff -U0 $BASE_BRANCH... --name-only --diff-filter=d)
|
||||||
|
for file in ${CHANGED_FILES}; do
|
||||||
|
echo ${file}
|
||||||
|
if [[ ${file} == *.py ]]; then
|
||||||
|
python3 -m black --check --diff ${file}
|
||||||
|
python3 -m isort --profile black --check-only --diff ${file}
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
cd $SCRIPT_DIR
|
@ -1,4 +1,4 @@
|
|||||||
// Copyright 2023 Memgraph Ltd.
|
// Copyright 2024 Memgraph Ltd.
|
||||||
//
|
//
|
||||||
// Use of this software is governed by the Business Source License
|
// Use of this software is governed by the Business Source License
|
||||||
// included in the file licenses/BSL.txt; by using this file, you agree to be bound by the terms of the Business Source
|
// included in the file licenses/BSL.txt; by using this file, you agree to be bound by the terms of the Business Source
|
||||||
@ -126,7 +126,7 @@ std::filesystem::path CreateModuleFile(auto &client, const std::string_view file
|
|||||||
}
|
}
|
||||||
|
|
||||||
std::string GetModuleFileQuery(const std::filesystem::path &path) {
|
std::string GetModuleFileQuery(const std::filesystem::path &path) {
|
||||||
return fmt::format("CALL mg.get_module_file({}) YIELD content", path);
|
return fmt::format("CALL mg.get_module_file('{}') YIELD content", path);
|
||||||
}
|
}
|
||||||
|
|
||||||
std::string GetModuleFile(auto &client, const std::filesystem::path &path) {
|
std::string GetModuleFile(auto &client, const std::filesystem::path &path) {
|
||||||
@ -141,7 +141,7 @@ std::string GetModuleFile(auto &client, const std::filesystem::path &path) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
std::string UpdateModuleFileQuery(const std::filesystem::path &path, const std::string_view content) {
|
std::string UpdateModuleFileQuery(const std::filesystem::path &path, const std::string_view content) {
|
||||||
return fmt::format("CALL mg.update_module_file({}, '{}')", path, content);
|
return fmt::format("CALL mg.update_module_file('{}', '{}')", path, content);
|
||||||
}
|
}
|
||||||
|
|
||||||
void UpdateModuleFile(auto &client, const std::filesystem::path &path, const std::string_view content) {
|
void UpdateModuleFile(auto &client, const std::filesystem::path &path, const std::string_view content) {
|
||||||
@ -151,7 +151,7 @@ void UpdateModuleFile(auto &client, const std::filesystem::path &path, const std
|
|||||||
}
|
}
|
||||||
|
|
||||||
std::string DeleteModuleFileQuery(const std::filesystem::path &path) {
|
std::string DeleteModuleFileQuery(const std::filesystem::path &path) {
|
||||||
return fmt::format("CALL mg.delete_module_file({})", path);
|
return fmt::format("CALL mg.delete_module_file('{}')", path);
|
||||||
}
|
}
|
||||||
|
|
||||||
void DeleteModuleFile(auto &client, const std::filesystem::path &path) {
|
void DeleteModuleFile(auto &client, const std::filesystem::path &path) {
|
||||||
|
@ -25,7 +25,7 @@ if [ "$#" -eq 0 ]; then
|
|||||||
# NOTE: If you want to run all tests under specific folder/section just
|
# NOTE: If you want to run all tests under specific folder/section just
|
||||||
# replace the dot (root directory below) with the folder name, e.g.
|
# replace the dot (root directory below) with the folder name, e.g.
|
||||||
# `--workloads-root-directory replication`.
|
# `--workloads-root-directory replication`.
|
||||||
python3 runner.py --workloads-root-directory "$SCRIPT_DIR/../../build"
|
python3 runner.py --workloads-root-directory "$SCRIPT_DIR/../../build/tests/e2e"
|
||||||
elif [ "$#" -eq 1 ]; then
|
elif [ "$#" -eq 1 ]; then
|
||||||
if [ "$1" == "-h" ] || [ "$1" == "--help" ]; then
|
if [ "$1" == "-h" ] || [ "$1" == "--help" ]; then
|
||||||
print_help
|
print_help
|
||||||
@ -34,7 +34,7 @@ elif [ "$#" -eq 1 ]; then
|
|||||||
# NOTE: --workload-name comes from each individual folder/section
|
# NOTE: --workload-name comes from each individual folder/section
|
||||||
# workloads.yaml file. E.g. `streams/workloads.yaml` has a list of
|
# workloads.yaml file. E.g. `streams/workloads.yaml` has a list of
|
||||||
# `workloads:` and each workload has it's `-name`.
|
# `workloads:` and each workload has it's `-name`.
|
||||||
python3 runner.py --workloads-root-directory "$SCRIPT_DIR/../../build" --workload-name "$1"
|
python3 runner.py --workloads-root-directory "$SCRIPT_DIR/../../build/tests/e2e" --workload-name "$1"
|
||||||
else
|
else
|
||||||
print_help
|
print_help
|
||||||
fi
|
fi
|
||||||
|
@ -40,6 +40,9 @@ def load_args():
|
|||||||
def load_workloads(root_directory):
|
def load_workloads(root_directory):
|
||||||
workloads = []
|
workloads = []
|
||||||
for file in Path(root_directory).rglob("*.yaml"):
|
for file in Path(root_directory).rglob("*.yaml"):
|
||||||
|
# 8.03.2024. - Skip streams e2e tests
|
||||||
|
if str(file).endswith("/streams/workloads.yaml"):
|
||||||
|
continue
|
||||||
with open(file, "r") as f:
|
with open(file, "r") as f:
|
||||||
workloads.extend(yaml.load(f, Loader=yaml.FullLoader)["workloads"])
|
workloads.extend(yaml.load(f, Loader=yaml.FullLoader)["workloads"])
|
||||||
return workloads
|
return workloads
|
||||||
|
@ -9,6 +9,7 @@
|
|||||||
# by the Apache License, Version 2.0, included in the file
|
# by the Apache License, Version 2.0, included in the file
|
||||||
# licenses/APL.txt.
|
# licenses/APL.txt.
|
||||||
|
|
||||||
|
# import os
|
||||||
import pulsar
|
import pulsar
|
||||||
import pytest
|
import pytest
|
||||||
from common import NAME, PULSAR_SERVICE_URL, connect, execute_and_fetch_all
|
from common import NAME, PULSAR_SERVICE_URL, connect, execute_and_fetch_all
|
||||||
@ -20,6 +21,9 @@ import requests
|
|||||||
# To run these test locally a running Kafka sever is necessery. The test tries
|
# To run these test locally a running Kafka sever is necessery. The test tries
|
||||||
# to connect on localhost:9092.
|
# to connect on localhost:9092.
|
||||||
|
|
||||||
|
# KAFKA_HOSTNAME=os.getenv("KAFKA_HOSTNAME", "localhost")
|
||||||
|
# PULSAR_HOSTNAME=os.getenv("PULSAR_HOSTNAME", "localhost")
|
||||||
|
# PULSAR_PORT="6652" if PULSAR_HOSTNAME == "localhost" else "8080"
|
||||||
|
|
||||||
@pytest.fixture(autouse=True)
|
@pytest.fixture(autouse=True)
|
||||||
def connection():
|
def connection():
|
||||||
|
@ -11,6 +11,7 @@
|
|||||||
# by the Apache License, Version 2.0, included in the file
|
# by the Apache License, Version 2.0, included in the file
|
||||||
# licenses/APL.txt.
|
# licenses/APL.txt.
|
||||||
|
|
||||||
|
# import os
|
||||||
import sys
|
import sys
|
||||||
import time
|
import time
|
||||||
from multiprocessing import Process
|
from multiprocessing import Process
|
||||||
@ -23,7 +24,7 @@ from mg_utils import mg_sleep_and_assert
|
|||||||
TRANSFORMATIONS_TO_CHECK_C = ["c_transformations.empty_transformation"]
|
TRANSFORMATIONS_TO_CHECK_C = ["c_transformations.empty_transformation"]
|
||||||
TRANSFORMATIONS_TO_CHECK_PY = ["kafka_transform.simple", "kafka_transform.with_parameters"]
|
TRANSFORMATIONS_TO_CHECK_PY = ["kafka_transform.simple", "kafka_transform.with_parameters"]
|
||||||
KAFKA_PRODUCER_SENDING_MSG_DEFAULT_TIMEOUT = 60
|
KAFKA_PRODUCER_SENDING_MSG_DEFAULT_TIMEOUT = 60
|
||||||
|
# KAFKA_HOSTNAME=os.getenv("KAFKA_HOSTNAME", "localhost")
|
||||||
|
|
||||||
@pytest.mark.parametrize("transformation", TRANSFORMATIONS_TO_CHECK_PY)
|
@pytest.mark.parametrize("transformation", TRANSFORMATIONS_TO_CHECK_PY)
|
||||||
def test_simple(kafka_producer, kafka_topics, connection, transformation):
|
def test_simple(kafka_producer, kafka_topics, connection, transformation):
|
||||||
@ -162,7 +163,7 @@ def test_show_streams(kafka_topics, connection):
|
|||||||
complex_values_stream = "complex_values"
|
complex_values_stream = "complex_values"
|
||||||
|
|
||||||
common.create_stream(
|
common.create_stream(
|
||||||
cursor, default_values_stream, kafka_topics[0], "kafka_transform.simple", bootstrap_servers="'localhost:29092'"
|
cursor, default_values_stream, kafka_topics[0], "kafka_transform.simple", bootstrap_servers="'localhost:29092'"
|
||||||
)
|
)
|
||||||
common.create_stream(
|
common.create_stream(
|
||||||
cursor,
|
cursor,
|
||||||
|
@ -11,6 +11,7 @@
|
|||||||
# by the Apache License, Version 2.0, included in the file
|
# by the Apache License, Version 2.0, included in the file
|
||||||
# licenses/APL.txt.
|
# licenses/APL.txt.
|
||||||
|
|
||||||
|
# import os
|
||||||
import sys
|
import sys
|
||||||
import time
|
import time
|
||||||
from multiprocessing import Process, Value
|
from multiprocessing import Process, Value
|
||||||
@ -20,6 +21,7 @@ import mgclient
|
|||||||
import pytest
|
import pytest
|
||||||
|
|
||||||
TRANSFORMATIONS_TO_CHECK = ["pulsar_transform.simple", "pulsar_transform.with_parameters"]
|
TRANSFORMATIONS_TO_CHECK = ["pulsar_transform.simple", "pulsar_transform.with_parameters"]
|
||||||
|
# PULSAR_HOSTNAME=os.getenv("PULSAR_HOSTNAME", "127.0.0.1")
|
||||||
|
|
||||||
|
|
||||||
def check_vertex_exists_with_topic_and_payload(cursor, topic, payload_byte):
|
def check_vertex_exists_with_topic_and_payload(cursor, topic, payload_byte):
|
||||||
|
@ -37,6 +37,7 @@ pip --timeout 1000 install "pulsar-client==3.1.0"
|
|||||||
for pkg in "${PIP_DEPS[@]}"; do
|
for pkg in "${PIP_DEPS[@]}"; do
|
||||||
pip --timeout 1000 install "$pkg"
|
pip --timeout 1000 install "$pkg"
|
||||||
done
|
done
|
||||||
|
pip --timeout 1000 install "networkx==2.4"
|
||||||
|
|
||||||
# Install mgclient from source becasue of full flexibility.
|
# Install mgclient from source becasue of full flexibility.
|
||||||
pushd "$DIR/../libs/pymgclient" > /dev/null
|
pushd "$DIR/../libs/pymgclient" > /dev/null
|
||||||
|
@ -197,8 +197,8 @@ TYPED_TEST(InfoTest, InfoCheck) {
|
|||||||
ASSERT_EQ(info.storage_info.vertex_count, 5);
|
ASSERT_EQ(info.storage_info.vertex_count, 5);
|
||||||
ASSERT_EQ(info.storage_info.edge_count, 2);
|
ASSERT_EQ(info.storage_info.edge_count, 2);
|
||||||
ASSERT_EQ(info.storage_info.average_degree, 0.8);
|
ASSERT_EQ(info.storage_info.average_degree, 0.8);
|
||||||
ASSERT_GT(info.storage_info.memory_res, 10'000'000); // 250MB < > 10MB
|
ASSERT_GT(info.storage_info.memory_res, 10'000'000); // 300MB < > 10MB
|
||||||
ASSERT_LT(info.storage_info.memory_res, 250'000'000);
|
ASSERT_LT(info.storage_info.memory_res, 300'000'000);
|
||||||
ASSERT_GT(info.storage_info.disk_usage, 100); // 1MB < > 100B
|
ASSERT_GT(info.storage_info.disk_usage, 100); // 1MB < > 100B
|
||||||
ASSERT_LT(info.storage_info.disk_usage, 1000'000);
|
ASSERT_LT(info.storage_info.disk_usage, 1000'000);
|
||||||
ASSERT_EQ(info.storage_info.label_indices, 1);
|
ASSERT_EQ(info.storage_info.label_indices, 1);
|
||||||
|
@ -250,7 +250,6 @@ def main():
|
|||||||
common_clang_tidy_args.append("-extra-arg=%s" % arg)
|
common_clang_tidy_args.append("-extra-arg=%s" % arg)
|
||||||
for arg in args.extra_arg_before:
|
for arg in args.extra_arg_before:
|
||||||
common_clang_tidy_args.append("-extra-arg-before=%s" % arg)
|
common_clang_tidy_args.append("-extra-arg-before=%s" % arg)
|
||||||
|
|
||||||
for name in lines_by_file:
|
for name in lines_by_file:
|
||||||
line_filter_json = json.dumps([{"name": name, "lines": lines_by_file[name]}], separators=(",", ":"))
|
line_filter_json = json.dumps([{"name": name, "lines": lines_by_file[name]}], separators=(",", ":"))
|
||||||
|
|
||||||
@ -266,7 +265,6 @@ def main():
|
|||||||
command.extend(common_clang_tidy_args)
|
command.extend(common_clang_tidy_args)
|
||||||
command.append(name)
|
command.append(name)
|
||||||
command.extend(clang_tidy_args)
|
command.extend(clang_tidy_args)
|
||||||
|
|
||||||
task_queue.put(command)
|
task_queue.put(command)
|
||||||
|
|
||||||
# Wait for all threads to be done.
|
# Wait for all threads to be done.
|
||||||
|
Loading…
Reference in New Issue
Block a user