Skip to content
  • Andrea Bolognani's avatar
    ci: Reduce number of stages · 0d009ca6
    Andrea Bolognani authored
    Right now we're dividing the jobs into three stages: prebuild, which
    includes DCO checking as well as building artifacts such as the
    website, and native_build/cross_build, which do exactly what you'd
    expect based on their names.
    
    This organization is nice from the logical point of view, but results
    in poor utilization of the available CI resources: in particular, the
    fact that cross_build jobs can only start after all native_build jobs
    have finished means that if even a single one of the latter takes a
    bit longer the pipeline will stall, and with native builds taking
    anywhere from less than 10 minutes to more than 20, this happens all
    the time.
    
    Building artifacts in a separate pipeline stage also doesn't have any
    advantages, and only delays further stages by a couple of minutes.
    The only job that really makes sense in its own stage is the DCO
    check, because it's extremely fast (less than 1 minute) and, if that
    fails, we can avoid kicking off all other jobs.
    
    Reducing the number of stages results in significant speedups:
    specifically, going from three stages to two stages reduces the
    overall completion time for a full CI pipeline from ~45 minutes[1]
    to ~30 minutes[2].
    
    [1] https://gitlab.com/abologna/libvirt/-/pipelines/154751893
    [2] https://gitlab.com/abologna/libvirt/-/pipelines/154771173
    
    
    
    Signed-off-by: default avatarAndrea Bolognani <abologna@redhat.com>
    Reviewed-by: default avatarDaniel P. Berrangé <berrange@redhat.com>
    0d009ca6
Validating GitLab CI configuration… Learn more