Please note that a Verified: +1
vote only means that all these libraries managed to build.
There's no cross-project gating right now.
This is rather fragile process due to the way we are setting up Zuul with multi-tenant support. (It looks like not a lot of people are using different Zuul tenants talking to one Gerrit server.)
When uploading, make sure that all changes share the same topic in Gerrit (e.g., git push ... -o topic=update-netconf
).
-
Make a modification here in
CzechLight/dependencies
. This will be the change A (example). This change will be built by both Zuul tenants independently. -
Update
CzechLight/cla-sysrepo
(change B: example). Use theseDepends-on
footer tags:
Depends-on: https://cesnet-gerrit-czechlight/c/CzechLight/dependencies/+/${A}
Depends-on: https://gerrit.cesnet.cz/c/CzechLight/dependencies/+/${A}
This will result in just one buildset in the private Zuul tenant.
- Update
CzechLight/netconf-cli
as change C (example). Do not upload this to Gerrit before A's build for thepublic
tenant completes.
Depends-on: https://cesnet-gerrit-czechlight/c/CzechLight/dependencies/+/${A}
Depends-on: https://cesnet-gerrit-public/c/CzechLight/dependencies/+/${A}
Depends-on: https://gerrit.cesnet.cz/c/CzechLight/dependencies/+/${A}
Depends-on: https://gerrit.cesnet.cz/c/CzechLight/cla-sysrepo/+/${B}
This repo is built twice.
The private Zuul tenant perform the usual multi-compiler tests, while the CzechLight-internal
runs an integration check via the czechlight_clearfog
build job.
- Finally (and optionally), update
CzechLight/br2-external
so that it includes bothcla-sysrepo
andnetconf-cli
changes (example). The followingDepends-on
are needed:
Depends-on: https://cesnet-gerrit-czechlight/c/CzechLight/cla-sysrepo/+/${B}
Depends-on: https://gerrit.cesnet.cz/c/CzechLight/cla-sysrepo/+/${B}
Depends-on: https://cesnet-gerrit-czechlight/c/CzechLight/netconf-cli/+/${C}
Depends-on: https://gerrit.cesnet.cz/c/CzechLight/netconf-cli/+/${C}
If everything builds, then the change is good to go ๐ ๐ฆ ๐ป.
- Create project within Gerrit:
ssh import.gerrit.cesnet.cz gerrit create-project --parent github/acl github/ORGANIZATION/REPO --owner '"Git Importers"' --description "'MIRROR: ...'"
- Run the first import script as the
github-mirror
user ongerrit.cesnet.cz
:REPO=org/repo ./oneshot.sh
- Update configuration of tenants in Zuul (example)
- Reconfigure Zuul (as
zuul
onzuul.gerrit.cesnet.cz
, runzuul-scheduler full-reconfigure
) - Add the submodule here:
git submodule add ../../github/ORG/REPO REPO
- Modify
ci/build.sh
to start building this dependency - Propose changes to all consumers as shown above
When an upstream project fixes a bug or implements a suggestion that we asked for, their commits typically end up in their GitHub repo, but not neccessarily in a branch that we're tracking.
Also, the CI builds against a Gerrit copy of these projects, and the mirroring script only runs twice a day.
In order to test changes earlier, all CzechLight developers can push changes to branches named cesnet/*
.
E.g., changes to libyang
can be pushed to the repo github/CESNET/libyang2
, branch cesnet/2020-07-24-fix-random-stuff
.