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