Skip to content

A few improvements in CI #223

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 5 commits into from
Jan 21, 2025
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
73 changes: 3 additions & 70 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
@@ -1,40 +1,4 @@
name: CI

## This GitHub Actions workflow provides:
##
## - portability testing, by building and testing this project on many platforms
## (Linux variants and Cygwin), each with two configurations (installed packages),
##
## - continuous integration, by building and testing other software
## that depends on this project.
##
## It runs on every pull request and push of a tag to the GitHub repository.
##
## The testing can be monitored in the "Actions" tab of the GitHub repository.
##
## After all jobs have finished (or are canceled) and a short delay,
## tar files of all logs are made available as "build artifacts".
##
## This GitHub Actions workflow uses the portability testing framework
## of SageMath (https://www.sagemath.org/). For more information, see
## https://doc.sagemath.org/html/en/developer/portability_testing.html

## The workflow consists of two jobs:
##
## - First, it builds a source distribution of the project
## and generates a script "update-pkgs.sh". It uploads them
## as a build artifact named upstream.
##
## - Second, it checks out a copy of the SageMath source tree.
## It downloads the upstream artifact and replaces the project's
## package in the SageMath distribution by the newly packaged one
## from the upstream artifact, by running the script "update-pkgs.sh".
## Then it builds a small portion of the Sage distribution.
##
## Many copies of the second step are run in parallel for each of the tested
## systems/configurations.

#on: [push, pull_request]
name: Build & Test

on:
pull_request:
Expand All @@ -51,45 +15,14 @@ concurrency:
cancel-in-progress: true

jobs:
cygwin:
runs-on: windows-latest
strategy:
fail-fast: false
matrix:
python-version-start: [python-3]
python-version: [9]
steps:
- run: |
git config --global core.autocrlf false
git config --global core.symlinks true
- name: Set up the repository
uses: actions/checkout@v4
with:
submodules: recursive
fetch-depth: 0
- name: Set up Cygwin
uses: egor-tensin/setup-cygwin@v4
with:
packages: gcc-core gcc-g++ python3${{ matrix.python-version }}-devel ninja pkgconf
- name: Install dependencies
shell: C:\tools\cygwin\bin\bash.exe --norc -eo pipefail -o igncr '{0}'
run: |
python3.${{ matrix.python-version }} -m pip install --upgrade pip
python3.${{ matrix.python-version }} -m pip install --upgrade -r ./requirements.txt
- name: Build and check
shell: C:\tools\cygwin\bin\bash.exe --norc -eo pipefail -o igncr '{0}'
run: |
pip install --no-build-isolation --config-settings=builddir=builddir .
meson test --print-errorlogs -C builddir

ci:
name: CI (${{ matrix.os }} with Python ${{ matrix.python-version }})
name: ${{ matrix.os }} with python ${{ matrix.python-version }}
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
os: ['macos-13', 'macos-latest', 'ubuntu-latest', 'windows-latest']
python-version: ['3.10', '3.11', '3.12', '3.13-dev']
python-version: ['3.10', '3.11', '3.12', '3.13']
steps:
- name: Set up the repository
uses: actions/checkout@v4
Expand Down
2 changes: 1 addition & 1 deletion meson.build
Original file line number Diff line number Diff line change
Expand Up @@ -104,7 +104,7 @@ subdir('src')

pytest = py_module.find_installation(modules: ['pytest'], required: false)
if pytest.found()
test('pytest', pytest, args: ['-m', 'pytest'], workdir: meson.current_source_dir(), timeout: 300)
test('pytest', pytest, args: ['-m', 'pytest'], workdir: meson.current_source_dir(), timeout: 300, verbose: true, is_parallel: false)
else
message('pytest not found, skipping tests')
endif
Expand Down
Loading