Last week the /qemu-project namespace got added to the GitLab Open Source
Program. This gives repos under that namespace extra CI minutes (50,000)
and a cost factor of 0.5, meaning in effect 100,000 minutes per month.
Primarily this applies to CI pipelines jobs the merge coordinator runs
for pull requests via the upstream staging branch.


Joining the OSS program also, however, has a benefit for people who have
forks of the /qemu-project/qemu repository.

Each user with the free plan normally gets 400 minutes of CI quota per
month [1], though some people with older gitlab.com user accounts may still
get 2,000 CI minutes / month. Note this quota is across all repos under
your /$USERNAME path in gitlab, NOT per repo.

You can check your allowance and usage at:

   https://gitlab.com/-/profile/usage_quotas#pipelines-quota-tab

Where things get complicated is the CI cost factor, which varies depending
on repo context[2].

Provided your QEMU repo is a fork of /qemu-project/qemu, its CI cost factor
should be 0.008.  IOW, if you have 400 minutes quota and only run pipelines
for QEMU, you should be able to use 50,000 minutes of wall-clock time on
shared runners.

If your QEMU repo is NOT a fork of /qemu-project/qemu, your CI cost factor
will likely be 1.  IOW, if you have 400 minutes quota you'll only get 400
minutes of wall-clock time. A QEMU CI pipeline will devour those 400 minutes
almost instantly.

IOW, it is absolutely critical that your repository is considered a fork
of /qemu-project/qemu if you intend to use CI, as it will mean you consume
CI quota x125 more slowly.

For the majority of contributors this won't be a problem, but a few may
have created their QEMU repo before /qemu-project existed on GitLab, and
thus not be considerd a fork.

To check this, go to the Gitlab web UI for your repo and check that the
header says:

    " Forked from QEMU / QEMU "

just underneath the repo description.

If it does not say that, then you'll need to rename your existing repo to
a different path, and fork from /qemu-project/qemu again.

NB, if you exhaust your CI quota, it resets on the 1st of each month.


Even with the reduced 0.008 cost factor, QEMU pipelines can consume CI time
pretty quickly, so be prudent with what jobs you run.

Ensure ***ALL*** your branches are rebased to post v7.1.0 release, before
pushing to gitlab, such that they include this commit:

  commit 28357dc525b4798cdef1101cbb459afcd7233280
  Author: Daniel P. Berrangé <berra...@redhat.com>
  Date:   Fri May 27 16:36:02 2022 +0100

    gitlab: don't run CI jobs in forks by default

This prevents CI pipelines being created merely by pushing the branch.

Also avoiding setting 'QEMU_CI=2' when running pipelines, as that triggers
every job which will burn alot of CI quota. Best is to use 'QEMU_CI=1'
which creates the pipeline but marks all jobs as manual, so you can choose
exactly which subset to run.

BTW, this largely all applies to other projects on gitlab that use CI
too. In libvirt we're switching off CI on push events too, and have also
joined the OSS Program to get forks to benefit from reduced cost factor
for CI.

With regards,
Daniel

[1] https://about.gitlab.com/pricing/

[2] https://docs.gitlab.com/ee/ci/pipelines/cicd_minutes.html#cost-factor
-- 
|: https://berrange.com      -o-    https://www.flickr.com/photos/dberrange :|
|: https://libvirt.org         -o-            https://fstop138.berrange.com :|
|: https://entangle-photo.org    -o-    https://www.instagram.com/dberrange :|


Reply via email to