[libvirt] [jenkins-ci PATCH] Use shallow git clones for projects

Daniel P. Berrangé berrange at redhat.com
Tue Aug 27 13:12:12 UTC 2019


On Tue, Aug 27, 2019 at 02:56:02PM +0200, Erik Skultety wrote:
> First of all, we don't need the full history for builds and we can save
> some time during the prepare phase. The disk footprint is about 5x
> smaller, but the most important thing is the repo clone duration
> difference e.g. in libvirt's case is quite significant:
> 
> full history:
> real 3m45.236s
> user 1m53.074s
> sys 0m15.577s
> 
> depth 1:
> real 0m14.868s
> user 0m2.215s
> sys 0m0.906s

On Jenkins, the perf diff should be negligible. The CI build host
already has a full git clone with entire history. So all the worker
VMs are effectively cloning from localhost, not hitting the WAN.
They also are never doing a full git clone, just a git pull to get
the delta from the previous run.

Personally I find it useful to have the history when I'm debugging
problems on my build host/VM, so I'm not really in favour of doing
this change. It would make the VMs setup less usable for me, so I
prefer to accept the time penalty.

Is there something we can do to make the standalone VMs pull from
a repo on the build host by default, instead of fetching from
libvirt.org. Or to get their initial clone from the host, but
then get subsequent incremental updates from libvirt.org ?

> ---
>  guests/playbooks/build/jobs/prepare.yml | 1 +
>  jenkins/jobs/autotools.yaml             | 1 +
>  jenkins/jobs/generic.yaml               | 1 +
>  jenkins/jobs/go.yaml                    | 1 +
>  jenkins/jobs/perl-modulebuild.yaml      | 1 +
>  jenkins/jobs/python-distutils.yaml      | 1 +
>  6 files changed, 6 insertions(+)
> 
> diff --git a/guests/playbooks/build/jobs/prepare.yml b/guests/playbooks/build/jobs/prepare.yml
> index 576afbc..35ca9e4 100644
> --- a/guests/playbooks/build/jobs/prepare.yml
> +++ b/guests/playbooks/build/jobs/prepare.yml
> @@ -5,6 +5,7 @@
>      version: '{{ git_branch }}'
>      dest: '{{ name }}'
>      force: yes
> +    depth: 1
>    when:
>      - inventory_hostname in machines
>  
> diff --git a/jenkins/jobs/autotools.yaml b/jenkins/jobs/autotools.yaml
> index f04ec17..1a85781 100644
> --- a/jenkins/jobs/autotools.yaml
> +++ b/jenkins/jobs/autotools.yaml
> @@ -27,6 +27,7 @@
>              after: true
>            skip-tag: true
>            wipe-workspace: false
> +          shallow-clone: true
>      triggers:
>        - reverse:
>            jobs: '{obj:parent_jobs}'
> diff --git a/jenkins/jobs/generic.yaml b/jenkins/jobs/generic.yaml
> index ca69513..f58945e 100644
> --- a/jenkins/jobs/generic.yaml
> +++ b/jenkins/jobs/generic.yaml
> @@ -27,6 +27,7 @@
>              after: true
>            skip-tag: true
>            wipe-workspace: false
> +          shallow-clone: true
>      triggers:
>        - reverse:
>            jobs: '{obj:parent_jobs}'
> diff --git a/jenkins/jobs/go.yaml b/jenkins/jobs/go.yaml
> index 1bdcb5f..dd3c5d4 100644
> --- a/jenkins/jobs/go.yaml
> +++ b/jenkins/jobs/go.yaml
> @@ -27,6 +27,7 @@
>              after: true
>            skip-tag: true
>            wipe-workspace: false
> +          shallow-clone: true
>      triggers:
>        - reverse:
>            jobs: '{obj:parent_jobs}'
> diff --git a/jenkins/jobs/perl-modulebuild.yaml b/jenkins/jobs/perl-modulebuild.yaml
> index 7173493..0ea271e 100644
> --- a/jenkins/jobs/perl-modulebuild.yaml
> +++ b/jenkins/jobs/perl-modulebuild.yaml
> @@ -27,6 +27,7 @@
>              after: true
>            skip-tag: true
>            wipe-workspace: false
> +          shallow-clone: true
>      triggers:
>        - reverse:
>            jobs: '{obj:parent_jobs}'
> diff --git a/jenkins/jobs/python-distutils.yaml b/jenkins/jobs/python-distutils.yaml
> index f56794c..a3eb076 100644
> --- a/jenkins/jobs/python-distutils.yaml
> +++ b/jenkins/jobs/python-distutils.yaml
> @@ -27,6 +27,7 @@
>              after: true
>            skip-tag: true
>            wipe-workspace: false
> +          shallow-clone: true
>      triggers:
>        - reverse:
>            jobs: '{obj:parent_jobs}'

Regards,
Daniel
-- 
|: 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 :|




More information about the libvir-list mailing list