Skip to content

Commit 42eab35

Browse files
authored
feat: Add Python 3.13 to testing image (GoogleCloudPlatform#12780)
* feat: Add Python 3.13 to testing image * fix build; add python 3.13 configs * update copyright year
1 parent 91d2066 commit 42eab35

File tree

5 files changed

+147
-6
lines changed

5 files changed

+147
-6
lines changed

.kokoro/docker/Dockerfile

Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414

1515
# We want to use LTS ubuntu from our mirror because dockerhub has a
1616
# rate limit.
17-
FROM mirror.gcr.io/library/ubuntu:20.04
17+
FROM mirror.gcr.io/library/ubuntu:24.04
1818

1919
ENV DEBIAN_FRONTEND noninteractive
2020

@@ -28,6 +28,7 @@ ENV LANG C.UTF-8
2828

2929
# Install dependencies.
3030
RUN apt-get update \
31+
&& apt -y upgrade \
3132
&& apt-get install -y --no-install-recommends \
3233
apt-transport-https \
3334
build-essential \
@@ -115,7 +116,7 @@ RUN set -ex \
115116
&& export GNUPGHOME="$(mktemp -d)" \
116117
&& echo "disable-ipv6" >> "${GNUPGHOME}/dirmngr.conf" \
117118
&& /tmp/fetch_gpg_keys.sh \
118-
&& for PYTHON_VERSION in 2.7.18 3.7.17 3.8.18 3.9.18 3.10.13 3.11.6 3.12.0; do \
119+
&& for PYTHON_VERSION in 2.7.18 3.7.17 3.8.20 3.9.20 3.10.15 3.11.10 3.12.7 3.13.0; do \
119120
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" \
120121
&& 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" \
121122
&& gpg --batch --verify python-${PYTHON_VERSION}.tar.xz.asc python-${PYTHON_VERSION}.tar.xz \
@@ -144,7 +145,8 @@ RUN set -ex \
144145
# If the environment variable is called "PIP_VERSION", pip explodes with
145146
# "ValueError: invalid truth value '<VERSION>'"
146147
ENV PYTHON_PIP_VERSION 21.3.1
147-
RUN wget --no-check-certificate -O /tmp/get-pip.py 'https://bootstrap.pypa.io/get-pip.py' \
148+
RUN wget --no-check-certificate -O /tmp/get-pip-3-7.py 'https://bootstrap.pypa.io/pip/3.7/get-pip.py' \
149+
&& wget --no-check-certificate -O /tmp/get-pip.py 'https://bootstrap.pypa.io/get-pip.py' \
148150
&& python3.10 /tmp/get-pip.py "pip==$PYTHON_PIP_VERSION" \
149151
# we use "--force-reinstall" for the case where the version of pip we're trying to install is the same as the version bundled with Python
150152
# ("Requirement already up-to-date: pip==8.1.2 in /usr/local/lib/python3.10/site-packages")
@@ -155,11 +157,12 @@ RUN wget --no-check-certificate -O /tmp/get-pip.py 'https://bootstrap.pypa.io/ge
155157
&& [ "$(pip list |tac|tac| awk -F '[ ()]+' '$1 == "pip" { print $2; exit }')" = "$PYTHON_PIP_VERSION" ]
156158

157159
# Ensure Pip for all python3 versions
160+
RUN python3.13 /tmp/get-pip.py
158161
RUN python3.12 /tmp/get-pip.py
159162
RUN python3.11 /tmp/get-pip.py
160163
RUN python3.9 /tmp/get-pip.py
161164
RUN python3.8 /tmp/get-pip.py
162-
RUN python3.7 /tmp/get-pip.py
165+
RUN python3.7 /tmp/get-pip-3-7.py
163166
RUN rm /tmp/get-pip.py
164167

165168
# Test Pip
@@ -170,15 +173,17 @@ RUN python3.9 -m pip
170173
RUN python3.10 -m pip
171174
RUN python3.11 -m pip
172175
RUN python3.12 -m pip
176+
RUN python3.13 -m pip
173177

174178
# Install "setuptools" for Python 3.12+ (see https://docs.python.org/3/whatsnew/3.12.html#distutils)
175179
RUN python3.12 -m pip install --no-cache-dir setuptools
180+
RUN python3.13 -m pip install --no-cache-dir setuptools
176181

177182
# Install "virtualenv", since the vast majority of users of this image will want it.
178183
RUN pip install --no-cache-dir virtualenv
179184

180185
# Setup Cloud SDK
181-
ENV CLOUD_SDK_VERSION 389.0.0
186+
ENV CLOUD_SDK_VERSION 502.0.0
182187
# Use system python for cloud sdk.
183188
ENV CLOUDSDK_PYTHON python3.10
184189
RUN wget https://dl.google.com/dl/cloudsdk/channels/rapid/downloads/google-cloud-sdk-$CLOUD_SDK_VERSION-linux-x86_64.tar.gz
@@ -192,7 +197,8 @@ RUN sudo systemctl enable redis-server.service
192197
# Create a user and allow sudo
193198

194199
# kbuilder uid on the default Kokoro image
195-
ARG UID=1000
200+
# UID 1000 is taken in Ubuntu 24.04
201+
ARG UID=10000
196202
ARG USERNAME=kbuilder
197203

198204
# Add a new user to the container image.

.kokoro/python3.13/common.cfg

Lines changed: 61 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,61 @@
1+
# Copyright 2024 Google LLC
2+
#
3+
# Licensed under the Apache License, Version 2.0 (the "License");
4+
# you may not use this file except in compliance with the License.
5+
# You may obtain a copy of the License at
6+
#
7+
# http://www.apache.org/licenses/LICENSE-2.0
8+
#
9+
# Unless required by applicable law or agreed to in writing, software
10+
# distributed under the License is distributed on an "AS IS" BASIS,
11+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12+
# See the License for the specific language governing permissions and
13+
# limitations under the License.
14+
15+
# Format: //devtools/kokoro/config/proto/build.proto
16+
17+
timeout_mins: 300
18+
19+
# Configure the docker image for kokoro-trampoline.
20+
env_vars: {
21+
key: "TRAMPOLINE_IMAGE"
22+
value: "gcr.io/cloud-devrel-kokoro-resources/python-samples-testing-docker"
23+
}
24+
25+
# Download trampoline resources.
26+
gfile_resources: "/bigstore/cloud-devrel-kokoro-resources/trampoline"
27+
28+
# Use the trampoline script to run in docker.
29+
build_file: "python-docs-samples/.kokoro/trampoline_v2.sh"
30+
31+
# Download secrets from Cloud Storage.
32+
gfile_resources: "/bigstore/cloud-devrel-kokoro-resources/python-docs-samples"
33+
34+
# Access btlr binaries used in the tests
35+
gfile_resources: "/bigstore/cloud-devrel-kokoro-resources/btlr"
36+
37+
# Copy results for Resultstore
38+
action {
39+
define_artifacts {
40+
regex: "**/*sponge_log.xml"
41+
}
42+
}
43+
44+
# Specify which tests to run
45+
env_vars: {
46+
key: "RUN_TESTS_SESSION"
47+
value: "py-3.13"
48+
}
49+
50+
# Declare build specific Cloud project. It still uses the common one,
51+
# but we'll update the value once we have more Cloud projects.
52+
env_vars: {
53+
key: "BUILD_SPECIFIC_GCLOUD_PROJECT"
54+
value: "python-docs-samples-tests-313"
55+
}
56+
57+
# Number of test workers.
58+
env_vars: {
59+
key: "NUM_TEST_WORKERS"
60+
value: "10"
61+
}

.kokoro/python3.13/continuous.cfg

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
# Copyright 2024 Google LLC
2+
#
3+
# Licensed under the Apache License, Version 2.0 (the "License");
4+
# you may not use this file except in compliance with the License.
5+
# You may obtain a copy of the License at
6+
#
7+
# http://www.apache.org/licenses/LICENSE-2.0
8+
#
9+
# Unless required by applicable law or agreed to in writing, software
10+
# distributed under the License is distributed on an "AS IS" BASIS,
11+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12+
# See the License for the specific language governing permissions and
13+
# limitations under the License.
14+
15+
# Format: //devtools/kokoro/config/proto/build.proto
16+
17+
# Tell the trampoline which build file to use.
18+
env_vars: {
19+
key: "TRAMPOLINE_BUILD_FILE"
20+
value: ".kokoro/tests/run_tests_diff_head.sh"
21+
}

.kokoro/python3.13/periodic.cfg

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
# Copyright 2024 Google LLC
2+
#
3+
# Licensed under the Apache License, Version 2.0 (the "License");
4+
# you may not use this file except in compliance with the License.
5+
# You may obtain a copy of the License at
6+
#
7+
# http://www.apache.org/licenses/LICENSE-2.0
8+
#
9+
# Unless required by applicable law or agreed to in writing, software
10+
# distributed under the License is distributed on an "AS IS" BASIS,
11+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12+
# See the License for the specific language governing permissions and
13+
# limitations under the License.
14+
15+
# Format: //devtools/kokoro/config/proto/build.proto
16+
17+
# Tell the trampoline which build file to use.
18+
env_vars: {
19+
key: "TRAMPOLINE_BUILD_FILE"
20+
value: ".kokoro/tests/run_tests.sh"
21+
}
22+
23+
env_vars: {
24+
key: "REPORT_TO_BUILD_COP_BOT"
25+
value: "false"
26+
}
27+
28+
# Tell Trampoline to upload the Docker image after successfull build.
29+
env_vars: {
30+
key: "TRAMPOLINE_IMAGE_UPLOAD"
31+
value: "true"
32+
}

.kokoro/python3.13/presubmit.cfg

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
# Copyright 2024 Google LLC
2+
#
3+
# Licensed under the Apache License, Version 2.0 (the "License");
4+
# you may not use this file except in compliance with the License.
5+
# You may obtain a copy of the License at
6+
#
7+
# http://www.apache.org/licenses/LICENSE-2.0
8+
#
9+
# Unless required by applicable law or agreed to in writing, software
10+
# distributed under the License is distributed on an "AS IS" BASIS,
11+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12+
# See the License for the specific language governing permissions and
13+
# limitations under the License.
14+
15+
# Format: //devtools/kokoro/config/proto/build.proto
16+
17+
# Tell the trampoline which build file to use.
18+
env_vars: {
19+
key: "TRAMPOLINE_BUILD_FILE"
20+
value: ".kokoro/tests/run_tests_diff_main.sh"
21+
}

0 commit comments

Comments
 (0)