Update to Macos-13 runner #396
Workflow file for this run
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# this file includes 4 stages | |
# 1. pre-commit - runs pre-commit using `.pre-commit-config.yaml` | |
# 2. build-scratch - (if pre-commit pass) then we build the project from scratch (single python versions) and pytest | |
# 3. build-wheels - (if pre-commit pass) then we build all the wheels for all valid versions | |
# 4. test-wheels - (if build-scratch and build-wheel passes) then we install wheel and run pytest for all python versions | |
name: CI | |
on: | |
workflow_dispatch: | |
inputs: | |
debug_enabled: | |
type: boolean | |
description: 'Run the build with tmate debugging enabled (https://github.com/marketplace/actions/debugging-with-tmate)' | |
required: false | |
default: false | |
push: | |
paths-ignore: | |
- "docs/**" | |
pull_request: | |
branches: | |
- "*" | |
jobs: | |
pre-commit: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: actions/setup-python@v5 | |
with: | |
python-version: '3.12' | |
- uses: pre-commit/action@v3.0.1 | |
build-scratch: | |
name: "${{ matrix.runs-on }} • py${{ matrix.python }}" | |
needs: pre-commit | |
defaults: | |
run: | |
shell: bash | |
strategy: | |
fail-fast: false | |
matrix: | |
include: | |
# To minimise the computational resources, we only use a single python version and the final test-wheels for all python versions | |
- runs-on: ubuntu-latest | |
python: '3.12' | |
triplet: x64-linux-mixed | |
- runs-on: macos-13 | |
python: '3.12' | |
triplet: x64-osx-mixed | |
- runs-on: windows-latest | |
python: '3.12' | |
triplet: x64-windows | |
env: | |
VCPKG_DEFAULT_TRIPLET: ${{ matrix.triplet }} | |
runs-on: ${{ matrix.runs-on }} | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: actions/setup-python@v5 | |
with: | |
python-version: ${{ matrix.python }} | |
- name: Install test dependencies | |
# TODO(jfarebro): There's a bug with Windows cmake and PEP517 builds via pip install. | |
# As a temporary workaround installing cmake outside of the isolated env seems to work. | |
run: python -m pip install --user cmake | |
if: runner.os == 'Windows' | |
- run: brew install llvm | |
if: runner.os == 'macOS' | |
- name: Download and unpack ROMs | |
run: ./scripts/download_unpack_roms.sh | |
- name: Build | |
run: python -m pip install --verbose .[test] | |
- name: Test | |
run: python -m pytest | |
build-wheels: | |
name: "${{ matrix.runs-on }} • ${{ matrix.arch }}" | |
needs: pre-commit | |
defaults: | |
run: | |
shell: bash | |
strategy: | |
fail-fast: false | |
matrix: | |
include: | |
- runs-on: ubuntu-latest | |
arch: x86_64 | |
- runs-on: windows-latest | |
arch: AMD64 | |
- runs-on: macos-13 | |
arch: x86_64 | |
- runs-on: macos-13 | |
arch: arm64 | |
runs-on: ${{ matrix.runs-on }} | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Set up Docker Buildx | |
if: runner.os == 'linux' | |
id: buildx | |
uses: docker/setup-buildx-action@v3 | |
with: | |
install: true | |
- name: Build Docker image with vcpkg | |
if: runner.os == 'linux' | |
# using build-push-action (without push) to make use of cache arguments | |
uses: docker/build-push-action@v6 | |
with: | |
context: . | |
file: .github/docker/manylinux-vcpkg.Dockerfile | |
tags: manylinux-vcpkg:latest | |
push: false | |
load: true | |
- run: brew install llvm | |
if: runner.os == 'macOS' | |
- name: Download and unpack ROMs | |
run: ./scripts/download_unpack_roms.sh | |
- name: Build wheels | |
uses: pypa/cibuildwheel@v2.21.3 | |
env: | |
CIBW_ARCHS: "${{ matrix.arch }}" | |
- name: Upload wheels | |
uses: actions/upload-artifact@v4 | |
with: | |
name: wheels-${{ runner.os }}-${{ matrix.arch }} | |
path: ./wheelhouse/*.whl | |
test-wheels: | |
name: Test wheels | |
needs: [build-wheels, build-scratch] | |
strategy: | |
fail-fast: false | |
matrix: | |
include: | |
# example wheel names (if the wheel names change, look at the `ls wheels/` for the new names) | |
# ale_py-0.x.x-cp310-cp310-macosx_10_15_x86_64.whl | |
# ale_py-0.x.x-cp310-cp310-macosx_11_0_arm64.whl | |
# ale_py-0.x.x-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl | |
# ale_py-0.x.x-cp310-cp310-win_amd64.whl | |
- runs-on: ubuntu-latest | |
python: '3.9' | |
wheel-name: 'cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64' | |
arch: 'x86_64' | |
- runs-on: ubuntu-latest | |
python: '3.10' | |
wheel-name: 'cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64' | |
arch: 'x86_64' | |
- runs-on: ubuntu-latest | |
python: '3.11' | |
wheel-name: 'cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64' | |
arch: 'x86_64' | |
- runs-on: ubuntu-latest | |
python: '3.12' | |
wheel-name: 'cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64' | |
arch: 'x86_64' | |
- runs-on: ubuntu-latest | |
python: '3.13' | |
wheel-name: 'cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64' | |
arch: 'x86_64' | |
- runs-on: windows-latest | |
python: '3.9' | |
wheel-name: 'cp39-cp39-win_amd64' | |
arch: AMD64 | |
- runs-on: windows-latest | |
python: '3.10' | |
wheel-name: 'cp310-cp310-win_amd64' | |
arch: AMD64 | |
- runs-on: windows-latest | |
python: '3.11' | |
wheel-name: 'cp311-cp311-win_amd64' | |
arch: AMD64 | |
- runs-on: windows-latest | |
python: '3.12' | |
wheel-name: 'cp312-cp312-win_amd64' | |
arch: AMD64 | |
- runs-on: windows-latest | |
python: '3.13' | |
wheel-name: 'cp313-cp313-win_amd64' | |
arch: AMD64 | |
- runs-on: macos-13 | |
python: '3.9' | |
wheel-name: 'cp39-cp39-macosx_10_15_x86_64' | |
arch: x86_64 | |
- runs-on: macos-13 | |
python: '3.10' | |
wheel-name: 'cp310-cp310-macosx_10_15_x86_64' | |
arch: x86_64 | |
- runs-on: macos-13 | |
python: '3.11' | |
wheel-name: 'cp311-cp311-macosx_10_15_x86_64' | |
arch: x86_64 | |
- runs-on: macos-13 | |
python: '3.12' | |
wheel-name: 'cp312-cp312-macosx_10_15_x86_64' | |
arch: x86_64 | |
- runs-on: macos-13 | |
python: '3.13' | |
wheel-name: 'cp313-cp313-macosx_10_15_x86_64' | |
arch: x86_64 | |
- runs-on: macos-14-arm64 | |
python: '3.9' | |
wheel-name: 'cp39-cp39-macosx_11_0_arm64' | |
arch: arm64 | |
- runs-on: macos-14-arm64 | |
python: '3.10' | |
wheel-name: 'cp310-cp310-macosx_11_0_arm64' | |
arch: arm64 | |
- runs-on: macos-14-arm64 | |
python: '3.11' | |
wheel-name: 'cp311-cp311-macosx_11_0_arm64' | |
arch: arm64 | |
- runs-on: macos-14-arm64 | |
python: '3.12' | |
wheel-name: 'cp312-cp312-macosx_11_0_arm64' | |
arch: arm64 | |
- runs-on: macos-14-arm64 | |
python: '3.13' | |
wheel-name: 'cp313-cp313-macosx_11_0_arm64' | |
arch: arm64 | |
runs-on: ${{ matrix.runs-on }} | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: actions/setup-python@v5 | |
with: | |
python-version: ${{ matrix.python }} | |
- uses: actions/download-artifact@v4 | |
with: | |
name: wheels-${{ runner.os }}-${{ matrix.arch }} | |
- run: ls | |
- name: Install ALE wheel | |
# wildcarding doesn't work for some reason, therefore, update the project version here | |
run: python -m pip install ale_py-0.10.1-${{ matrix.wheel-name }}.whl | |
- name: Install Gymnasium and pytest | |
run: python -m pip install gymnasium>=1.0.0 pytest | |
- name: Test | |
run: python -m pytest |