Skip to content

CI Linux

CI Linux #143

Workflow file for this run

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"