This patch adds x86_64 native CI jobs for all distros that we currently build container images for. This is a superset of the Linux jobs run on current Jenkins and Travis platforms. The remaining missing platforms are FreeBSD and macOS, neither of which can use the shared runner container based infrastructure. We may add further native jobs in the future which are not x86_64 based, if we get access to suitable hardware, thus the jobs all have an arch prefix in their name, just like the cross-built jobs do. To control the total CI execution time, we split the native jobs into two distinct stages. A representative set of distros are used as the primary native build sanity test, run for everyone regardless of whether pre/post merge, and on any branch. The remaining distros are set to run after the cross builds, and only execute for master branch, and thus will only run for post-merge. When we switch to using a merge request workflow, these extra jobs can be triggered when the merge request is opened. Signed-off-by: Daniel P. Berrangé <berrange@xxxxxxxxxx> --- .gitlab-ci.yml | 78 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 78 insertions(+) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 329374a34f..58abcbe1f3 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -1,6 +1,34 @@ stages: - prebuild + - native_build - cross_build + - native_build_extra + + +# Common templates + +# Native jobs that run every time, pre/post merge and on any branch +.native_build_job_template: &native_build_job_definition + stage: native_build + script: + - mkdir build + - cd build + - ../autogen.sh $CONFIGURE_OPTS || (cat config.log && exit 1) + - make -j $(getconf _NPROCESSORS_ONLN) syntax-check + - make -j $(getconf _NPROCESSORS_ONLN) distcheck + +# Native jobs that will only run post merge on master branch +# Switch to running against merge requests later +.native_build_extra_job_template: &native_build_extra_job_definition + stage: native_build_extra + script: + - mkdir build + - cd build + - ../autogen.sh $CONFIGURE_OPTS || (cat config.log && exit 1) + - $MAKE -j $(getconf _NPROCESSORS_ONLN) check + only: + refs: + - master .cross_build_job_template: &cross_build_job_definition stage: cross_build @@ -10,6 +38,56 @@ stages: - ../autogen.sh $CONFIGURE_OPTS || (cat config.log && exit 1) - make -j $(getconf _NPROCESSORS_ONLN) + +# Native architecture build + test jobs + +x64-debian-9: + <<: *native_build_extra_job_definition + image: quay.io/libvirt/buildenv-libvirt-debian-9:latest + +x64-debian-10: + <<: *native_build_job_definition + image: quay.io/libvirt/buildenv-libvirt-debian-10:latest + +x64-debian-sid: + <<: *native_build_extra_job_definition + image: quay.io/libvirt/buildenv-libvirt-debian-sid:latest + +x64-centos-7: + <<: *native_build_job_definition + image: quay.io/libvirt/buildenv-libvirt-centos-7:latest + +x64-centos-8: + <<: *native_build_extra_job_definition + image: quay.io/libvirt/buildenv-libvirt-centos-8:latest + +x64-fedora-30: + <<: *native_build_job_definition + image: quay.io/libvirt/buildenv-libvirt-fedora-30:latest + +x64-fedora-31: + <<: *native_build_extra_job_definition + image: quay.io/libvirt/buildenv-libvirt-fedora-31:latest + +x64-fedora-rawhide: + <<: *native_build_job_definition + image: quay.io/libvirt/buildenv-libvirt-fedora-rawhide:latest + +x64-opensuse-151: + <<: *native_build_job_definition + image: quay.io/libvirt/buildenv-libvirt-opensuse-151:latest + +x64-ubuntu-1604: + <<: *native_build_job_definition + image: quay.io/libvirt/buildenv-libvirt-ubuntu-1604:latest + +x64-ubuntu-1804: + <<: *native_build_extra_job_definition + image: quay.io/libvirt/buildenv-libvirt-ubuntu-1804:latest + + +# Cross compiled build jobs + # There are many possible cross-arch jobs we could do, but to preserve # limited CI resource time allocated to users, we cut it down to two # interesting variants. The default jobs are x86_64, which means 64-bit -- 2.24.1