Skip to content

Commit 6c0c68f

Browse files
committed
Update CI
1 parent 4b4d6e0 commit 6c0c68f

File tree

4 files changed

+220
-163
lines changed

4 files changed

+220
-163
lines changed

.github/workflows/dist.yml

Lines changed: 187 additions & 153 deletions
Original file line numberDiff line numberDiff line change
@@ -62,12 +62,48 @@ jobs:
6262
6363
6464
#
65-
# Build native wheels
65+
# Build other wheels first (OS-specific, not python specific)
6666
#
6767

68-
build:
68+
build-other:
6969
runs-on: ${{ matrix.os }}
7070
needs: [setup_concurrency]
71+
strategy:
72+
max-parallel: ${{ fromJSON(needs.setup_concurrency.outputs.max-parallel).v }}
73+
fail-fast: true
74+
matrix:
75+
os: ["ubuntu-22.04", "ubuntu-22.04-arm", "macos-14", "windows-2022"]
76+
77+
steps:
78+
- uses: actions/checkout@v4
79+
with:
80+
fetch-depth: 0
81+
- uses: actions/setup-python@v5
82+
with:
83+
python-version: '3.13'
84+
85+
- name: Install deps
86+
shell: bash
87+
run: |
88+
python -m pip --disable-pip-version-check install -r rdev_requirements.txt
89+
90+
- name: Build + test wheels
91+
shell: bash
92+
run: |
93+
./rdev.sh ci build-other-wheels
94+
95+
- uses: actions/upload-artifact@v4
96+
with:
97+
name: "pypi-other-${{ runner.os }}"
98+
path: dist
99+
100+
#
101+
# Build meson wheels
102+
#
103+
104+
build-meson:
105+
runs-on: ${{ matrix.os }}
106+
needs: [setup_concurrency, build-other]
71107
strategy:
72108
max-parallel: ${{ fromJSON(needs.setup_concurrency.outputs.max-parallel).v }}
73109
fail-fast: true
@@ -88,6 +124,11 @@ jobs:
88124
with:
89125
python-version: ${{ matrix.python_version }}
90126

127+
- uses: actions/download-artifact@v4
128+
with:
129+
name: "pypi-other-${{ runner.os }}"
130+
path: dist-other
131+
91132
#
92133
# Setup build caching
93134
#
@@ -118,10 +159,8 @@ jobs:
118159
- name: Build + test wheels
119160
shell: bash
120161
run: |
121-
./rdev.sh ci run
162+
./rdev.sh ci build-meson-wheels
122163
env:
123-
RPYBUILD_STRIP_LIBPYTHON: "1"
124-
RPYBUILD_CC_LAUNCHER: sccache
125164
SCCACHE_WEBDAV_USERNAME: ${{ secrets.WPI_ARTIFACTORY_USERNAME }}
126165
SCCACHE_WEBDAV_PASSWORD: ${{ secrets.WPI_ARTIFACTORY_TOKEN }}
127166

@@ -149,6 +188,11 @@ jobs:
149188
- uses: actions/checkout@v4
150189
with:
151190
fetch-depth: 0
191+
192+
- uses: actions/download-artifact@v4
193+
with:
194+
name: "pypi-other-${{ runner.os }}"
195+
path: dist-other
152196

153197
#
154198
# Setup build caching
@@ -176,10 +220,8 @@ jobs:
176220
- name: Build + test wheels
177221
shell: bash
178222
run: |
179-
./rdev.sh ci run
223+
./rdev.sh ci build-meson-wheels
180224
env:
181-
RPYBUILD_STRIP_LIBPYTHON: "1"
182-
RPYBUILD_CC_LAUNCHER: sccache
183225
SCCACHE_WEBDAV_USERNAME: ${{ secrets.WPI_ARTIFACTORY_USERNAME }}
184226
SCCACHE_WEBDAV_PASSWORD: ${{ secrets.WPI_ARTIFACTORY_TOKEN }}
185227

@@ -192,148 +234,140 @@ jobs:
192234
# Build roboRIO/raspbian wheels
193235
#
194236

195-
cross-build:
196-
runs-on: ubuntu-latest
197-
needs: [setup_concurrency]
198-
strategy:
199-
max-parallel: ${{ fromJSON(needs.setup_concurrency.outputs.max-parallel).v }}
200-
matrix:
201-
os:
202-
- container: wpilib/roborio-cross-ubuntu:2025-22.04-py313
203-
name: roborio
204-
205-
- container: wpilib/raspbian-cross-ubuntu:2025-bookworm-22.04-py311
206-
name: raspbian-py311
207-
- container: wpilib/raspbian-cross-ubuntu:2025-bookworm-22.04-py312
208-
name: raspbian-py312
209-
- container: wpilib/raspbian-cross-ubuntu:2025-bookworm-22.04-py313
210-
name: raspbian-py313
211-
212-
container:
213-
image: "${{ matrix.os.container }}"
214-
215-
steps:
216-
- uses: actions/checkout@v4
217-
with:
218-
fetch-depth: 0
219-
220-
- run: apt-get update
221-
- name: Setup ccache
222-
uses: hendrikmuhs/[email protected]
223-
with:
224-
key: ${{ matrix.os.container }}
225-
variant: ccache
226-
227-
- name: Install setuptools + wheel
228-
run: |
229-
/build/venv/bin/build-pip --disable-pip-version-check install -U "setuptools==63.4.3; python_version < '3.12'"
230-
/build/venv/bin/build-pip --disable-pip-version-check install -U wheel
231-
/build/venv/bin/cross-pip --disable-pip-version-check install -U "setuptools==63.4.3; python_version < '3.12'"
232-
/build/venv/bin/cross-pip --disable-pip-version-check install -U wheel
233-
234-
# See https://github.com/pypa/setuptools_scm/issues/784
235-
- name: Set git directory as safe to allow setuptools-scm to work
236-
shell: bash
237-
run: |
238-
pwd
239-
/usr/bin/git config --global --add safe.directory $(pwd)
240-
241-
# See https://github.com/pallets/markupsafe/issues/475
242-
- name: Install MarkupSafe
243-
shell: bash
244-
run: |
245-
/build/venv/bin/cross-pip install --no-build-isolation "markupsafe; python_version < '3.12'"
246-
247-
- name: Install deps
248-
shell: bash
249-
run: |
250-
/build/venv/bin/cross-pip --disable-pip-version-check install -r rdev_requirements.txt
251-
252-
- name: Build + test wheels
253-
shell: bash
254-
run: |
255-
/build/venv/bin/cross-python -m devtools ci run --no-test
256-
env:
257-
RPYBUILD_STRIP_LIBPYTHON: "1"
258-
RPYBUILD_CC_LAUNCHER: ccache
259-
260-
- uses: actions/upload-artifact@v4
261-
with:
262-
name: cross-${{ matrix.os.name }}
263-
path: dist
264-
265-
#
266-
# Publish wheels to wpilib artifactory, pypi
267-
#
268-
269-
publish-rpyrepo:
270-
runs-on: ubuntu-latest
271-
needs: [check, build, build-arm, cross-build]
272-
if: github.event_name == 'push' && startsWith(github.event.ref, 'refs/tags')
273-
274-
steps:
275-
- uses: actions/download-artifact@v4
276-
with:
277-
pattern: cross-*
278-
path: dist/
279-
merge-multiple: true
280-
281-
- uses: pypa/gh-action-pypi-publish@release/v1
282-
with:
283-
verify-metadata: false
284-
user: ${{ secrets.WPI_ARTIFACTORY_USERNAME }}
285-
password: ${{ secrets.WPI_ARTIFACTORY_TOKEN }}
286-
repository-url: https://wpilib.jfrog.io/artifactory/api/pypi/wpilib-python-release-2025-local
287-
288-
289-
publish-pypi:
290-
runs-on: ubuntu-latest
291-
needs: [check, build, build-arm, cross-build]
292-
permissions:
293-
id-token: write
294-
if: github.event_name == 'push' && startsWith(github.event.ref, 'refs/tags')
295-
296-
steps:
297-
- uses: actions/checkout@v4
298-
with:
299-
fetch-depth: 0
300-
301-
- uses: actions/download-artifact@v4
302-
with:
303-
pattern: pypi-*
304-
path: dist/
305-
merge-multiple: true
306-
307-
- name: Publish to PyPI
308-
uses: pypa/gh-action-pypi-publish@release/v1
309-
with:
310-
verify-metadata: false
311-
312-
ping-rtd:
313-
runs-on: ubuntu-latest
314-
needs: [check, build, cross-build]
315-
if: |
316-
github.event_name == 'push' &&
317-
(startsWith(github.event.ref, 'refs/tags') || github.event.ref == 'refs/heads/main')
318-
steps:
319-
- name: Sleep 1 minute to allow artifact upload
320-
shell: bash
321-
run: sleep 60
322-
- name: Ping readthedocs
323-
uses: robotpy/build-actions/ping-rtd@v2024
324-
with:
325-
token: ${{ secrets.RTD_TOKEN }}
326-
webhook: ${{ secrets.RTD_WEBHOOK }}
327-
328-
ping-meta:
329-
runs-on: ubuntu-latest
330-
needs: [publish-rpyrepo, publish-pypi]
331-
if: github.event_name == 'push' && startsWith(github.event.ref, 'refs/tags')
332-
333-
steps:
334-
- uses: peter-evans/repository-dispatch@v3
335-
with:
336-
token: ${{ secrets.META_REPO_ACCESS_TOKEN }}
337-
repository: robotpy/robotpy-meta
338-
event-type: tag
339-
client-payload: '{"package_name": "mostrobotpy", "package_version": "${{ github.ref_name }}"}'
237+
# cross-build:
238+
# runs-on: ubuntu-latest
239+
# needs: [setup_concurrency]
240+
# strategy:
241+
# max-parallel: ${{ fromJSON(needs.setup_concurrency.outputs.max-parallel).v }}
242+
# matrix:
243+
# os:
244+
# - container: wpilib/roborio-cross-ubuntu:2025-22.04-py313
245+
# name: roborio
246+
247+
# - container: wpilib/raspbian-cross-ubuntu:2025-bookworm-22.04-py311
248+
# name: raspbian-py311
249+
# - container: wpilib/raspbian-cross-ubuntu:2025-bookworm-22.04-py312
250+
# name: raspbian-py312
251+
# - container: wpilib/raspbian-cross-ubuntu:2025-bookworm-22.04-py313
252+
# name: raspbian-py313
253+
254+
# container:
255+
# image: "${{ matrix.os.container }}"
256+
257+
# steps:
258+
# - uses: actions/checkout@v4
259+
# with:
260+
# fetch-depth: 0
261+
262+
# - run: apt-get update
263+
# - name: Setup ccache
264+
# uses: hendrikmuhs/[email protected]
265+
# with:
266+
# key: ${{ matrix.os.container }}
267+
# variant: ccache
268+
269+
# # See https://github.com/pypa/setuptools_scm/issues/784
270+
# - name: Set git directory as safe to allow setuptools-scm to work
271+
# shell: bash
272+
# run: |
273+
# pwd
274+
# /usr/bin/git config --global --add safe.directory $(pwd)
275+
276+
# # See https://github.com/pallets/markupsafe/issues/475
277+
# - name: Install MarkupSafe
278+
# shell: bash
279+
# run: |
280+
# /build/venv/bin/cross-pip install --no-build-isolation "markupsafe; python_version < '3.12'"
281+
282+
# - name: Install deps
283+
# shell: bash
284+
# run: |
285+
# /build/venv/bin/cross-pip --disable-pip-version-check install -r rdev_requirements.txt
286+
287+
# - name: Build wheels
288+
# shell: bash
289+
# run: |
290+
# /build/venv/bin/cross-python -m devtools ci build-other-wheels --no-test
291+
# /build/venv/bin/cross-python -m devtools ci build-meson-wheels --no-test
292+
293+
294+
# - uses: actions/upload-artifact@v4
295+
# with:
296+
# name: cross-${{ matrix.os.name }}
297+
# path: dist
298+
299+
# #
300+
# # Publish wheels to wpilib artifactory, pypi
301+
# #
302+
303+
# publish-rpyrepo:
304+
# runs-on: ubuntu-latest
305+
# needs: [check, build, build-arm, cross-build]
306+
# if: github.event_name == 'push' && startsWith(github.event.ref, 'refs/tags')
307+
308+
# steps:
309+
# - uses: actions/download-artifact@v4
310+
# with:
311+
# pattern: cross-*
312+
# path: dist/
313+
# merge-multiple: true
314+
315+
# - uses: pypa/gh-action-pypi-publish@release/v1
316+
# with:
317+
# verify-metadata: false
318+
# user: ${{ secrets.WPI_ARTIFACTORY_USERNAME }}
319+
# password: ${{ secrets.WPI_ARTIFACTORY_TOKEN }}
320+
# repository-url: https://wpilib.jfrog.io/artifactory/api/pypi/wpilib-python-release-2025-local
321+
322+
323+
# publish-pypi:
324+
# runs-on: ubuntu-latest
325+
# needs: [check, build-meson, build-arm, cross-build]
326+
# permissions:
327+
# id-token: write
328+
# if: github.event_name == 'push' && startsWith(github.event.ref, 'refs/tags')
329+
330+
# steps:
331+
# - uses: actions/checkout@v4
332+
# with:
333+
# fetch-depth: 0
334+
335+
# - uses: actions/download-artifact@v4
336+
# with:
337+
# pattern: pypi-*
338+
# path: dist/
339+
# merge-multiple: true
340+
341+
# - name: Publish to PyPI
342+
# uses: pypa/gh-action-pypi-publish@release/v1
343+
# with:
344+
# verify-metadata: false
345+
346+
# ping-rtd:
347+
# runs-on: ubuntu-latest
348+
# needs: [check, build-meson, cross-build]
349+
# if: |
350+
# github.event_name == 'push' &&
351+
# (startsWith(github.event.ref, 'refs/tags') || github.event.ref == 'refs/heads/main')
352+
# steps:
353+
# - name: Sleep 1 minute to allow artifact upload
354+
# shell: bash
355+
# run: sleep 60
356+
# - name: Ping readthedocs
357+
# uses: robotpy/build-actions/ping-rtd@v2024
358+
# with:
359+
# token: ${{ secrets.RTD_TOKEN }}
360+
# webhook: ${{ secrets.RTD_WEBHOOK }}
361+
362+
# ping-meta:
363+
# runs-on: ubuntu-latest
364+
# needs: [publish-rpyrepo, publish-pypi]
365+
# if: github.event_name == 'push' && startsWith(github.event.ref, 'refs/tags')
366+
367+
# steps:
368+
# - uses: peter-evans/repository-dispatch@v3
369+
# with:
370+
# token: ${{ secrets.META_REPO_ACCESS_TOKEN }}
371+
# repository: robotpy/robotpy-meta
372+
# event-type: tag
373+
# client-payload: '{"package_name": "mostrobotpy", "package_version": "${{ github.ref_name }}"}'

0 commit comments

Comments
 (0)