Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -92,6 +92,8 @@ jobs:
python: "3.14"
- platform: "ubuntu_24_04"
python: "3"
- platform: "ubuntu_26_04"
python: "3"
- platform: "altlinux_10"
python: "3"
- platform: "altlinux_11"
Expand Down
95 changes: 95 additions & 0 deletions Dockerfile--ubuntu_26_04.tmpl
Original file line number Diff line number Diff line change
@@ -0,0 +1,95 @@
ARG PYTHON_VERSION=3

# --------------------------------------------- base1
FROM ubuntu:26.04 AS base1

# Disable interactive apt questions so that the build doesn't hang when setting time zones
ENV DEBIAN_FRONTEND=noninteractive

RUN apt-get update && apt-get install -y --no-install-recommends \
sudo \
curl \
ca-certificates \
openssh-server \
sshpass \
time \
netcat-traditional \
iproute2 \
git \
# FIX FOR TestOsOpsCommon::test_mkdir__mt[remote_ops] \
# INFO [2026-07-14 11:12:31] [Worker #3] Number 0 is reserved! \
# INFO [2026-07-14 11:12:31] [Worker #0] Number 0 is reserved! \
# Returning classic GNU coreutils instead of the default Rust/uutils \
&& apt-get install -y --allow-remove-essential coreutils-from-gnu coreutils-from-uutils- \
&& rm -rf /var/lib/apt/lists/*

# --------------------------------------------- base2_with_python-3
FROM base1 AS base2_with_python-3

RUN apt-get update && apt-get install -y --no-install-recommends \
python3 \
python3-dev \
python3-venv \
&& rm -rf /var/lib/apt/lists/*

ENV PYTHON_BINARY=python3

# --------------------------------------------- final
FROM base2_with_python-${PYTHON_VERSION} AS final

EXPOSE 22
RUN ssh-keygen -A

RUN useradd -m test

# It enables execution of "sudo service ssh start" without password
RUN echo "test ALL=(ALL:ALL) NOPASSWD:ALL" >> /etc/sudoers

COPY --chown=test:test . /home/test/testgres
WORKDIR /home/test/testgres

ENV LANG=C.UTF-8

RUN chmod 700 /home/test/ && \
mkdir -p /home/test/.ssh && \
chown -R test:test /home/test/.ssh

#
# \"$@\"
# - quote is important!
# - "DUMMY-DUMMY-DUMMY" will be ignored. Do not ask me "why?". AXEZ.
#
ENTRYPOINT ["sh", "-c", " \
set -eux; \
echo 'SYSTEM START: PREPARING SSH'; \
service ssh start; \
ls -la /home/test/.ssh/; \
\"$@\" \
", "DUMMY-DUMMY-DUMMY"]

# Run tests by default (master machine role)
CMD ["bash", "-c", " \
set -eux; \
echo \"HOME DIR IS [`realpath ~/`]\"; \
echo \"WORK DIR IS [$(pwd)]\"; \
if [ ! -f /home/test/.ssh/id_rsa ]; then \
su test -c \"ssh-keygen -t rsa -f /home/test/.ssh/id_rsa -q -N ''\"; \
su test -c \"cat /home/test/.ssh/id_rsa.pub >> /home/test/.ssh/authorized_keys\"; \
chmod 600 /home/test/.ssh/authorized_keys; \
fi; \
ls -la /home/test/.ssh/; \
su test -c \"ssh-keyscan -H localhost >> /home/test/.ssh/known_hosts\"; \
su test -c \"ssh-keyscan -H 127.0.0.1 >> /home/test/.ssh/known_hosts\"; \
if [ -n \"${TEST_CFG__REMOTE_HOST:-}\" ]; then \
su test -c \"ssh-keyscan -H ${TEST_CFG__REMOTE_HOST} >> /home/test/.ssh/known_hosts\"; \
fi; \
if [ -n \"${TEST_CFG__REMOTE_SSH_KEY:-}\" ]; then \
cp \"${TEST_CFG__REMOTE_SSH_KEY}\" \"${TEST_CFG__REMOTE_SSH_KEY}_ci\"; \
export TEST_CFG__REMOTE_SSH_KEY=\"${TEST_CFG__REMOTE_SSH_KEY}_ci\"; \
chown test:test \"${TEST_CFG__REMOTE_SSH_KEY}\"; \
chmod 600 \"${TEST_CFG__REMOTE_SSH_KEY}\"; \
ls -la /home/test/.ssh/; \
fi; \
ls -la ./; \
su test -c \"bash ./run_tests3.sh\"; \
"]