Skip to content

Commit 57f0a76

Browse files
committed
MAINT: fix the readme
1 parent f42e335 commit 57f0a76

File tree

1 file changed

+70
-3
lines changed

1 file changed

+70
-3
lines changed

README.md

Lines changed: 70 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,71 @@
1-
The openblas and test requirements are sourced from the cloned scipy repository folder.
2-
This is typically $GITHUB_WORKSPACE/scipy-src/requirements/{openblas,test}.txt.
1+
# SciPy wheels and release tooling
32

4-
This makes it easier to keep in sync with the main repository.
3+
This repository contains what is needed to build release artifacts (wheels and
4+
sdist) for the official [SciPy releases to
5+
PyPI](https://pypi.org/project/scipy/) as well as nightly wheel builds which
6+
are uploaded to
7+
[anaconda.org/scientific-python-nightly-wheels/scipy](https://anaconda.org/scientific-python-nightly-wheels/scipy).
8+
9+
This repository is minimal on purpose, for security reasons it contains only what is absolutely necessary. The repository settings are stricter than on the main [scipy/scipy](https://github.com/scipy/scipy/) repository, for example:
10+
11+
- only the release & CI team has write access
12+
- for PRs from anyone without write access, CI will always need manual approval
13+
- linear history is required
14+
- GitHub actions are whitelisted, only the necessary ones will be allowed
15+
- no caching allowed, only clean builds from scratch
16+
- no self-hosted runners are allowed
17+
18+
See [numpy#29178](https://github.com/numpy/numpy/issues/29178) for more context.
19+
20+
21+
## Branches and tags
22+
23+
The `main` branch of this repository is meant to stay in sync with the `main` branch
24+
of the [scipy/scipy](https://github.com/scipy/scipy) repository. It runs scheduled builds
25+
as cron jobs twice a week, and uploads nightlies to
26+
[https://anaconda.org/scientific-python-nightly-wheels/scipy](anaconda.org/scientific-python-nightly-wheels/scipy).
27+
28+
For SciPy releases, the branch naming should match those of the main
29+
`scipy/scipy` repository, e.g., `maintenance/2.3.x` for the 2.3.x releases.
30+
31+
Which branch, commit or tag is built when a set of wheel builds is triggered is
32+
controlled by the `SOURCE_REF_TO_BUILD` variable at the top of
33+
`.github/workflows/wheels.yml`.
34+
35+
36+
## Build reproducibility
37+
38+
Wheel builds being fully reproducible is a long-term goal for this repository.
39+
All dependencies and actions must be pinned, which allows us to already be
40+
close to full reproducibility. However, we don't (yet) have full control over
41+
all ingredients that go into a wheel build, e.g. the containers which GitHub
42+
Actions provide may change over time.
43+
44+
45+
## Trusted publishing and attestations
46+
47+
The release builds in this repository should be using trusted publishing to
48+
publish directly to PyPI (and TestPyPI), including attestations. Triggering
49+
a release build has to be done by the `workflow_dispatch` in the
50+
[Actions UI in this repository](https://github.com/scipy/scipy-release/actions/workflows/wheels.yml),
51+
selecting `pypi` or `testpypi` as the target. This will use a GitHub Actions
52+
"environment" of the same name - before the uploads to PyPI actually happen,
53+
the release manager can go in and inspect the build logs and produced wheels.
54+
Once those look good, the release manager can finalize the release from the
55+
[deployments page in this repository](https://github.com/scipy/scipy-release/deployments).
56+
57+
58+
## Software Bill of Materials
59+
60+
We aim to start producing SBOMs and ship them inside SciPy wheels uploaded to
61+
PyPI, however as of today that is not implemented.
62+
63+
64+
## Security
65+
66+
To report a security vulnerability for SciPy itself, please see
67+
[the security policy on the main repo](https://github.com/numpy/numpy/?tab=security-ov-file#readme).
68+
69+
To discuss a supply chain security related topic for the code in this
70+
repository, please open an issue on this repository if it can be discussed in
71+
public, and otherwise please follow the security policy on the main repo.

0 commit comments

Comments
 (0)