CI #1792
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
name: CI | |
# see https://github.community/t5/GitHub-Actions/How-to-trigger-an-action-on-push-or-pull-request-but-not-both/m-p/35805 | |
on: | |
push: | |
branches: | |
- master | |
pull_request: | |
branches: | |
- master | |
schedule: | |
# Run workflow every morning (* needs quotes). | |
- cron: '0 4 * * *' | |
jobs: | |
run-tests: | |
runs-on: ${{ matrix.os }} | |
strategy: | |
matrix: | |
os: [macos-13, ubuntu-22.04, ubuntu-24.04] | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Show environment | |
run: | | |
python --version | |
python3 --version | |
python3 -c "import multiprocessing as m; print('CPUs:', m.cpu_count())" | |
- name: Install dependencies (Ubuntu) | |
if: startsWith(matrix.os, 'ubuntu') | |
run: | | |
sudo apt-get update | |
sudo apt-get -y install -qq gettext gir1.2-gdkpixbuf-2.0 gir1.2-glib-2.0 gir1.2-gtk-3.0 gir1.2-gtksource-4 gir1.2-pango-1.0 gir1.2-webkit2-4.1 python3 python3-enchant python3-gi python3-setuptools python3-yaml tox | |
- name: Install dependencies (macOS) | |
if: startsWith(matrix.os, 'macos') | |
run: | | |
# We need pygobject from PyPI. Using only pygobject3 from homebrew leads to "gi module not found". | |
# Homebrew complains about [email protected] files that are overwritten, so we remove them. | |
# Some can be removed by unlinking [email protected], others need to be removed manually. | |
brew unlink [email protected] | |
brew link --overwrite [email protected] | |
sudo rm -r /usr/local/bin/2to3 /usr/local/bin/idle3 /usr/local/bin/pydoc3 /usr/local/bin/python3 /usr/local/bin/python3-config /usr/local/share/man/man1/python3.1 /usr/local/lib/pkgconfig/python3-embed.pc /usr/local/lib/pkgconfig/python3.pc /usr/local/Frameworks/Python.framework/Headers /usr/local/Frameworks/Python.framework/Python /usr/local/Frameworks/Python.framework/Resources /usr/local/Frameworks/Python.framework/Versions/Current | |
brew install gettext gobject-introspection gtk+3 libffi cairo gtksourceview3 librsvg adwaita-icon-theme enchant | |
# Removing the Python files above makes pip complain about "managed environments", so we need to "break system packages". | |
python3 -m pip install --break-system-packages pyenchant pygobject pyyaml | |
python3 -m pip install --break-system-packages setuptools tox | |
env: | |
# https://docs.brew.sh/Manpage#install-options-formulacask- | |
HOMEBREW_NO_INSTALLED_DEPENDENTS_CHECK: on | |
HOMEBREW_NO_INSTALL_CLEANUP: on | |
HOMEBREW_NO_INSTALL_UPGRADE: on | |
- name: Check style | |
if: matrix.os == 'ubuntu-24.04' | |
run: | | |
tox -v -e style | |
- name: Run tests | |
if: matrix.os == 'ubuntu-24.04' # pip on macOS needs --break-system-packages | |
run: | | |
python3 -c "import gi" | |
tox -v -e py | |
python3 -m venv .venv | |
./.venv/bin/pip install . |