@@ -32,26 +32,23 @@ jobs:
3232 fail-fast : false
3333 matrix :
3434 python_version :
35- - 3.8
36- - 3.9
35+ - " 3.9"
3736 - " 3.10"
3837 - " 3.11"
3938 - " 3.12"
39+ - " 3.13"
4040 # cryptography is not compatible with older PyPy versions
41- - " pypy-3.8"
41+ - " pypy-3.9"
42+ - " pypy-3.10"
4243 os :
4344 - ubuntu-latest
44- include :
45- - python_version : pyjion
46- os : ubuntu-20.04
4745
4846 steps :
4947 - uses : actions/checkout@master
5048 with :
5149 fetch-depth : 1
5250
5351 - name : Use Python ${{ matrix.python_version }}
54- if : ${{ matrix.python_version != 'pyjion' }}
5552 uses : actions/setup-python@v5
5653 with :
5754 python-version : ${{ matrix.python_version }}
6158 sudo DEBIAN_FRONTEND=noninteractive apt-get update
6259 sudo DEBIAN_FRONTEND=noninteractive apt-get install -yq gcc libvirt-dev
6360
64- - name : Use Python 3.10 (pyjion)
65- if : ${{ matrix.python_version == 'pyjion' }}
66- uses : actions/setup-python@v5
67- with :
68- python-version : " 3.10"
69-
70- # From https://github.com/tonybaloney/Pyjion/blob/develop/main/.github/workflows/benchmark.yml#L26 (MIT)
71- - name : Install OS / deb dependencies
72- if : ${{ matrix.python_version == 'pyjion' }}
73- run : |
74- sudo DEBIAN_FRONTEND=noninteractive apt-get update
75- sudo DEBIAN_FRONTEND=noninteractive apt-get install -yq cmake llvm-9 clang-9 autoconf automake \
76- libtool build-essential python curl git lldb-6.0 liblldb-6.0-dev \
77- libunwind8 libunwind8-dev gettext libicu-dev liblttng-ust-dev \
78- libssl-dev libnuma-dev libkrb5-dev zlib1g-dev
79-
80- - name : Setup Dotnet 6
81- if : ${{ matrix.python_version == 'pyjion' }}
82- 83- with :
84- dotnet-version : " 6.0.100"
85-
8661 - name : Cache Python Dependencies
8762 uses : actions/cache@v4
8863 with :
9166 restore-keys : |
9267 ${{ runner.os }}-pip-
9368
94- - name : Install Pyjion
95- if : ${{ matrix.python_version == 'pyjion' }}
96- run : |
97- pip install pyjion
98-
9969 - name : Install Python Dependencies
10070 run : |
10171 pip install -r requirements-ci.txt
10575 tox -e py${{ matrix.python_version }}
10676
10777 - name : Run dist install checks tox target
108- # NOTE: 3.12 will be failing until we migrate away from setup.py
109- if : ${{ matrix.python_version != 'pypy-3.7' && matrix.python_version != 'pypy-3.8' && matrix.python_version != 'pyjion' && matrix.python_version != '3.12-dev' }}
78+ if : ${{ matrix.python_version != 'pypy-3.9' && matrix.python_version != 'pypy-3.10' }}
11079 run : |
11180 tox -e py${{ matrix.python_version }}-dist,py${{ matrix.python_version }}-dist-wheel
11281
11685
11786 strategy :
11887 matrix :
119- python_version : [3.8 ]
88+ python_version : [3.9 ]
12089
12190 steps :
12291 - uses : actions/checkout@master
@@ -150,7 +119,7 @@ jobs:
150119 tox -e coverage-ci
151120
152121 - name : Upload Coverage to codecov.io
153- uses : codecov/codecov-action@e28ff129e5465c2c0dcc6f003fc735cb6ae0c673 # v4.5 .0
122+ uses : codecov/codecov-action@0565863a31f2c772f9f0395002a31e3f06189574 # v5.4 .0
154123 with :
155124 # We utilize secret for more realiable builds. Without secret being set, upload step
156125 # fails fairly often.
@@ -164,7 +133,7 @@ jobs:
164133
165134 strategy :
166135 matrix :
167- python_version : [3.8 ]
136+ python_version : [3.9 ]
168137
169138 steps :
170139 - uses : actions/checkout@master
@@ -201,13 +170,90 @@ jobs:
201170 run : |
202171 tox -e black-check,isort-check,pyupgrade,checks,import-timings,lint,pylint,mypy
203172
173+ build_test_release_artifact :
174+ name : Build and Test Release Artifact
175+ runs-on : ubuntu-latest
176+
177+ strategy :
178+ matrix :
179+ python_version : [3.9]
180+
181+ steps :
182+ - uses : actions/checkout@master
183+ with :
184+ fetch-depth : 1
185+
186+ - name : Use Python ${{ matrix.python_version }}
187+ uses : actions/setup-python@v5
188+ with :
189+ python-version : ${{ matrix.python_version }}
190+
191+ - name : Cache Python Dependencies
192+ uses : actions/cache@v4
193+ with :
194+ path : ~/.cache/pip
195+ key : ${{ runner.os }}-pip-${{ hashFiles('requirements-lint.txt') }}
196+ restore-keys : |
197+ ${{ runner.os }}-pip-
198+
199+ - name : Install Python Dependencies
200+ run : |
201+ pip install -r requirements-ci.txt
202+ pip install "build==1.2.2"
203+
204+ - name : Build Release Artifact
205+ run : |
206+ pip list installed
207+ python -m build -vv
208+
209+ - name : Set Environment
210+ run : |
211+ export PYTHONPATH=.
212+ export VERSION=$(python -c "import libcloud ; print(libcloud.__version__)")
213+ echo "VERSION=${VERSION}" >> "$GITHUB_ENV"
214+
215+ - name : Verify Tarball Release Artifact
216+ run : |
217+ # Verify tarball file exists
218+ export TARBALL_FILENAME="apache_libcloud-${VERSION}.tar.gz"
219+
220+ ls -la "dist/${TARBALL_FILENAME}"
221+
222+ cd dist/
223+
224+ # Unpack tarball and verify + run the tests
225+ tar -xzvf "${TARBALL_FILENAME}"
226+
227+ cd "apache_libcloud-${VERSION}/"
228+ tox -c tox.ini -epy3.9
229+
230+ - name : Verify Wheel Release Artifact
231+ run : |
232+ # Verify wheel file exists
233+ export WHEEL_FILENAME="apache_libcloud-${VERSION}-py3-none-any.whl"
234+
235+ ls -la "dist/${WHEEL_FILENAME}"
236+
237+ cd dist/
238+
239+ # Unpack wheel and verify + run tests
240+ unzip "${WHEEL_FILENAME}" -d "wheel"
241+ cd wheel
242+
243+ # Since wheel doesn't include those files, we need to manually copy them over from
244+ # repo root so we can run the tests
245+ cp ../../tox.ini .
246+ cp ../../requirements-tests.txt .
247+ cp ../../libcloud/test/secrets.py-dist libcloud/test/secrets.py-dist
248+ tox -c tox.ini -epy3.9
249+
204250 build_test_docker_image :
205251 name : Build and Verify Docker Image
206252 runs-on : ubuntu-latest
207253
208254 strategy :
209255 matrix :
210- python_version : [3.8 ]
256+ python_version : [3.9 ]
211257
212258 steps :
213259 - uses : actions/checkout@master
@@ -231,7 +277,7 @@ jobs:
231277
232278 strategy :
233279 matrix :
234- python_version : [3.8 ]
280+ python_version : [3.9 ]
235281
236282 steps :
237283 - uses : actions/checkout@master
@@ -299,7 +345,7 @@ jobs:
299345
300346 strategy :
301347 matrix :
302- python_version : [3.8 ]
348+ python_version : [3.9 ]
303349
304350 steps :
305351 - uses : actions/checkout@master
@@ -338,7 +384,7 @@ jobs:
338384
339385 strategy :
340386 matrix :
341- python_version : [3.8 ]
387+ python_version : [3.9 ]
342388
343389 steps :
344390 - name : Print Environment Info
0 commit comments