From 0f5df8fca90c5f332555c08a8d6feb7888b00c05 Mon Sep 17 00:00:00 2001 From: "d.kovalenko" Date: Sat, 24 Jan 2026 21:00:39 +0300 Subject: [PATCH] [CI] Artifacts are uploaded --- .github/workflows/package-verification.yml | 16 +++++++++++- Dockerfile--altlinux_10.tmpl | 11 +++++--- Dockerfile--altlinux_11.tmpl | 11 +++++--- Dockerfile--std-all.tmpl | 18 +++++++++----- Dockerfile--std.tmpl | 26 ++++++++++++++++--- Dockerfile--std2-all.tmpl | 18 +++++++++----- Dockerfile--ubuntu_24_04.tmpl | 29 +++++++++++++--------- 7 files changed, 94 insertions(+), 35 deletions(-) diff --git a/.github/workflows/package-verification.yml b/.github/workflows/package-verification.yml index 8ad941d6..9eed6f2f 100644 --- a/.github/workflows/package-verification.yml +++ b/.github/workflows/package-verification.yml @@ -106,13 +106,27 @@ jobs: steps: - name: Prepare variables run: | + RUN_CFG__NOW="$(date +'%Y%m%d_%H%M%S')" + echo "RUN_CFG__NOW=$RUN_CFG__NOW" >> $GITHUB_ENV + RUN_CFG__LOGS_DIR="logs-${{ matrix.platform }}-py${{ matrix.python }}-pg${{ matrix.postgres }}" + echo "RUN_CFG__LOGS_DIR=$RUN_CFG__LOGS_DIR" >> $GITHUB_ENV RUN_CFG__DOCKER_IMAGE_NAME="tests-${{ matrix.platform }}-py${{ matrix.python }}-pg${{ matrix.postgres }}" echo "RUN_CFG__DOCKER_IMAGE_NAME=$RUN_CFG__DOCKER_IMAGE_NAME" >> $GITHUB_ENV echo "---------- [$GITHUB_ENV]" cat $GITHUB_ENV + - name: Prepare logs folder on the host + run: mkdir -p "${{ env.RUN_CFG__LOGS_DIR }}" + - name: Adjust logs folder permission + run: chmod -R 777 "${{ env.RUN_CFG__LOGS_DIR }}" - name: Checkout uses: actions/checkout@v4 - name: Build local image ${{ matrix.alpine }} run: docker build --build-arg PG_VERSION="${{ matrix.postgres }}" --build-arg PYTHON_VERSION="${{ matrix.python }}" -t "${{ env.RUN_CFG__DOCKER_IMAGE_NAME }}" -f Dockerfile--${{ matrix.platform }}.tmpl . - name: Run - run: docker run $(bash <(curl -s https://codecov.io/env)) -t "${{ env.RUN_CFG__DOCKER_IMAGE_NAME }}" + run: docker run $(bash <(curl -s https://codecov.io/env)) -t -v ${{ github.workspace }}/${{ env.RUN_CFG__LOGS_DIR }}:/home/test/testgres/logs "${{ env.RUN_CFG__DOCKER_IMAGE_NAME }}" + - name: Upload Logs + uses: actions/upload-artifact@v4 + if: always() # IT IS IMPORTANT! + with: + name: testgres--test_logs--${{ env.RUN_CFG__NOW }}-${{ matrix.platform }}-py${{ matrix.python }}-pg${{ matrix.postgres }}-id${{ github.run_id }} + path: "${{ env.RUN_CFG__LOGS_DIR }}/" diff --git a/Dockerfile--altlinux_10.tmpl b/Dockerfile--altlinux_10.tmpl index 6b7ad40c..ea5ae6b4 100644 --- a/Dockerfile--altlinux_10.tmpl +++ b/Dockerfile--altlinux_10.tmpl @@ -73,10 +73,12 @@ FROM base2_with_python-${PYTHON_VERSION} as final RUN adduser test -G wheel # It enables execution of "sudo service ssh start" without password -RUN sh -c "echo \"WHEEL_USERS ALL=(ALL:ALL) NOPASSWD: ALL\"" >> /etc/sudoers +RUN echo "WHEEL_USERS ALL=(ALL:ALL) NOPASSWD: ALL" >> /etc/sudoers -ADD --chown=test:test . /pg/testgres -WORKDIR /pg/testgres +ADD --chown=test:test . /home/test/testgres +WORKDIR /home/test/testgres +RUN mkdir /home/test/testgres/logs +RUN chown -R test:test /home/test/testgres/logs ENV LANG=C.UTF-8 @@ -93,7 +95,10 @@ ENTRYPOINT sh -c " \ set -eux; \ echo HELLO FROM ENTRYPOINT; \ echo HOME DIR IS [`realpath ~/`]; \ +ls -la .; \ sudo /usr/sbin/sshd; \ +sudo chmod 777 /home/test/testgres/logs; \ +ls -la . | grep logs; \ ssh-keyscan -H localhost >> ~/.ssh/known_hosts; \ ssh-keyscan -H 127.0.0.1 >> ~/.ssh/known_hosts; \ ssh-keygen -t rsa -f ~/.ssh/id_rsa -q -N ''; \ diff --git a/Dockerfile--altlinux_11.tmpl b/Dockerfile--altlinux_11.tmpl index e56db9c4..f609e7b6 100644 --- a/Dockerfile--altlinux_11.tmpl +++ b/Dockerfile--altlinux_11.tmpl @@ -76,10 +76,12 @@ FROM base2_with_python-${PYTHON_VERSION} as final RUN adduser test -G wheel # It enables execution of "sudo service ssh start" without password -RUN sh -c "echo \"WHEEL_USERS ALL=(ALL:ALL) NOPASSWD: ALL\"" >> /etc/sudoers +RUN echo "WHEEL_USERS ALL=(ALL:ALL) NOPASSWD: ALL" >> /etc/sudoers -ADD --chown=test:test . /pg/testgres -WORKDIR /pg/testgres +ADD --chown=test:test . /home/test/testgres +WORKDIR /home/test/testgres +RUN mkdir /home/test/testgres/logs +RUN chown -R test:test /home/test/testgres/logs ENV LANG=C.UTF-8 @@ -96,7 +98,10 @@ ENTRYPOINT sh -c " \ set -eux; \ echo HELLO FROM ENTRYPOINT; \ echo HOME DIR IS [`realpath ~/`]; \ +ls -la .; \ sudo /usr/sbin/sshd; \ +sudo chmod 777 /home/test/testgres/logs; \ +ls -la . | grep logs; \ ssh-keyscan -H localhost >> ~/.ssh/known_hosts; \ ssh-keyscan -H 127.0.0.1 >> ~/.ssh/known_hosts; \ ssh-keygen -t rsa -f ~/.ssh/id_rsa -q -N ''; \ diff --git a/Dockerfile--std-all.tmpl b/Dockerfile--std-all.tmpl index 170f53f9..d79275f1 100644 --- a/Dockerfile--std-all.tmpl +++ b/Dockerfile--std-all.tmpl @@ -24,21 +24,24 @@ RUN apk add --no-cache sudo ENV LANG=C.UTF-8 RUN addgroup -S sudo -RUN adduser postgres sudo +RUN adduser -D test +RUN addgroup test sudo EXPOSE 22 RUN ssh-keygen -A -ADD --chown=postgres:postgres . /pg/testgres -WORKDIR /pg/testgres +ADD --chown=test:test . /home/test/testgres +WORKDIR /home/test/testgres +RUN mkdir /home/test/testgres/logs +RUN chown -R test:test /home/test/testgres/logs # It allows to use sudo without password -RUN sh -c "echo \"postgres ALL=(ALL:ALL) NOPASSWD:ALL\"">>/etc/sudoers +RUN echo "test ALL=(ALL:ALL) NOPASSWD:ALL" >> /etc/sudoers # THIS CMD IS NEEDED TO CONNECT THROUGH SSH WITHOUT PASSWORD -RUN sh -c "echo "postgres:*" | chpasswd -e" +RUN echo "test:*" | chpasswd -e -USER postgres +USER test # THIS CMD IS NEEDED TO CONNECT THROUGH SSH WITHOUT PASSWORD RUN chmod 700 ~/ @@ -52,11 +55,14 @@ ENTRYPOINT sh -c " \ set -eux; \ echo HELLO FROM ENTRYPOINT; \ echo HOME DIR IS [`realpath ~/`]; \ +ls -la .; \ ssh-keygen -t rsa -f ~/.ssh/id_rsa -q -N ''; \ cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys; \ chmod 600 ~/.ssh/authorized_keys; \ ls -la ~/.ssh/; \ sudo /usr/sbin/sshd; \ +sudo chmod 777 /home/test/testgres/logs; \ +ls -la . | grep logs; \ ssh-keyscan -H localhost >> ~/.ssh/known_hosts; \ ssh-keyscan -H 127.0.0.1 >> ~/.ssh/known_hosts; \ TEST_FILTER=\"\" bash run_tests.sh;" diff --git a/Dockerfile--std.tmpl b/Dockerfile--std.tmpl index f1ba65df..d661a552 100644 --- a/Dockerfile--std.tmpl +++ b/Dockerfile--std.tmpl @@ -14,10 +14,28 @@ FROM base2_with_python-${PYTHON_VERSION} as final RUN apk add --no-cache git +RUN apk add --no-cache sudo + ENV LANG=C.UTF-8 -ADD --chown=postgres:postgres . /pg/testgres -WORKDIR /pg/testgres +RUN addgroup -S sudo +RUN adduser -D test +RUN addgroup test sudo + +ADD --chown=test:test . /home/test/testgres +WORKDIR /home/test/testgres +RUN mkdir /home/test/testgres/logs +RUN chown -R test:test /home/test/testgres/logs + +# It allows to use sudo without password +RUN echo "test ALL=(ALL:ALL) NOPASSWD:ALL" >> /etc/sudoers -USER postgres -ENTRYPOINT bash run_tests.sh +USER test +ENTRYPOINT sh -c " \ +set -eux; \ +echo HELLO FROM ENTRYPOINT; \ +echo HOME DIR IS [`realpath ~/`]; \ +ls -la .; \ +sudo chmod 777 /home/test/testgres/logs; \ +ls -la . | grep logs; \ +bash run_tests.sh;" diff --git a/Dockerfile--std2-all.tmpl b/Dockerfile--std2-all.tmpl index 0a695240..3c3c7d7c 100644 --- a/Dockerfile--std2-all.tmpl +++ b/Dockerfile--std2-all.tmpl @@ -71,24 +71,27 @@ RUN apk add --no-cache sudo ENV LANG=C.UTF-8 RUN addgroup -S sudo -RUN adduser postgres sudo +RUN adduser -D test +RUN addgroup test sudo EXPOSE 22 RUN ssh-keygen -A # It allows to use sudo without password -RUN sh -c "echo \"postgres ALL=(ALL:ALL) NOPASSWD:ALL\"">>/etc/sudoers +RUN echo "test ALL=(ALL:ALL) NOPASSWD:ALL" >> /etc/sudoers # THIS CMD IS NEEDED TO CONNECT THROUGH SSH WITHOUT PASSWORD -RUN sh -c "echo "postgres:*" | chpasswd -e" +RUN echo "test:*" | chpasswd -e -USER postgres +USER test RUN curl https://raw.githubusercontent.com/pyenv/pyenv-installer/master/bin/pyenv-installer | bash RUN ~/.pyenv/bin/pyenv install ${PYTHON_VERSION} -ADD --chown=postgres:postgres . /pg/testgres -WORKDIR /pg/testgres +ADD --chown=test:test . /home/test/testgres +WORKDIR /home/test/testgres +RUN mkdir /home/test/testgres/logs +RUN chown -R test:test /home/test/testgres/logs # THIS CMD IS NEEDED TO CONNECT THROUGH SSH WITHOUT PASSWORD RUN chmod 700 ~/ @@ -99,11 +102,14 @@ ENTRYPOINT sh -c " \ set -eux; \ echo HELLO FROM ENTRYPOINT; \ echo HOME DIR IS [`realpath ~/`]; \ +ls -la .; \ ssh-keygen -t rsa -f ~/.ssh/id_rsa -q -N ''; \ cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys; \ chmod 600 ~/.ssh/authorized_keys; \ ls -la ~/.ssh/; \ sudo /usr/sbin/sshd; \ +sudo chmod 777 /home/test/testgres/logs; \ +ls -la . | grep logs; \ ssh-keyscan -H localhost >> ~/.ssh/known_hosts; \ ssh-keyscan -H 127.0.0.1 >> ~/.ssh/known_hosts; \ export PATH=\"~/.pyenv/bin:$PATH\"; \ diff --git a/Dockerfile--ubuntu_24_04.tmpl b/Dockerfile--ubuntu_24_04.tmpl index f3846036..3083dfad 100644 --- a/Dockerfile--ubuntu_24_04.tmpl +++ b/Dockerfile--ubuntu_24_04.tmpl @@ -26,19 +26,10 @@ RUN curl -o /usr/share/postgresql-common/pgdg/apt.postgresql.org.asc --fail http RUN apt update RUN apt install -y postgresql-${PG_VERSION} -# RUN apt install -y mc - -# [2025-02-26] It adds the user 'postgres' in the group 'sudo' -# [2025-02-27] It is not required. -# RUN adduser postgres sudo - EXPOSE 22 RUN ssh-keygen -A -# It enables execution of "sudo service ssh start" without password -RUN sh -c "echo postgres ALL=NOPASSWD:/usr/sbin/service ssh start" >> /etc/sudoers - # --------------------------------------------- base2_with_python-3 FROM base1 as base2_with_python-3 RUN apt install -y python3 python3-dev python3-venv libpq-dev build-essential @@ -49,12 +40,23 @@ FROM base2_with_python-${PYTHON_VERSION} as final RUN apt install -y git -ADD --chown=postgres:postgres . /pg/testgres -WORKDIR /pg/testgres +RUN adduser test +RUN chown postgres:postgres /var/run/postgresql +RUN chmod 775 /var/run/postgresql +RUN usermod -aG postgres test + +# It enables execution of "sudo service ssh start" without password +#RUN echo "test ALL=NOPASSWD:/usr/sbin/service ssh start" >> /etc/sudoers +RUN echo "test ALL=NOPASSWD:ALL" >> /etc/sudoers + +ADD --chown=test:test . /home/test/testgres +WORKDIR /home/test/testgres +RUN mkdir /home/test/testgres/logs +RUN chown -R test:test /home/test/testgres/logs ENV LANG=C.UTF-8 -USER postgres +USER test RUN chmod 700 ~/ RUN mkdir -p ~/.ssh @@ -63,8 +65,11 @@ ENTRYPOINT sh -c " \ #set -eux; \ echo HELLO FROM ENTRYPOINT; \ echo HOME DIR IS [`realpath ~/`]; \ +ls -la .; \ service ssh enable; \ sudo service ssh start; \ +sudo chmod 777 /home/test/testgres/logs; \ +ls -la . | grep logs; \ ssh-keyscan -H localhost >> ~/.ssh/known_hosts; \ ssh-keyscan -H 127.0.0.1 >> ~/.ssh/known_hosts; \ ssh-keygen -t rsa -f ~/.ssh/id_rsa -q -N ''; \