-
Notifications
You must be signed in to change notification settings - Fork 3
137 lines (129 loc) · 5.2 KB
/
ci-sage.yml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
name: Sage CI
## This GitHub Actions workflow provides:
##
## - portability testing, by building and testing this project on many platforms
##
## - continuous integration, by building and testing other software
## that depends on this project.
##
## 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
##
## Deployment of ci-sage.yml in upstream projects
## is tracked in https://github.com/sagemath/sage/issues/33338
## 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:
pull_request:
types: [opened, synchronize]
paths:
- 'pyproject.toml'
- 'py/**'
- '.github/workflows/ci-sage.yml'
push:
paths:
- 'pyproject.toml'
- 'py/**'
- '.github/workflows/ci-sage.yml'
workflow_dispatch:
# Allow to run manually
concurrency:
# Cancel previous runs of this workflow for the same branch
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
env:
# Ubuntu packages to install so that the project can build an sdist
DIST_PREREQ: python3-pip
# Name of this project in the Sage distribution
SPKG: gnumake_tokenpool
# Remove any patches of gnumake_tokenpool that Sage may be carrying
REMOVE_PATCHES: "*"
jobs:
dist:
runs-on: ubuntu-latest
steps:
- name: Check out ${{ env.SPKG }}
uses: actions/checkout@v4
with:
path: build/pkgs/${{ env.SPKG }}/src
- name: Install prerequisites
run: |
sudo DEBIAN_FRONTEND=noninteractive apt-get update
sudo DEBIAN_FRONTEND=noninteractive apt-get install $DIST_PREREQ
python3 -m pip install --user build
- name: Make sdist, prepare upstream artifact
run: |
(cd build/pkgs/${{ env.SPKG }}/src && python3 -m build --sdist .) \
&& mkdir -p upstream && cp build/pkgs/${{ env.SPKG }}/src/dist/*.tar.gz upstream/${{ env.SPKG }}-git.tar.gz \
&& echo "sage-package create ${{ env.SPKG }} --pypi --source normal && sage-package create ${{ env.SPKG }} --version git --tarball ${{ env.SPKG }}-git.tar.gz --type=standard" > upstream/update-pkgs.sh \
&& if [ -n "${{ env.REMOVE_PATCHES }}" ]; then echo "(cd ../build/pkgs/${{ env.SPKG }}/patches && rm -f ${{ env.REMOVE_PATCHES }}; :)" >> upstream/update-pkgs.sh; fi \
&& ls -l upstream/
- uses: actions/upload-artifact@v4
with:
path: upstream
name: upstream
docker-sage-incremental:
uses: sagemath/sage/.github/workflows/docker.yml@develop
with:
#
# Use a selection of the platforms for which Sage tests and provides Docker images,
# see https://github.com/sagemath/sage/blob/develop/.github/workflows/docker.yml,
# selected to give a range of versions of GNU Make,
# according to https://repology.org/project/make/versions
#
tox_system_factors: >-
[
"centos-7-devtoolset-gcc_11",
"ubuntu-bionic-gcc_8",
"debian-trixie",
"fedora-38",
"archlinux-latest",
]
tox_packages_factors: >-
[
"standard",
]
#
# Work incrementally from published Docker image
#
incremental: true
free_disk_space: true
from_docker_repository: ghcr.io/sagemath/sage/
from_docker_target: "with-targets"
from_docker_tag: "dev"
#
# gnumake-tokenpool is used in Sage when the doctester is run
# under control of the build system ('make ptest')
#
docker_targets: "with-targets"
targets: "V=1 gnumake_tokenpool-no-deps pytest-uninstall DEBUG_JOBCLIENT=1 TEST_FILES='src/sage/geometry src/sage/rings src/sage/schemes' ptest-nodoc"
sage_repo: sagemath/sage
sage_ref: develop
upstream_artifact: upstream
#
# Uncomment below to have the workflow push Docker images with the updated
# gnumake-tokenpool to GitHub Packages (ghcr.io).
#
# We prefix the image name with the SPKG name ("gnumake-tokenpool-") to avoid the error
# 'Package "sage-docker-..." is already associated with another repository.' in forks.
#
#docker_push_repository: ghcr.io/${{ github.repository }}/gnumake-tokenpool-
needs: [dist]