Skip to content

Commit 1c19fa0

Browse files
authored
Replace CircleCI with GitHub ARM runners (#133)
* Use GitHub Linux ARM runners for build & test These were newly introduced by GitHub in Q1 2025. We've been using CircleCI to build Linux ARM wheels, so it is hoped we can get rid of that. * Remove CircleCI config * Update test setup-python GH action to v6 * Include runner arch in cache & artifact keys
1 parent 8c90386 commit 1c19fa0

File tree

3 files changed

+31
-60
lines changed

3 files changed

+31
-60
lines changed

.circleci/config.yml

Lines changed: 0 additions & 47 deletions
This file was deleted.

.github/workflows/build.yml

Lines changed: 19 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -21,20 +21,33 @@ jobs:
2121
runs-on: ${{ matrix.os }}
2222
strategy:
2323
matrix:
24-
os: [ubuntu-22.04, windows-2022, macos-13]
24+
os: [ubuntu-22.04, ubuntu-22.04-arm, windows-2022, macos-13]
2525
cibw-build-prefix: ['*']
2626
cibw-build-kind: [all] # for artifact name only
27+
# The only reason the Ubuntu ones are split up into CPython/PyPy is to
28+
# prevent running out of runner disk space; as of 2025, the number of
29+
# non-EOL PyPy releases has dropped enough that it probably wouldnn't
30+
# be an issue anymore, but keeping it anyway just in case
2731
include:
2832
- os: ubuntu-22.04
2933
cibw-build-prefix: cp*
3034
cibw-build-kind: cp
3135
- os: ubuntu-22.04
3236
cibw-build-prefix: pp*
3337
cibw-build-kind: pp
38+
- os: ubuntu-22.04-arm
39+
cibw-build-prefix: cp*
40+
cibw-build-kind: cp
41+
- os: ubuntu-22.04-arm
42+
cibw-build-prefix: pp*
43+
cibw-build-kind: pp
3444
exclude:
3545
- os: ubuntu-22.04
3646
cibw-build-prefix: '*'
3747
cibw-build-kind: all
48+
- os: ubuntu-22.04-arm
49+
cibw-build-prefix: '*'
50+
cibw-build-kind: all
3851
steps:
3952
- uses: actions/checkout@v4
4053
- name: Restore mtimes of files in repo
@@ -45,18 +58,18 @@ jobs:
4558
cache-name: cargo-home
4659
with:
4760
path: ~/cargo-home-dirs
48-
key: ${{ env.cache-name }}-${{ runner.os }}-${{ matrix.cibw-build-prefix }}-v11.0
61+
key: ${{ env.cache-name }}-${{ runner.os }}-${{ runner.arch }}-${{ matrix.cibw-build-prefix }}-v11.0
4962
restore-keys: |
50-
${{ env.cache-name }}-${{ runner.os }}-${{ matrix.cibw-build-prefix }}-v11.
63+
${{ env.cache-name }}-${{ runner.os }}-${{ runner.arch }}-${{ matrix.cibw-build-prefix }}-v11.
5164
- name: Rust build cache
5265
uses: actions/cache@v4
5366
env:
5467
cache-name: rust-build
5568
with:
5669
path: ~/cargo-target-dirs
57-
key: ${{ env.cache-name }}-${{ runner.os }}-v11.0-${{ matrix.cibw-build-prefix }}-${{ hashFiles('**/Cargo.toml') }}
70+
key: ${{ env.cache-name }}-${{ runner.os }}-${{ runner.arch }}-v11.0-${{ matrix.cibw-build-prefix }}-${{ hashFiles('**/Cargo.toml') }}
5871
restore-keys: |
59-
${{ env.cache-name }}-${{ runner.os }}-${{ matrix.cibw-build-prefix }}-v11.
72+
${{ env.cache-name }}-${{ runner.os }}-${{ runner.arch }}-${{ matrix.cibw-build-prefix }}-v11.
6073
- name: Save env vars for cibuildwheel
6174
run: >
6275
echo "MAIN_DIR=$PWD" >> "$GITHUB_ENV";
@@ -132,7 +145,7 @@ jobs:
132145
CIBW_BUILD_VERBOSITY: 1
133146
- uses: actions/upload-artifact@v4
134147
with:
135-
name: artifact-${{ runner.os }}-${{ matrix.cibw-build-kind }}
148+
name: artifact-${{ runner.os }}-${{ runner.arch }}-${{ matrix.cibw-build-kind }}
136149
path: ./wheelhouse/*.whl
137150

138151
build_sdist:

.github/workflows/test.yml

Lines changed: 12 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -18,11 +18,13 @@ jobs:
1818
strategy:
1919
matrix:
2020
python-version: ["3.8"]
21-
os: [ubuntu-22.04, windows-2022, macos-13]
21+
os: [ubuntu-22.04, ubuntu-22.04-arm, windows-2022, macos-13]
2222
include:
2323
# set OS-specific cache paths
2424
- os: ubuntu-22.04
2525
path: ~/.cache/pip
26+
- os: ubuntu-22.04-arm
27+
path: ~/.cache/pip
2628
- os: windows-2022
2729
path: ~\AppData\Local\pip\Cache
2830
- os: macos-13
@@ -31,10 +33,13 @@ jobs:
3133
- os: ubuntu-22.04
3234
python-version: "pypy3.9"
3335
path: ~/.cache/pip
36+
- os: ubuntu-22.04-arm
37+
python-version: "pypy3.9"
38+
path: ~/.cache/pip
3439
steps:
3540
- uses: actions/checkout@v4
3641
- name: Set up Python ${{ matrix.python-version }}
37-
uses: actions/setup-python@v4
42+
uses: actions/setup-python@v6
3843
with:
3944
python-version: ${{ matrix.python-version }}
4045
- name: Restore Rust/Cargo cache
@@ -46,14 +51,14 @@ jobs:
4651
~/.cargo/registry/cache/
4752
~/.cargo/git/db/
4853
target/
49-
key: ${{ runner.os }}-rust-v4-${{ hashFiles('**/Cargo.lock') }}
54+
key: ${{ runner.os }}-${{ runner.arch }}-rust-v4-${{ hashFiles('**/Cargo.lock') }}
5055
- name: Restore Python/pip cache
5156
uses: actions/cache/restore@v4
5257
with:
5358
path: ${{ matrix.path }}
54-
key: ${{ runner.os }}-python-v3-${{ hashFiles('**/requirements.txt') }}
59+
key: ${{ runner.os }}-${{ runner.arch }}-python-v3-${{ hashFiles('**/requirements.txt') }}
5560
restore-keys: |
56-
${{ runner.os }}-python-v3-
61+
${{ runner.os }}-${{ runner.arch }}-python-v3-
5762
- name: Install dependencies
5863
run: |
5964
python -m pip install --upgrade pip
@@ -77,10 +82,10 @@ jobs:
7782
~/.cargo/registry/cache/
7883
~/.cargo/git/db/
7984
target/
80-
key: ${{ runner.os }}-rust-v4-${{ hashFiles('**/Cargo.lock') }}
85+
key: ${{ runner.os }}-${{ runner.arch }}-rust-v4-${{ hashFiles('**/Cargo.lock') }}
8186
- name: Save Python/pip cache
8287
uses: actions/cache/save@v4
8388
if: always()
8489
with:
8590
path: ${{ matrix.path }}
86-
key: ${{ runner.os }}-python-v3-${{ hashFiles('**/requirements.txt') }}
91+
key: ${{ runner.os }}-${{ runner.arch }}-python-v3-${{ hashFiles('**/requirements.txt') }}

0 commit comments

Comments
 (0)