Skip to content

Commit c36aa1d

Browse files
PSMDB-1690 separate build stages for different types of the tests, PSMDB-1721 fix for unittests
1 parent 76538cd commit c36aa1d

File tree

1 file changed

+58
-16
lines changed

1 file changed

+58
-16
lines changed

regression-tests/build_image/Dockerfile_gcc_from_scratch

Lines changed: 58 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,7 @@ RUN set -ex; \
6161
fi; \
6262
pip3 install --upgrade pip && pip3 install virtualenv && python3 -m venv /opt/venv
6363
ENV VIRTUAL_ENV=/opt/venv
64-
ENV PATH="/root/.local/bin:/opt/venv/bin:${PATH}"
64+
ENV PATH="/opt/venv/bin:${PATH}"
6565
ENV POETRY_VIRTUALENVS_CREATE=false
6666
ENV POETRY_INSTALLER_MAX_WORKERS=10
6767
ENV PYTHON_KEYRING_BACKEND=keyring.backends.null.Keyring
@@ -72,8 +72,8 @@ ENV PYTHON_BIN_PATH=/opt/venv/bin/python
7272

7373
FROM toolchain AS base_image
7474
ARG 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
7777
ARG repo=https://github.com/percona/percona-server-mongodb.git
7878
RUN 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 && \
8989
WORKDIR /opt/percona-server-mongodb
9090
RUN 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
9696
RUN set -ex; \
9797
pip install --upgrade pip; \
@@ -109,22 +109,20 @@ RUN set -ex; \
109109
fi
110110
ENV CMAKE_C_FLAGS=" -Wno-error=uninitialized "
111111
ENV CMAKE_CXX_FLAGS=" -Wno-error=deprecated-declarations -Wno-error=uninitialized "
112-
ENV AWS_LIBS=/usr
113112
ARG AWS_VERSION=1.9.379
114113
RUN 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
122120
ARG E2FS_VERSION=v1.47.2
123121
RUN 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
130128
RUN /usr/bin/echo -e "\n\
@@ -134,19 +132,19 @@ CPPPATH = \"/usr/include\"\n\
134132
LIBPATH = \"/usr/lib /usr/lib64\"\n\
135133
" > gcc.vars
136134
ENV MONGO_VERSION=$psm_ver-$psm_release
135+
ADD https://raw.githubusercontent.com/Percona-QA/psmdb-testing/main/regression-tests/resmoke2junit.py .
137136

138137
FROM 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}"
142140
RUN 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
157155
RUN 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
160203
COPY --from=psmdb_builder /opt/percona-server-mongodb/build/install/bin/* /usr/bin/
161204
RUN 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"
167210
ENV TZ=America/New_York
168211
ENV PORTABLE=1
169212
ENV USE_SSE=1
170-
ADD https://raw.githubusercontent.com/Percona-QA/psmdb-testing/main/regression-tests/resmoke2junit.py .
171213
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
172214
RUN useradd -u 1001 -r -g 0 -m -s /sbin/nologin -c "Default Application User" mongodb || true

0 commit comments

Comments
 (0)