CI Linux #143
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 Linux | |
# This GitHub Actions workflow runs SAGE_ROOT/tox.ini with select environments, | |
# whenever a GitHub pull request is opened or synchronized in a repository | |
# where GitHub Actions are enabled. | |
# | |
# It builds and checks some sage spkgs as defined in TARGETS. | |
# | |
# A job succeeds if there is no error. | |
# | |
# The build is run with "make V=0", so the build logs of individual packages are suppressed. | |
# | |
# At the end, all package build logs that contain an error are printed out. | |
# | |
# After all jobs have finished (or are canceled) and a short delay, | |
# tar files of all logs are made available as "build artifacts". | |
on: | |
push: | |
tags: | |
- '*' | |
workflow_dispatch: # allow to run manually | |
# A job may specify inputs to docker.yml such as | |
# | |
# targets_pre | |
# targets | |
# targets_optional | |
# tox_system_factors | |
# tox_packages_factors | |
# ... | |
# | |
# consult docker.yml for descriptions and defaults for all possible inputs. | |
# | |
# For the meaning of docker_targets, see also tox.ini | |
permissions: | |
packages: write | |
jobs: | |
# This duplicates the "standard" job (see below) for the default platform. | |
# The reason is to provide the default docker image as fast as possible | |
# for other workflows like build.yml. | |
default: | |
uses: ./.github/workflows/docker.yml | |
with: | |
tox_system_factors: >- | |
["ubuntu-jammy"] | |
tox_packages_factors: >- | |
["standard"] | |
free_disk_space: true | |
incremental: false | |
docker_targets: "with-system-packages configured with-targets-pre with-targets" | |
targets_pre: all-sage-local | |
targets: build doc-html | |
docker_push_repository: ghcr.io/${{ github.repository }}/ | |
logs_artifact_postfix: "-default" | |
# The following jobs run for all supported platforms. See the default list | |
# for tox_system_factors in docker.yml. | |
standard: | |
if: always() | |
uses: ./.github/workflows/docker.yml | |
with: | |
tox_packages_factors: >- | |
["standard"] | |
free_disk_space: true | |
incremental: false | |
docker_targets: "with-system-packages configured with-targets-pre with-targets with-targets-optional" | |
targets_pre: all-sage-local | |
targets: build doc-html | |
targets_optional: ptest | |
docker_push_repository: ghcr.io/${{ github.repository }}/ | |
# Make sure that all "standard" jobs can start simultaneously, | |
# so that runners are available by the time that "default" starts. | |
max_parallel: 50 | |
standard-sitepackages: | |
# Turned off until fixed | |
if: false | |
needs: [standard] | |
uses: ./.github/workflows/docker.yml | |
with: | |
# Only test systems with a usable system python (>= 3.9) | |
tox_system_factors: >- | |
["ubuntu-jammy", | |
"ubuntu-lunar", | |
"ubuntu-mantic", | |
"debian-bookworm", | |
"debian-trixie", | |
"debian-sid", | |
"linuxmint-21.1", | |
"linuxmint-21.2", | |
"fedora-40", | |
"centos-stream-9-python3.9", | |
"almalinux-8-python3.9", | |
"gentoo-python3.10", | |
"gentoo-python3.11", | |
"archlinux-latest", | |
"opensuse-15.5-gcc_11-python3.11", | |
"opensuse-tumbleweed-python3.10", | |
"opensuse-tumbleweed"] | |
tox_packages_factors: >- | |
["standard-sitepackages"] | |
free_disk_space: true | |
incremental: true | |
from_docker_repository: ghcr.io/${{ github.repository }}/ | |
from_docker_target: "with-targets-pre" | |
docker_targets: "with-targets with-targets-optional" | |
targets_optional: ptest | |
docker_push_repository: ghcr.io/${{ github.repository }}/ | |
logs_artifact_postfix: "-sitepackages" | |
max_parallel: 8 | |
standard-constraints_pkgs: | |
# Turned off until fixed | |
needs: [standard-sitepackages] | |
uses: ./.github/workflows/docker.yml | |
with: | |
tox_packages_factors: >- | |
["standard"] | |
free_disk_space: true | |
incremental: true | |
from_docker_repository: ghcr.io/${{ github.repository }}/ | |
from_docker_target: "with-targets-pre" | |
docker_targets: "with-targets-pre" | |
targets_pre: all-sage-local python3-ensure tox-ensure sagelib-tox-sagepython-constraints_pkgs-norequirements | |
logs_artifact_postfix: "-constraints_pkgs" | |
max_parallel: 15 | |
minimal: | |
if: always() | |
uses: ./.github/workflows/docker.yml | |
with: | |
tox_packages_factors: >- | |
["minimal"] | |
free_disk_space: true | |
incremental: false | |
docker_targets: "with-system-packages configured with-targets-pre with-targets with-targets-optional" | |
targets_pre: all-sage-local | |
targets: build doc-html | |
targets_optional: ptest | |
docker_push_repository: ghcr.io/${{ github.repository }}/ | |
# Calibrated for clogging the job pipeline until the "default" job has finished. | |
max_parallel: 24 | |
maximal: | |
if: always() | |
needs: [minimal] | |
uses: ./.github/workflows/docker.yml | |
with: | |
tox_packages_factors: >- | |
["maximal"] | |
free_disk_space: true | |
incremental: false | |
docker_targets: "with-system-packages configured with-targets-pre with-targets with-targets-optional" | |
targets_pre: all-sage-local | |
targets: build doc-html | |
targets_optional: ptest | |
docker_push_repository: ghcr.io/${{ github.repository }}/ | |
optional: | |
if: always() | |
needs: [standard] | |
uses: ./.github/workflows/docker.yml | |
with: | |
tox_packages_factors: >- | |
["standard"] | |
incremental: true | |
free_disk_space: true | |
from_docker_repository: ghcr.io/${{ github.repository }}/ | |
from_docker_target: "with-targets" | |
docker_targets: "with-targets-optional" | |
# We remove packages starting with _, in particular package _develop | |
targets_optional: '$(echo $(export PATH=build/bin:$PATH && sage-package list :optional: --has-file "spkg-install.in|spkg-install|requirements.txt" --no-file "huge|has_nonfree_dependencies" | grep -v sagemath_doc | grep -v ^_))' | |
logs_artifact_postfix: "-optional" | |
experimental: | |
if: always() | |
needs: [optional] | |
uses: ./.github/workflows/docker.yml | |
with: | |
tox_packages_factors: >- | |
["standard"] | |
incremental: true | |
free_disk_space: true | |
from_docker_repository: ghcr.io/${{ github.repository }}/ | |
from_docker_target: "with-targets" | |
docker_targets: "with-targets-optional" | |
targets_optional: '$(echo $(export PATH=build/bin:$PATH && sage-package list :experimental: --has-file "spkg-install.in|spkg-install|requirements.txt" --no-file "huge|has_nonfree_dependencies" | grep -v sagemath_doc))' | |
logs_artifact_postfix: "-experimental" |