@@ -61,7 +61,7 @@ RUN set -ex; \
6161 fi; \
6262 pip3 install --upgrade pip && pip3 install virtualenv && python3 -m venv /opt/venv
6363ENV VIRTUAL_ENV=/opt/venv
64- ENV PATH="/root/.local/bin:/ opt/venv/bin:${PATH}"
64+ ENV PATH="/opt/venv/bin:${PATH}"
6565ENV POETRY_VIRTUALENVS_CREATE=false
6666ENV POETRY_INSTALLER_MAX_WORKERS=10
6767ENV PYTHON_KEYRING_BACKEND=keyring.backends.null.Keyring
@@ -72,8 +72,8 @@ ENV PYTHON_BIN_PATH=/opt/venv/bin/python
7272
7373FROM toolchain AS base_image
7474ARG branch=v8.0
75- ARG psm_ver=8.0.3
76- ARG psm_release=1
75+ ARG psm_ver=8.0.13
76+ ARG psm_release=4
7777ARG repo=https://github.com/percona/percona-server-mongodb.git
7878RUN cd /opt && mkdir -p percona-server-mongodb && \
7979 git clone $repo percona-server-mongodb && \
@@ -89,9 +89,9 @@ RUN cd /opt && mkdir -p percona-server-mongodb && \
8989WORKDIR /opt/percona-server-mongodb
9090RUN set -ex; \
9191 if [ -f "/usr/bin/yum" ] ; then \
92- yum install -y cmake openssl-devel openldap-devel krb5-devel libcurl-devel cyrus-sasl-devel bzip2-devel zlib-devel lz4-devel xz-devel e2fsprogs-devel iproute; \
92+ yum install -y cmake openssl-devel openldap-devel krb5-devel libcurl-devel cyrus-sasl-devel bzip2-devel zlib-devel lz4-devel xz-devel e2fsprogs-devel iproute glibc-debuginfo ; \
9393 else \
94- DEBIAN_FRONTEND=noninteractive apt-get -y install cmake libssl-dev libldap2-dev libkrb5-dev libcurl4-openssl-dev libsasl2-dev liblz4-dev libbz2-dev libsnappy-dev zlib1g-dev libzlcore-dev liblzma-dev e2fslibs-dev iproute2; \
94+ DEBIAN_FRONTEND=noninteractive apt-get -y install cmake libssl-dev libldap2-dev libkrb5-dev libcurl4-openssl-dev libsasl2-dev liblz4-dev libbz2-dev libsnappy-dev zlib1g-dev libzlcore-dev liblzma-dev e2fslibs-dev iproute2 libc6-dbg ; \
9595 fi
9696RUN set -ex; \
9797 pip install --upgrade pip; \
@@ -109,22 +109,20 @@ RUN set -ex; \
109109 fi
110110ENV CMAKE_C_FLAGS=" -Wno-error=uninitialized "
111111ENV CMAKE_CXX_FLAGS=" -Wno-error=deprecated-declarations -Wno-error=uninitialized "
112- ENV AWS_LIBS=/usr
113112ARG AWS_VERSION=1.9.379
114113RUN cd /opt && git clone https://github.com/aws/aws-sdk-cpp.git && \
115114 mkdir -p /opt/aws && \
116115 cd aws-sdk-cpp && git checkout $AWS_VERSION && git submodule update --init --recursive && \
117116 mkdir build && cd build && \
118- cmake .. -DCMAKE_C_FLAGS="$CMAKE_C_FLAGS" -DCMAKE_CXX_FLAGS="$CMAKE_CXX_FLAGS" -DCMAKE_BUILD_TYPE=Release -DBUILD_ONLY="s3;transfer" -DBUILD_SHARED_LIBS=OFF -DMINIMIZE_SIZE=ON -DCMAKE_INSTALL_PREFIX="$AWS_LIBS " -DAUTORUN_UNIT_TESTS=OFF && \
117+ cmake .. -DCMAKE_C_FLAGS="$CMAKE_C_FLAGS" -DCMAKE_CXX_FLAGS="$CMAKE_CXX_FLAGS" -DCMAKE_BUILD_TYPE=Release -DBUILD_ONLY="s3;transfer" -DBUILD_SHARED_LIBS=OFF -DMINIMIZE_SIZE=ON -DCMAKE_INSTALL_PREFIX="/usr " -DAUTORUN_UNIT_TESTS=OFF && \
119118 make -j "$(nproc)" && make install && \
120119 cd /opt && rm -rf aws-sdk-cpp
121- ENV E2FS_LIBS=/usr
122120ARG E2FS_VERSION=v1.47.2
123121RUN cd /opt && git clone https://git.kernel.org/pub/scm/fs/ext2/e2fsprogs.git && \
124122 mkdir -p /opt/e2fs && \
125123 cd e2fsprogs && git checkout $E2FS_VERSION && \
126124 mkdir build && cd build && \
127- ../configure --prefix=$E2FS_LIBS && \
125+ ../configure --prefix=/usr && \
128126 make -j "$(nproc)" && make install-libs && \
129127 cd /opt && rm -rf e2fsprogs
130128RUN /usr/bin/echo -e "\n\
@@ -134,19 +132,19 @@ CPPPATH = \"/usr/include\"\n\
134132LIBPATH = \"/usr/lib /usr/lib64\"\n\
135133" > gcc.vars
136134ENV MONGO_VERSION=$psm_ver-$psm_release
135+ ADD https://raw.githubusercontent.com/Percona-QA/psmdb-testing/main/regression-tests/resmoke2junit.py .
137136
138137FROM base_image AS psmdb_builder
139- ARG psm_ver=8.0.3
140- ARG pro=""
141- ARG use_bazel=1
138+ ARG build_platform=bazel
139+ ENV PATH="/root/.local/bin:${PATH}"
142140RUN set -ex; \
143- VER=$(echo $psm_ver | cut -d"." -f1) && \
141+ VER=$(echo $MONGO_VERSION | cut -d"." -f1) && \
144142 if [ $VER -ge 8 ]; then \
145143 SCONS_TARGETS="install-mongod install-mongos install-mongo install-dbtest build/install/bin/mongobridge build/install/bin/wt build/install/bin/mongotmock" ;\
146144 else \
147145 SCONS_TARGETS="install-mongod install-mongos install-mongo install-dbtest build/install/bin/mongobridge build/install/bin/wt" ;\
148146 fi; \
149- if [ $use_bazel -eq 1 ]; then \
147+ if [ "$build_platform" = "bazel" ]; then \
150148 buildscripts/install_bazel.py && \
151149 bazel build --config=psmdb_opt_release --full_featured install-dist-test install-dbtest --define=MONGO_VERSION=$MONGO_VERSION && \
152150 mkdir -p build/install/bin && cp -RL bazel-bin/install/bin/* build/install/bin/ ;\
@@ -156,7 +154,52 @@ RUN set -ex; \
156154 fi
157155RUN find build/install/bin -type f | xargs strip --strip-debug || true
158156
159- FROM base_image
157+ FROM base_image AS unittests
158+ ARG build_platform=bazel
159+ RUN useradd -u 1001 -g 0 -m -c "Default Application User" mongodb && \
160+ chown -R mongodb /opt && chown -R mongodb /data/db
161+ USER mongodb
162+ ENV PATH="/home/mongodb/.local/bin:${PATH}"
163+ RUN set -ex; \
164+ if [ "$build_platform" = "bazel" ]; then \
165+ buildscripts/install_bazel.py && \
166+ bazel build --define=MONGO_VERSION=$MONGO_VERSION --config=psmdb_dev --include_autogenerated_targets=True --full_featured install-mongo_unittest ;\
167+ else \
168+ buildscripts/scons.py --variables-files=gcc.vars -j"$(nproc)" --disable-warnings-as-errors \
169+ --ssl --link-model=dynamic --linker=gold --dbg=off --opt=off $pro --use-sasl-client --wiredtiger --audit --inmemory --hotbackup install-unittests ;\
170+ fi
171+
172+ FROM base_image AS integrationtests
173+ ARG build_platform=bazel
174+ RUN useradd -u 1001 -g 0 -m -c "Default Application User" mongodb && \
175+ chown -R mongodb /opt && chown -R mongodb /data/db
176+ USER mongodb
177+ ENV PATH="/home/mongodb/.local/bin:${PATH}"
178+ RUN set -ex; \
179+ if [ "$build_platform" = "bazel" ]; then \
180+ buildscripts/install_bazel.py && \
181+ bazel build --define=MONGO_VERSION=$MONGO_VERSION --config=psmdb_dev --include_autogenerated_targets=True --full_featured install-mongo_integration_test ;\
182+ else \
183+ buildscripts/scons.py --variables-files=gcc.vars -j"$(nproc)" --disable-warnings-as-errors \
184+ --ssl --link-model=dynamic --linker=gold --dbg=off --opt=off $pro --use-sasl-client --wiredtiger --audit --inmemory --hotbackup install-integration-tests ;\
185+ fi
186+
187+ FROM base_image AS benchmarks
188+ ARG build_platform=bazel
189+ RUN useradd -u 1001 -g 0 -m -c "Default Application User" mongodb && \
190+ chown -R mongodb /opt && chown -R mongodb /data/db
191+ USER mongodb
192+ ENV PATH="/home/mongodb/.local/bin:${PATH}"
193+ RUN set -ex; \
194+ if [ "$build_platform" = "bazel" ]; then \
195+ buildscripts/install_bazel.py && \
196+ bazel build --define=MONGO_VERSION=$MONGO_VERSION --config=psmdb_dev --include_autogenerated_targets=True --full_featured install-mongo_benchmark ;\
197+ else \
198+ buildscripts/scons.py --variables-files=gcc.vars -j"$(nproc)" --disable-warnings-as-errors \
199+ --ssl --link-model=dynamic --linker=gold --dbg=off --opt=off $pro --use-sasl-client --wiredtiger --audit --inmemory --hotbackup install-benchmarks ;\
200+ fi
201+
202+ FROM base_image AS jstests
160203COPY --from=psmdb_builder /opt/percona-server-mongodb/build/install/bin/* /usr/bin/
161204RUN find jstests -type f | xargs chmod 400 && \
162205 cp /usr/bin/dbtest . || true && \
@@ -167,6 +210,5 @@ ENV PYTHONPATH="/opt/percona-server-mongodb:/opt/percona-server-mongodb/src"
167210ENV TZ=America/New_York
168211ENV PORTABLE=1
169212ENV USE_SSE=1
170- ADD https://raw.githubusercontent.com/Percona-QA/psmdb-testing/main/regression-tests/resmoke2junit.py .
171213RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
172214RUN useradd -u 1001 -r -g 0 -m -s /sbin/nologin -c "Default Application User" mongodb || true
0 commit comments