@@ -16,8 +16,23 @@ concurrency:
1616env :
1717 SHOWCASE_VERSION : 0.35.0
1818 PROTOC_VERSION : 3.20.2
19+ OLDEST_PYTHON : 3.7
20+ LATEST_STABLE_PYTHON : 3.13
21+
22+ permissions :
23+ contents : read
1924
2025jobs :
26+ all_python_setup :
27+ runs-on : ubuntu-latest
28+ outputs :
29+ all_python : ${{ steps.all_python_setup.outputs.all_python }}
30+ steps :
31+ - name : Set up all python
32+ id : all_python
33+ run : |
34+ echo 'all_python=["3.7", "3.8", "3.9", "3.10", "3.11", "3.12", "3.13"]' >> $GITHUB_OUTPUT
35+
2136 docs :
2237 runs-on : ubuntu-latest
2338 steps :
@@ -34,11 +49,15 @@ jobs:
3449 - name : Build the documentation.
3550 run : nox -s docs
3651 mypy :
52+ needs : all_python_setup
3753 strategy :
3854 matrix :
3955 # Run mypy on all of the supported python versions listed in setup.py
4056 # https://github.com/python/mypy/blob/master/setup.py
41- python : ["3.8", "3.9", "3.10", "3.11", "3.12", "3.13"]
57+ python : ${{ fromJSON(needs.all_python_setup.outputs.all_python) }}
58+ exclude :
59+ # Remove once https://github.com/googleapis/gapic-generator-python/issues/2303 is fixed
60+ - python : 3.7
4261 runs-on : ubuntu-latest
4362 steps :
4463 - uses : actions/checkout@v4
5675 # Run showcase tests on the lowest and highest supported runtimes
5776 matrix :
5877 # TODO(https://github.com/googleapis/gapic-generator-python/issues/2121) Remove `showcase_w_rest_async` target when async rest is GA.
59- python : ["3.7 ", "3.13 "]
78+ python : ["${{ vars.OLDEST_PYTHON }} ", "${{ vars.LATEST_STABLE_PYTHON }} "]
6079 target : [showcase, showcase_w_rest_async]
6180 logging_scope : ["", "google"]
6281
@@ -111,10 +130,10 @@ jobs:
111130 run : |
112131 sudo mkdir -p /tmp/workspace/tests/cert/
113132 sudo chown -R ${USER} /tmp/workspace/
114- - name : Set up Python "3.13"
133+ - name : Set up Python ${{ vars.LATEST_STABLE_PYTHON }}
115134 uses : actions/setup-python@v5
116135 with :
117- python-version : " 3.13 "
136+ python-version : " ${{ vars.LATEST_STABLE_PYTHON }} "
118137 cache : ' pip'
119138 - name : Copy mtls files
120139 run : cp tests/cert/mtls.* /tmp/workspace/tests/cert/
@@ -145,9 +164,10 @@ jobs:
145164 nox -s ${{ matrix.target }}
146165 # TODO(yon-mg): add compute unit tests
147166 showcase-unit :
167+ needs : all_python_setup
148168 strategy :
149169 matrix :
150- python : ["3.7", "3.8", "3.9", "3.10", "3.11", "3.12", "3.13"]
170+ python : ${{ fromJSON(needs.all_python_setup.outputs.all_python) }}
151171 # TODO(https://github.com/googleapis/gapic-generator-python/issues/2121) Remove `_w_rest_async` variant when async rest is GA.
152172 variant : ['', _alternative_templates, _mixins, _alternative_templates_mixins, _w_rest_async]
153173 logging_scope : ["", "google"]
@@ -185,10 +205,10 @@ jobs:
185205 runs-on : ubuntu-latest
186206 steps :
187207 - uses : actions/checkout@v4
188- - name : Set up Python "3.13"
208+ - name : Set up Python ${{ vars.LATEST_STABLE_PYTHON }}
189209 uses : actions/setup-python@v5
190210 with :
191- python-version : " 3.13 "
211+ python-version : " ${{ vars.LATEST_STABLE_PYTHON }} "
192212 cache : ' pip'
193213 - name : Install system dependencies.
194214 run : |
@@ -213,10 +233,10 @@ jobs:
213233 variant : ['', _alternative_templates]
214234 steps :
215235 - uses : actions/checkout@v4
216- - name : Set up Python "3.13"
236+ - name : Set up Python ${{ vars.LATEST_STABLE_PYTHON }}
217237 uses : actions/setup-python@v5
218238 with :
219- python-version : " 3.13 "
239+ python-version : " ${{ vars.LATEST_STABLE_PYTHON }} "
220240 cache : ' pip'
221241 - name : Install system dependencies.
222242 run : |
@@ -235,13 +255,14 @@ jobs:
235255 - name : Typecheck the generated output.
236256 run : nox -s showcase_mypy${{ matrix.variant }}
237257 snippetgen :
258+ needs : all_python_setup
238259 runs-on : ubuntu-latest
239260 steps :
240261 - uses : actions/checkout@v4
241- - name : Set up Python "3.13"
262+ - name : Set up Python ${{ vars.LATEST_STABLE_PYTHON }}
242263 uses : actions/setup-python@v5
243264 with :
244- python-version : " 3.13 "
265+ python-version : " ${{ vars.LATEST_STABLE_PYTHON }} "
245266 cache : ' pip'
246267 - name : Install system dependencies.
247268 run : |
@@ -252,10 +273,10 @@ jobs:
252273 - name : Check autogenerated snippets.
253274 run : nox -s snippetgen
254275 unit :
276+ needs : all_python_setup
255277 strategy :
256278 matrix :
257- python : ["3.7", "3.8", "3.9", "3.10", "3.11", "3.12", "3.13"]
258-
279+ python : ${{ fromJSON(needs.all_python_setup.outputs.all_python) }}
259280 # TODO(https://github.com/googleapis/gapic-generator-python/issues/2303): use `ubuntu-latest` once this bug is fixed.
260281 # Use ubuntu-22.04 until Python 3.7 is removed from the test matrix
261282 runs-on : ubuntu-22.04
@@ -264,7 +285,7 @@ jobs:
264285 - name : Set up Python ${{ matrix.python }}
265286 uses : actions/setup-python@v5
266287 with :
267- python-version : ${{ matrix.python }}
288+ python-version : " ${{ matrix.python }}"
268289 cache : ' pip'
269290 - name : Install pandoc
270291 run : |
@@ -276,9 +297,10 @@ jobs:
276297 - name : Run unit tests.
277298 run : nox -s unit-${{ matrix.python }}
278299 fragment :
300+ needs : all_python_setup
279301 strategy :
280302 matrix :
281- python : ["3.7", "3.8", "3.9", "3.10", "3.11", "3.12", "3.13"]
303+ python : ${{ fromJSON(needs.all_python_setup.outputs.all_python) }}
282304 variant : ['', _alternative_templates]
283305
284306 # TODO(https://github.com/googleapis/gapic-generator-python/issues/2303): use `ubuntu-latest` once this bug is fixed.
@@ -289,7 +311,7 @@ jobs:
289311 - name : Set up Python ${{ matrix.python }}
290312 uses : actions/setup-python@v5
291313 with :
292- python-version : ${{ matrix.python }}
314+ python-version : " ${{ matrix.python }}"
293315 cache : ' pip'
294316 - name : Install pandoc
295317 run : |
@@ -333,29 +355,29 @@ jobs:
333355 runs-on : ubuntu-latest
334356 steps :
335357 - uses : actions/checkout@v4
336- - name : Set up Python 3.13
358+ - name : Set up Python ${{ vars.LATEST_STABLE_PYTHON }}
337359 uses : actions/setup-python@v5
338360 with :
339- python-version : " 3.13 "
361+ python-version : ${{ vars.LATEST_STABLE_PYTHON }}
340362 cache : ' pip'
341363 - name : Install nox.
342364 run : |
343365 python -m pip install nox
344366 - name : Run blacken and lint on the generated output.
345367 run : |
346- nox -f tests/integration/goldens/asset/noxfile.py -s mypy-3.13 blacken lint
347- nox -f tests/integration/goldens/credentials/noxfile.py -s mypy-3.13 blacken lint
348- nox -f tests/integration/goldens/eventarc/noxfile.py -s mypy-3.13 blacken lint
349- nox -f tests/integration/goldens/logging/noxfile.py -s mypy-3.13 blacken lint
350- nox -f tests/integration/goldens/redis/noxfile.py -s mypy-3.13 blacken lint
368+ nox -f tests/integration/goldens/asset/noxfile.py -s mypy-${{ vars.LATEST_STABLE_PYTHON }} blacken lint
369+ nox -f tests/integration/goldens/credentials/noxfile.py -s mypy-${{ vars.LATEST_STABLE_PYTHON }} blacken lint
370+ nox -f tests/integration/goldens/eventarc/noxfile.py -s mypy-${{ vars.LATEST_STABLE_PYTHON }} blacken lint
371+ nox -f tests/integration/goldens/logging/noxfile.py -s mypy-${{ vars.LATEST_STABLE_PYTHON }} blacken lint
372+ nox -f tests/integration/goldens/redis/noxfile.py -s mypy-${{ vars.LATEST_STABLE_PYTHON }} blacken lint
351373 goldens-unit :
352374 runs-on : ubuntu-latest
353375 steps :
354376 - uses : actions/checkout@v4
355- - name : Set up Python 3.13
377+ - name : Set up Python ${{ vars.LATEST_STABLE_PYTHON }}
356378 uses : actions/setup-python@v5
357379 with :
358- python-version : " 3.13 "
380+ python-version : " ${{ vars.LATEST_STABLE_PYTHON }} "
359381 cache : ' pip'
360382 - name : Install nox.
361383 run : |
@@ -365,18 +387,18 @@ jobs:
365387 # in order to run unit tests
366388 # See https://github.com/googleapis/gapic-generator-python/issues/1806
367389 run : |
368- nox -f tests/integration/goldens/credentials/noxfile.py -s unit-3.13
369- nox -f tests/integration/goldens/eventarc/noxfile.py -s unit-3.13
370- nox -f tests/integration/goldens/logging/noxfile.py -s unit-3.13
371- nox -f tests/integration/goldens/redis/noxfile.py -s unit-3.13
390+ nox -f tests/integration/goldens/credentials/noxfile.py -s unit-${{ vars.LATEST_STABLE_PYTHON }}
391+ nox -f tests/integration/goldens/eventarc/noxfile.py -s unit-${{ vars.LATEST_STABLE_PYTHON }}
392+ nox -f tests/integration/goldens/logging/noxfile.py -s unit-${{ vars.LATEST_STABLE_PYTHON }}
393+ nox -f tests/integration/goldens/redis/noxfile.py -s unit-${{ vars.LATEST_STABLE_PYTHON }}
372394 goldens-prerelease :
373395 runs-on : ubuntu-latest
374396 steps :
375397 - uses : actions/checkout@v4
376- - name : Set up Python 3.13
398+ - name : Set up Python ${{ vars.LATEST_STABLE_PYTHON }}
377399 uses : actions/setup-python@v5
378400 with :
379- python-version : " 3.13 "
401+ python-version : " ${{ vars.LATEST_STABLE_PYTHON }} "
380402 cache : ' pip'
381403 - name : Install nox.
382404 run : |
@@ -394,10 +416,10 @@ jobs:
394416 runs-on : ubuntu-latest
395417 steps :
396418 - uses : actions/checkout@v4
397- - name : Set up Python "3.13"
419+ - name : Set up Python ${{ vars.LATEST_STABLE_PYTHON }}
398420 uses : actions/setup-python@v5
399421 with :
400- python-version : " 3.13 "
422+ python-version : " ${{ vars.LATEST_STABLE_PYTHON }} "
401423 cache : ' pip'
402424 - name : Install nox.
403425 run : |
0 commit comments