From 650392c700ca9285eaa0eaabeb5a6e7557e48b5a Mon Sep 17 00:00:00 2001 From: Monty Taylor Date: Mon, 23 Mar 2020 16:28:23 -0500 Subject: [PATCH] Start making 3.8 python images base and builder are currently pinned to 3.7, which makes it hard to consider upgrading to python-3.8. To help with that, make python-3.7 and python-3.8 images, but point latest as 3.7 for the time being. Then add version-specific provides and FROM lines so that we can start being deliberate and clear about our version choice. Change-Id: Ibf1d846d5c4a005547785124567ce2900e272a7a --- .zuul.yaml | 189 +++++++++++++++++++++++-------- docker/gerrit/base/Dockerfile | 2 +- docker/haproxy-statsd/Dockerfile | 2 +- docker/jinja-init/Dockerfile | 4 +- docker/python-base/Dockerfile | 3 +- docker/python-builder/Dockerfile | 5 +- 6 files changed, 148 insertions(+), 57 deletions(-) diff --git a/.zuul.yaml b/.zuul.yaml index b0b67150f2..89ff200f52 100644 --- a/.zuul.yaml +++ b/.zuul.yaml @@ -56,7 +56,7 @@ name: system-config-build-image-jinja-init description: Build a jinja-init image. parent: system-config-build-image - requires: python-base-container-image + requires: python-base-3.7-container-image provides: jinja-init-container-image vars: &jinja-init_vars docker_images: @@ -71,7 +71,7 @@ name: system-config-upload-image-jinja-init description: Build and upload a jinja-init image. parent: system-config-upload-image - requires: python-base-container-image + requires: python-base-3.7-container-image provides: jinja-init-container-image vars: *jinja-init_vars files: *jinja-init_files @@ -150,7 +150,7 @@ name: system-config-build-image-haproxy-statsd description: Build a haproxy-statsd image. parent: system-config-build-image - requires: python-base-container-image + requires: python-base-3.7-container-image vars: &haproxy-statsd_vars docker_images: - context: docker/haproxy-statsd @@ -164,7 +164,7 @@ name: system-config-upload-image-haproxy-statsd description: Build and upload a haproxy-statsd image. parent: system-config-upload-image - requires: python-base-container-image + requires: python-base-3.7-container-image vars: *haproxy-statsd_vars files: *haproxy-statsd_files @@ -511,63 +511,146 @@ vars: *gerrit_vars_master files: *gerrit_files_master -# python-builder jobs +# python-builder-3.7 jobs - job: - name: system-config-build-image-python-builder - description: Build a python-builder image. + name: system-config-build-image-python-builder-3.7 + description: Build a python-builder-3.7 image. parent: system-config-build-image - provides: python-builder-container-image - vars: &python-builder_vars + provides: + - python-builder-container-image + - python-builder-3.7-container-image + vars: &python-builder_3_7_vars docker_images: - context: docker/python-builder repository: opendevorg/python-builder - files: &python-builder_files + tags: + - 3.7 + - latest + build_args: + - PYTHON_VERSION=3.7 + files: &python-builder_3_7_files - docker/python-base/.* - docker/python-builder/.* - job: - name: system-config-upload-image-python-builder - description: Build and upload a python-builder image. + name: system-config-upload-image-python-builder-3.7 + description: Build and upload a python-builder-3.7 image. parent: system-config-upload-image - provides: python-builder-container-image - vars: *python-builder_vars - files: *python-builder_files + provides: + - python-builder-container-image + - python-builder-3.7-container-image + vars: *python-builder_3_7_vars + files: *python-builder_3_7_files - job: - name: system-config-promote-image-python-builder - description: Promote a previously published python-builder image to latest. + name: system-config-promote-image-python-builder-3.7 + description: Promote a previously published python-builder-3.7 image to latest. parent: system-config-promote-image - vars: *python-builder_vars - files: *python-builder_files + vars: *python-builder_3_7_vars + files: *python-builder_3_7_files -# python-base jobs +# python-builder-3.8 jobs - job: - name: system-config-build-image-python-base - description: Build a python-base image. + name: system-config-build-image-python-builder-3.8 + description: Build a python-builder-3.8 image. parent: system-config-build-image - provides: python-base-container-image - vars: &python-base_vars + provides: + - python-builder-3.8-container-image + vars: &python-builder_3_8_vars + docker_images: + - context: docker/python-builder + repository: opendevorg/python-builder + tags: + - 3.8 + build_args: + - PYTHON_VERSION=3.8 + files: &python-builder_3_8_files + - docker/python-base/.* + - docker/python-builder/.* + +- job: + name: system-config-upload-image-python-builder-3.8 + description: Build and upload a python-builder-3.8 image. + parent: system-config-upload-image + provides: python-builder-3.8-container-image + vars: *python-builder_3_8_vars + files: *python-builder_3_8_files + +- job: + name: system-config-promote-image-python-builder-3.8 + description: Promote a previously published python-builder-3.8 image to latest. + parent: system-config-promote-image + vars: *python-builder_3_8_vars + files: *python-builder_3_8_files + +# python-base-3.7 jobs +- job: + name: system-config-build-image-python-base-3.7 + description: Build a python-base-3.7 image. + parent: system-config-build-image + provides: + - python-base-container-image + - python-base-3.7-container-image + vars: &python-base-3_7_vars docker_images: - context: docker/python-base repository: opendevorg/python-base - files: &python-base_files + tags: + - 3.7 + - latest + build_args: + - PYTHON_VERSION=3.7 + files: &python-base-3_7_files - docker/python-base/.* - docker/python-builder/.* - job: - name: system-config-upload-image-python-base - description: Build and upload a python-base image. + name: system-config-upload-image-python-base-3.7 + description: Build and upload a python-base-3.7 image. parent: system-config-upload-image - provides: python-base-container-image - vars: *python-base_vars - files: *python-base_files + provides: python-base-3.7-container-image + vars: *python-base-3_7_vars + files: *python-base-3_7_files - job: - name: system-config-promote-image-python-base - description: Promote a previously published python-base image to latest. + name: system-config-promote-image-python-base-3.7 + description: Promote a previously published python-base-3.7 image to latest. parent: system-config-promote-image - vars: *python-base_vars - files: *python-base_files + vars: *python-base-3_7_vars + files: *python-base-3_7_files + +# python-base-3.8 jobs +- job: + name: system-config-build-image-python-base-3.8 + description: Build a python-base-3.8 image. + parent: system-config-build-image + provides: python-base-3.8-container-image + vars: &python-base-3_8_vars + docker_images: + - context: docker/python-base + repository: opendevorg/python-base + tags: + - 3.8 + build_args: + - PYTHON_VERSION=3.8 + files: &python-base-3_8_files + - docker/python-base/.* + - docker/python-builder/.* + +- job: + name: system-config-upload-image-python-base-3.8 + description: Build and upload a python-base-3.8 image. + parent: system-config-upload-image + provides: python-base-3.8-container-image + vars: *python-base-3_8_vars + files: *python-base-3_8_files + +- job: + name: system-config-promote-image-python-base-3.8 + description: Promote a previously published python-base-3.8 image to latest. + parent: system-config-promote-image + vars: *python-base-3_8_vars + files: *python-base-3_8_files # gerrit-base jobs - job: @@ -577,7 +660,7 @@ required-projects: &gerrit_base_projects - opendev/jeepyb - opendev/system-config - requires: python-builder-container-image + requires: python-builder-3.7-container-image provides: gerrit-base-container-image vars: &gerrit-base_vars docker_images: @@ -591,7 +674,7 @@ name: system-config-upload-image-gerrit-base description: Build and upload a gerrit-base image. parent: system-config-upload-image - requires: python-builder-container-image + requires: python-builder-3.7-container-image provides: gerrit-base-container-image required-projects: *gerrit_base_projects vars: *gerrit-base_vars @@ -1316,12 +1399,12 @@ - system-config-build-image-gerrit-base: dependencies: - name: opendev-buildset-registry - - name: system-config-build-image-python-builder + - name: system-config-build-image-python-builder-3.7 soft: true - system-config-build-image-gerrit-2.13: dependencies: - name: opendev-buildset-registry - - name: system-config-build-image-python-builder + - name: system-config-build-image-python-builder-3.7 soft: true - name: system-config-build-image-gerrit-base soft: true @@ -1351,12 +1434,12 @@ - system-config-upload-image-gerrit-base: dependencies: - name: opendev-buildset-registry - - name: system-config-upload-image-python-builder + - name: system-config-upload-image-python-builder-3.7 soft: true - system-config-upload-image-gerrit-2.13: dependencies: - name: opendev-buildset-registry - - name: system-config-upload-image-python-builder + - name: system-config-upload-image-python-builder-3.7 soft: true - name: system-config-upload-image-gerrit-base soft: true @@ -1424,7 +1507,7 @@ - system-config-build-image-jinja-init: dependencies: - name: opendev-buildset-registry - - name: system-config-build-image-python-base + - name: system-config-build-image-python-base-3.7 soft: true - system-config-build-image-gitea-init: dependencies: @@ -1435,10 +1518,12 @@ - system-config-build-image-haproxy-statsd: dependencies: - name: opendev-buildset-registry - - name: system-config-build-image-python-base + - name: system-config-build-image-python-base-3.7 soft: true - - system-config-build-image-python-base - - system-config-build-image-python-builder + - system-config-build-image-python-base-3.7 + - system-config-build-image-python-base-3.8 + - system-config-build-image-python-builder-3.7 + - system-config-build-image-python-builder-3.8 check-arm64: jobs: - system-config-run-mirror-arm64 @@ -1473,7 +1558,7 @@ - system-config-upload-image-jinja-init: dependencies: - name: opendev-buildset-registry - - name: system-config-upload-image-python-base + - name: system-config-upload-image-python-base-3.7 soft: true - system-config-upload-image-gitea-init: dependencies: @@ -1484,18 +1569,22 @@ - system-config-upload-image-haproxy-statsd: dependencies: - name: opendev-buildset-registry - - name: system-config-upload-image-python-base + - name: system-config-upload-image-python-base-3.7 soft: true - - system-config-upload-image-python-base - - system-config-upload-image-python-builder + - system-config-upload-image-python-base-3.7 + - system-config-upload-image-python-base-3.8 + - system-config-upload-image-python-builder-3.7 + - system-config-upload-image-python-builder-3.8 promote: jobs: - system-config-promote-image-jinja-init - system-config-promote-image-gitea-init - system-config-promote-image-gitea - system-config-promote-image-haproxy-statsd - - system-config-promote-image-python-base - - system-config-promote-image-python-builder + - system-config-promote-image-python-base-3.7 + - system-config-promote-image-python-base-3.8 + - system-config-promote-image-python-builder-3.7 + - system-config-promote-image-python-builder-3.8 periodic: jobs: - developer-openstack-goaccess-report diff --git a/docker/gerrit/base/Dockerfile b/docker/gerrit/base/Dockerfile index 63e604e228..54227b9478 100644 --- a/docker/gerrit/base/Dockerfile +++ b/docker/gerrit/base/Dockerfile @@ -13,7 +13,7 @@ # See the License for the specific language governing permissions and # limitations under the License. -FROM docker.io/opendevorg/python-builder as builder +FROM docker.io/opendevorg/python-builder:3.7 as builder COPY . /tmp/src RUN assemble diff --git a/docker/haproxy-statsd/Dockerfile b/docker/haproxy-statsd/Dockerfile index 9009d08694..b0c5c891f2 100644 --- a/docker/haproxy-statsd/Dockerfile +++ b/docker/haproxy-statsd/Dockerfile @@ -13,7 +13,7 @@ # See the License for the specific language governing permissions and # limitations under the License. -FROM docker.io/opendevorg/python-base +FROM docker.io/opendevorg/python-base:3.7 COPY haproxy-statsd.py /usr/local/bin RUN pip install statsd diff --git a/docker/jinja-init/Dockerfile b/docker/jinja-init/Dockerfile index ef7c3297b0..6f4ba22746 100644 --- a/docker/jinja-init/Dockerfile +++ b/docker/jinja-init/Dockerfile @@ -12,7 +12,7 @@ # License for the specific language governing permissions and limitations # under the License. -FROM docker.io/opendevorg/python-base as build +FROM docker.io/opendevorg/python-base:3.7 as build RUN apt-get update && apt-get -y install \ git \ @@ -25,7 +25,7 @@ WORKDIR /src/jinja-init RUN git checkout 8c13a44124a5a363519df787b1cd0abd1198b8df -FROM docker.io/opendevorg/python-base as jinja-init +FROM docker.io/opendevorg/python-base:3.7 as jinja-init RUN pip install jinja2 diff --git a/docker/python-base/Dockerfile b/docker/python-base/Dockerfile index ffcbb9dd36..96d1801f34 100644 --- a/docker/python-base/Dockerfile +++ b/docker/python-base/Dockerfile @@ -13,7 +13,8 @@ # See the License for the specific language governing permissions and # limitations under the License. -FROM docker.io/library/python:3.7-slim +ARG PYTHON_VERSION=3.7 +FROM docker.io/library/python:${PYTHON_VERSION}-slim RUN echo 'APT::Install-Recommends "0";' > /etc/apt/apt.conf.d/95disable-recommends diff --git a/docker/python-builder/Dockerfile b/docker/python-builder/Dockerfile index 1b0785d90e..176f8fc125 100644 --- a/docker/python-builder/Dockerfile +++ b/docker/python-builder/Dockerfile @@ -13,7 +13,8 @@ # See the License for the specific language governing permissions and # limitations under the License. -FROM docker.io/library/python:3.7-slim as fake-python +ARG PYTHON_VERSION=3.7 +FROM docker.io/library/python:${PYTHON_VERSION}-slim as fake-python WORKDIR /tmp RUN apt-get update \ @@ -22,7 +23,7 @@ RUN apt-get update \ COPY python3-dev.control /tmp/python3-dev.control RUN equivs-build /tmp/python3-dev.control -FROM docker.io/library/python:3.7-slim +FROM docker.io/library/python:${PYTHON_VERSION}-slim RUN echo 'APT::Install-Recommends "0";' > /etc/apt/apt.conf.d/95disable-recommends