You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: for_developers/continuous_integration-testing/githubactions.md
+19-2Lines changed: 19 additions & 2 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -14,7 +14,21 @@ The ROOT project uses a GitHub Actions for continuous integration and delivery.
14
14
15
15
For building the Docker images we use GitHub's runners.
16
16
For everything else, [runners are hosted at CERN](https://github.com/root-project/root/settings/actions/runners).
17
+
Linux runners are Docker images; macOS and Windows are native (mac minis / OpenStack VMs).
17
18
19
+
## Nightly builds, on-merge builds, PR builds, building releases
20
+
21
+
All builds share the same infrastructure.
22
+
Nighly builds are triggered (`schedule:`); this only works for `master` and needs a wrapper (`.github/workflows/all-branches.yml`) to then trigger nightly builds for the relevant branches (to be implemented).
23
+
PR builds are incremental builds that grab the last on-merge build's build artifacts (source + build dir), apply the PR's source changes, build and test.
24
+
25
+
On-merge builds are full builds that update the build artifacts: before running roottest, the source and build directories are uploaded to [OpenStack's S3 storage](https://openstack.cern.ch/project/containers/container/ROOT-build-artifacts) (project `ROOT-build-artifacts`).
26
+
These build artifacts use the hash of the cmake invocation as key: if the on-merge build and the PR builds are using different CMake invocations, the PR build will be a full build, not an incremental one, because no build artifacts can be found for its CMake configuration.
27
+
28
+
Release builds can be [triggered by hand](https://github.com/root-project/root/actions/workflows/root-ci.yml) ("Run workflow").
29
+
They produce binary releases that get linked at the bottom of the Action's build page; GitHub stores them for 90 days.
30
+
Due to a [limitation in the GitHub artifact upload](https://github.com/actions/upload-artifact#zip-archives), each job can only upload a single file; multiple files will get combined and compressed.
31
+
This means that e.g. macOS artifacts (producing `.tar.gz` and `.pkg` binaries in one go) will need to be decompressed before uploading to `root.cern`.
18
32
19
33
## Registering a machine as a GitHub Actions Runner:
20
34
@@ -51,8 +65,8 @@ This section documents the configuration of these Docker containers and of their
51
65
52
66
Python packages or distro package dependencies are added not to runners but to the Docker images they run, see <https://github.com/root-project/root-ci-images>.
53
67
They can use a python3-venv / python3-virtualenv if set up at `/py-venv/ROOT-CI`.
54
-
We use podman, not docker; this and a bug in GH runners requires us to use a
These images are built on a daily basis; updated images are uploaded to CERN's [Harbor](https://registry.cern.ch/harbor/projects/3531/repositories) registry.
56
70
57
71
### Linux runners
58
72
@@ -67,6 +81,9 @@ documentation for configuration can be found on [ConfigDocs](https://configdocs.
67
81
The Puppet configuration of the runners are stored on GitLab at:
0 commit comments