From e44dc0c742b1230887a73552357e0c18dcc30b92 Mon Sep 17 00:00:00 2001 From: Anthonios Partheniou Date: Wed, 14 Jul 2021 12:08:29 -0400 Subject: [PATCH] build(python): remove python 3.7 from kokoro Dockerfile (#1155) A lot of python repositories have a failing `Kokoro docs-presubmit` check with error `gpg: keyserver receive failed: No name`. For example, https://github.com/googleapis/python-asset/pull/227 The issue is that the `fetch_gpg_keys.sh` script is failing in the Docker file [here](https://github.com/googleapis/synthtool/blob/master/synthtool/gcp/templates/python_library/.kokoro/docker/docs/Dockerfile#L68) because the key [here](https://github.com/googleapis/synthtool/blob/master/synthtool/gcp/templates/python_library/.kokoro/docker/docs/fetch_gpg_keys.sh#L39) is no longer available on the keyserver. This PR removes `fetch_gpg_keys.sh` as, in most repositories, we don't need to install additional python versions. We can use the default python version in the ubuntu 20.04 base image which is python 3.8.10. --- .../.kokoro/docker/docs/Dockerfile | 35 +-------------- .../.kokoro/docker/docs/fetch_gpg_keys.sh | 45 ------------------- tests/test_python_library.py | 2 +- 3 files changed, 3 insertions(+), 79 deletions(-) delete mode 100755 synthtool/gcp/templates/python_library/.kokoro/docker/docs/fetch_gpg_keys.sh diff --git a/synthtool/gcp/templates/python_library/.kokoro/docker/docs/Dockerfile b/synthtool/gcp/templates/python_library/.kokoro/docker/docs/Dockerfile index 412b0b56a..4e1b1fb8b 100644 --- a/synthtool/gcp/templates/python_library/.kokoro/docker/docs/Dockerfile +++ b/synthtool/gcp/templates/python_library/.kokoro/docker/docs/Dockerfile @@ -40,6 +40,7 @@ RUN apt-get update \ libssl-dev \ libsqlite3-dev \ portaudio19-dev \ + python3-distutils \ redis-server \ software-properties-common \ ssh \ @@ -59,40 +60,8 @@ RUN apt-get update \ && rm -rf /var/lib/apt/lists/* \ && rm -f /var/cache/apt/archives/*.deb - -COPY fetch_gpg_keys.sh /tmp -# Install the desired versions of Python. -RUN set -ex \ - && export GNUPGHOME="$(mktemp -d)" \ - && echo "disable-ipv6" >> "${GNUPGHOME}/dirmngr.conf" \ - && /tmp/fetch_gpg_keys.sh \ - && for PYTHON_VERSION in 3.7.8 3.8.5; do \ - wget --no-check-certificate -O python-${PYTHON_VERSION}.tar.xz "https://www.python.org/ftp/python/${PYTHON_VERSION%%[a-z]*}/Python-$PYTHON_VERSION.tar.xz" \ - && wget --no-check-certificate -O python-${PYTHON_VERSION}.tar.xz.asc "https://www.python.org/ftp/python/${PYTHON_VERSION%%[a-z]*}/Python-$PYTHON_VERSION.tar.xz.asc" \ - && gpg --batch --verify python-${PYTHON_VERSION}.tar.xz.asc python-${PYTHON_VERSION}.tar.xz \ - && rm -r python-${PYTHON_VERSION}.tar.xz.asc \ - && mkdir -p /usr/src/python-${PYTHON_VERSION} \ - && tar -xJC /usr/src/python-${PYTHON_VERSION} --strip-components=1 -f python-${PYTHON_VERSION}.tar.xz \ - && rm python-${PYTHON_VERSION}.tar.xz \ - && cd /usr/src/python-${PYTHON_VERSION} \ - && ./configure \ - --enable-shared \ - # This works only on Python 2.7 and throws a warning on every other - # version, but seems otherwise harmless. - --enable-unicode=ucs4 \ - --with-system-ffi \ - --without-ensurepip \ - && make -j$(nproc) \ - && make install \ - && ldconfig \ - ; done \ - && rm -rf "${GNUPGHOME}" \ - && rm -rf /usr/src/python* \ - && rm -rf ~/.cache/ - RUN wget -O /tmp/get-pip.py 'https://bootstrap.pypa.io/get-pip.py' \ - && python3.7 /tmp/get-pip.py \ && python3.8 /tmp/get-pip.py \ && rm /tmp/get-pip.py -CMD ["python3.7"] +CMD ["python3.8"] diff --git a/synthtool/gcp/templates/python_library/.kokoro/docker/docs/fetch_gpg_keys.sh b/synthtool/gcp/templates/python_library/.kokoro/docker/docs/fetch_gpg_keys.sh deleted file mode 100755 index 998168a76..000000000 --- a/synthtool/gcp/templates/python_library/.kokoro/docker/docs/fetch_gpg_keys.sh +++ /dev/null @@ -1,45 +0,0 @@ -#!/bin/bash -# Copyright 2020 Google LLC -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -# A script to fetch gpg keys with retry. -# Avoid jinja parsing the file. -# {% raw %} - -function retry { - if [[ "${#}" -le 1 ]]; then - echo "Usage: ${0} retry_count commands.." - exit 1 - fi - local retries=${1} - local command="${@:2}" - until [[ "${retries}" -le 0 ]]; do - $command && return 0 - if [[ $? -ne 0 ]]; then - echo "command failed, retrying" - ((retries--)) - fi - done - return 1 -} - -# 3.6.9, 3.7.5 (Ned Deily) -retry 3 gpg --keyserver ha.pool.sks-keyservers.net --recv-keys \ - 0D96DF4D4110E5C43FBFB17F2D347EA6AA65421D - -# 3.8.0 (Ɓukasz Langa) -retry 3 gpg --keyserver ha.pool.sks-keyservers.net --recv-keys \ - E3FF2839C048B25C084DEBE9B26995E310250568 - -# {% endraw %} diff --git a/tests/test_python_library.py b/tests/test_python_library.py index 04fdb9a12..1fe8ff9c4 100644 --- a/tests/test_python_library.py +++ b/tests/test_python_library.py @@ -108,7 +108,7 @@ def test_python_library(): templated_files = common.py_library() assert os.path.exists(templated_files / ".kokoro/docs/docs-presubmit.cfg") - assert os.path.exists(templated_files / ".kokoro/docker/docs/fetch_gpg_keys.sh") + assert os.path.exists(templated_files / ".kokoro/docker/docs/Dockerfile") def test_split_system_tests():