Skip to content

Commit ebff622

Browse files
Axel-Naumanndpiparo
authored andcommitted
Mention Openstack-S3, Harbor, PR vs nightly etc builds.
1 parent 79363dd commit ebff622

File tree

1 file changed

+19
-2
lines changed

1 file changed

+19
-2
lines changed

for_developers/continuous_integration-testing/githubactions.md

Lines changed: 19 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,21 @@ The ROOT project uses a GitHub Actions for continuous integration and delivery.
1414

1515
For building the Docker images we use GitHub's runners.
1616
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).
1718

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`.
1832

1933
## Registering a machine as a GitHub Actions Runner:
2034

@@ -51,8 +65,8 @@ This section documents the configuration of these Docker containers and of their
5165

5266
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>.
5367
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
55-
[podman-docker-wrapper](https://gitlab.cern.ch/ai/it-puppet-hostgroup-lcgapp/-/blob/master/code/files/github_ci/wrapper.py?ref_type=heads) script.
68+
69+
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.
5670

5771
### Linux runners
5872

@@ -67,6 +81,9 @@ documentation for configuration can be found on [ConfigDocs](https://configdocs.
6781
The Puppet configuration of the runners are stored on GitLab at:
6882
<https://gitlab.cern.ch/ai/it-puppet-hostgroup-lcgapp/>
6983

84+
We use podman, not docker; this and a bug in GH runners requires us to use a
85+
[podman-docker-wrapper](https://gitlab.cern.ch/ai/it-puppet-hostgroup-lcgapp/-/blob/master/code/files/github_ci/wrapper.py?ref_type=heads) script.
86+
7087
Although using management tools is annoying (even awful), they simplify batch
7188
operations and ensure uniformity. Here are some examples of common tasks to show
7289
the strengths of Foreman/Puppet.

0 commit comments

Comments
 (0)