From 4c2563731f9e2b2eb42b807bfbe9e53e36d16092 Mon Sep 17 00:00:00 2001 From: sfaqer Date: Mon, 21 Sep 2026 20:11:21 +1000 Subject: [PATCH] =?UTF-8?q?Docker-=D0=BE=D0=B1=D1=80=D0=B0=D0=B7=D1=8B=20?= =?UTF-8?q?=D1=81=D0=BE=D0=B1=D0=B8=D1=80=D0=B0=D1=8E=D1=82=D1=81=D1=8F=20?= =?UTF-8?q?=D1=81=20=D0=B2=D0=B5=D1=80=D1=81=D0=B8=D0=B5=D0=B9=20=D0=B4?= =?UTF-8?q?=D0=B2=D0=B8=D0=B6=D0=BA=D0=B0,=20=D1=81=D0=BE=D0=BE=D1=82?= =?UTF-8?q?=D0=B2=D0=B5=D1=82=D1=81=D1=82=D0=B2=D1=83=D1=8E=D1=89=D0=B5?= =?UTF-8?q?=D0=B9=20=D1=82=D0=B5=D0=B3=D1=83?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit publishDockerImage не передавал --build-arg VERSION, поэтому Dockerfile_v2 всегда ставил ovm install --fdd dev (а Dockerfile_v1 - stable). Слой с установкой не менялся и брался из кэша агента: evilbeaver/onescript:2.2.0 и :dev содержат 2.2.0-dev+757. Лог: https://build.oscript.io/job/1Script/job/release%252Flatest/29/ (этап Build v2, #8 CACHED) - VERSION передается явно: для v2 dev или номер релиза, для v1 lts или номер из тега - docker build с --no-cache --pull - в Dockerfile_v1/v2 сборка падает, если oscript -version не совпадает с VERSION Co-Authored-By: Claude Opus 5 (1M context) --- Jenkinsfile | 13 +++++++++---- install/builders/base-image/Dockerfile_v1 | 11 +++++++++++ install/builders/base-image/Dockerfile_v2 | 10 +++++++++- 3 files changed, 29 insertions(+), 5 deletions(-) diff --git a/Jenkinsfile b/Jenkinsfile index c025c6371..922242f7e 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -298,7 +298,9 @@ pipeline { steps { script { def codename = env.TAG_NAME ? env.TAG_NAME : 'lts' - publishDockerImage('v1', codename) + // тег v1.9.4 -> версия для ovm 1.9.4 + def engineVersion = env.TAG_NAME ? env.TAG_NAME.replaceFirst(/^v/, '') : 'lts' + publishDockerImage('v1', codename, engineVersion) } } } @@ -322,7 +324,8 @@ pipeline { codename = fullVersionNumber() } - publishDockerImage('v2', codename) + // для v2 тег образа совпадает с версией для ovm: dev или 2.2.0 + publishDockerImage('v2', codename, codename) } } } @@ -410,12 +413,14 @@ def publishReleaseNotes(codename) { } } -def publishDockerImage(flavour, codename) { +def publishDockerImage(flavour, codename, engineVersion) { def imageName = "evilbeaver/onescript:${codename}" + // --no-cache: слой с ovm install не меняется между сборками и иначе берется из кэша агента + // --pull: обновлять базовые образы (ovm, aspnet, mono) docker.build( imageName, - "--load -f install/builders/base-image/Dockerfile_${flavour} ." + "--load --pull --no-cache --build-arg VERSION=${engineVersion} -f install/builders/base-image/Dockerfile_${flavour} ." ).push() } diff --git a/install/builders/base-image/Dockerfile_v1 b/install/builders/base-image/Dockerfile_v1 index a1cc0c9db..84a3d40f5 100644 --- a/install/builders/base-image/Dockerfile_v1 +++ b/install/builders/base-image/Dockerfile_v1 @@ -12,3 +12,14 @@ RUN curl -L https://github.com/oscript-library/ovm/releases/latest/download/ovm. ENV OSCRIPTBIN=/root/.local/share/ovm/current/bin ENV PATH="$OSCRIPTBIN:$PATH" + +# Проверка, что в образ попала запрошенная версия (для алиасов lts, stable и т.п. только вывод) +# 1.x выводит версию с номером сборки: 1.9.4.16 +RUN ACTUAL="$(oscript -version)" \ + && echo "oscript -version: ${ACTUAL}" \ + && case "${VERSION}" in \ + [0-9]*) case "${ACTUAL}" in \ + "${VERSION}"|"${VERSION}".*) ;; \ + *) echo "Ожидалась версия ${VERSION}, в образе ${ACTUAL}" >&2; exit 1 ;; \ + esac ;; \ + esac diff --git a/install/builders/base-image/Dockerfile_v2 b/install/builders/base-image/Dockerfile_v2 index 7412f7d47..a29278794 100644 --- a/install/builders/base-image/Dockerfile_v2 +++ b/install/builders/base-image/Dockerfile_v2 @@ -36,4 +36,12 @@ ARG VERSION="dev" RUN mkdir -p /var/oscript COPY --from=0 /root/.local/share/ovm/${VERSION}/ /var/oscript/ -ENV PATH="$PATH:/var/oscript/bin" \ No newline at end of file +ENV PATH="$PATH:/var/oscript/bin" + +# Проверка, что в образ попала запрошенная версия (для алиасов dev, stable и т.п. только вывод) +RUN ACTUAL="$(oscript -version)" \ + && echo "oscript -version: ${ACTUAL}" \ + && case "${VERSION}" in \ + [0-9]*) [ "${ACTUAL}" = "${VERSION}" ] \ + || { echo "Ожидалась версия ${VERSION}, в образе ${ACTUAL}" >&2; exit 1; } ;; \ + esac \ No newline at end of file