Skip to content

Update to Macos-13 runner #394

Update to Macos-13 runner

Update to Macos-13 runner #394

Workflow file for this run

# 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/[email protected]
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.9'
triplet: x64-linux-mixed
- runs-on: macos-13
python: '3.9'
triplet: x64-osx-mixed
- runs-on: windows-latest
python: '3.9'
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/[email protected]
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