X-Git-Url: http://git.samba.org/?a=blobdiff_plain;f=.gitlab-ci.yml;h=56adf10c7be6d5d92bf4ae933041c8222a8019ac;hb=038ea9e55b0e20706a80cf7f694872b4b84d6e44;hp=c7fb604041546dbf1f50a3fb512d3431f6f2b2f1;hpb=e0bd12e0543c5a39bf1cf015659ed32c116ab8cb;p=metze%2Fsamba%2Fwip.git diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index c7fb60404154..56adf10c7be6 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -1,17 +1,59 @@ # see https://docs.gitlab.com/ce/ci/yaml/README.html for all available options +stages: + - images + - build + - report variables: - # we run autobuild.py inside a samba CI docker image located on gitlab's registry - SAMBA_CI_CONTAINER_REGISTRY: registry.gitlab.com - SAMBA_CI_CONTAINER_NAME: samba-team/samba - SAMBA_CI_CONTAINER_TAG: latest - SAMBA_CI_CONTAINER_IMAGE: $SAMBA_CI_CONTAINER_REGISTRY/$SAMBA_CI_CONTAINER_NAME:$SAMBA_CI_CONTAINER_TAG GIT_STRATEGY: fetch GIT_DEPTH: "3" + # "--enable-coverage" or "" + SAMBA_CI_AUTOBUILD_ENABLE_COVERAGE: "" + # + # we run autobuild.py inside a samba CI docker image located on gitlab's registry + # overwrite this variable if you want use your own image registry. + # + # Or better ask for access to the shared development repository, see + # https://wiki.samba.org/index.php/Samba_CI_on_gitlab#Getting_Access + # + SAMBA_CI_CONTAINER_REGISTRY: registry.gitlab.com/samba-team/devel/samba + # + # Set this to the contents of bootstrap/sha1sum.txt + # which is generated by bootstrap/template.py --render + # + SAMBA_CI_CONTAINER_TAG: 41319f2580c026f66b2750604a0eb15d6b6f7b50 + # + # We use the ubuntu1804 image as default as + # it matches what we have on sn-devel-184. + # + SAMBA_CI_CONTAINER_IMAGE: ubuntu1804 + # + # The following images are available + # Please see the samba-o3 sections at the end of this file! + # We should run that for each available image + # + SAMBA_CI_CONTAINER_IMAGE_ubuntu1804: ${SAMBA_CI_CONTAINER_REGISTRY}/samba-ci-ubuntu1804:${SAMBA_CI_CONTAINER_TAG} + SAMBA_CI_CONTAINER_IMAGE_ubuntu1604: ${SAMBA_CI_CONTAINER_REGISTRY}/samba-ci-ubuntu1604:${SAMBA_CI_CONTAINER_TAG} + SAMBA_CI_CONTAINER_IMAGE_debian9: ${SAMBA_CI_CONTAINER_REGISTRY}/samba-ci-debian9:${SAMBA_CI_CONTAINER_TAG} + SAMBA_CI_CONTAINER_IMAGE_debian10: ${SAMBA_CI_CONTAINER_REGISTRY}/samba-ci-debian10:${SAMBA_CI_CONTAINER_TAG} + SAMBA_CI_CONTAINER_IMAGE_opensuse150: ${SAMBA_CI_CONTAINER_REGISTRY}/samba-ci-opensuse150:${SAMBA_CI_CONTAINER_TAG} + SAMBA_CI_CONTAINER_IMAGE_opensuse151: ${SAMBA_CI_CONTAINER_REGISTRY}/samba-ci-opensuse151:${SAMBA_CI_CONTAINER_TAG} + SAMBA_CI_CONTAINER_IMAGE_fedora29: ${SAMBA_CI_CONTAINER_REGISTRY}/samba-ci-fedora29:${SAMBA_CI_CONTAINER_TAG} + SAMBA_CI_CONTAINER_IMAGE_fedora30: ${SAMBA_CI_CONTAINER_REGISTRY}/samba-ci-fedora30:${SAMBA_CI_CONTAINER_TAG} + SAMBA_CI_CONTAINER_IMAGE_fedora31: ${SAMBA_CI_CONTAINER_REGISTRY}/samba-ci-fedora31:${SAMBA_CI_CONTAINER_TAG} + SAMBA_CI_CONTAINER_IMAGE_centos7: ${SAMBA_CI_CONTAINER_REGISTRY}/samba-ci-centos7:${SAMBA_CI_CONTAINER_TAG} + SAMBA_CI_CONTAINER_IMAGE_centos8: ${SAMBA_CI_CONTAINER_REGISTRY}/samba-ci-centos8:${SAMBA_CI_CONTAINER_TAG} + +include: + # The image creation details are specified in a separate file + # See bootstrap/README.md for details + - 'bootstrap/.gitlab-ci.yml' .shared_template: - image: $SAMBA_CI_CONTAINER_IMAGE + variables: + AUTOBUILD_JOB_NAME: $CI_JOB_NAME + image: ${SAMBA_CI_CONTAINER_REGISTRY}/samba-ci-${SAMBA_CI_CONTAINER_IMAGE}:${SAMBA_CI_CONTAINER_TAG} stage: build tags: - docker @@ -19,23 +61,33 @@ variables: before_script: - uname -a - lsb_release -a - - echo "Build starting (preparing swap)..." - - if [ $(df -m / --output=avail | tail -n1) -gt 10240 ]; then - sudo dd if=/dev/zero of=/samba-swap bs=1M count=6144; - sudo mkswap /samba-swap; - sudo swapon /samba-swap; - fi + - cat /etc/os-release - mount - df -h + - cat /proc/swaps + - free -h + # ld will fail if coverage enabled, force link ld to ld.bfd + - if [ -n "$SAMBA_CI_AUTOBUILD_ENABLE_COVERAGE" ]; then sudo ln -sf $(which ld.bfd) $(which ld); fi + # See bootstrap/.gitlab-ci.yml how to generate a new image + - echo "SAMBA_CI_CONTAINER_REGISTRY[${SAMBA_CI_CONTAINER_REGISTRY}]" + - echo "SAMBA_CI_CONTAINER_TAG[${SAMBA_CI_CONTAINER_TAG}]" + - bootstrap/template.py --sha1sum > /tmp/sha1sum-template.txt + - diff -u bootstrap/sha1sum.txt /tmp/sha1sum-template.txt + - echo "${SAMBA_CI_CONTAINER_TAG}" > /tmp/sha1sum-tag.txt + - diff -u bootstrap/sha1sum.txt /tmp/sha1sum-tag.txt + - diff -u bootstrap/sha1sum.txt /sha1sum.txt + after_script: + - mount + - df -h + - cat /proc/swaps - free -h artifacts: expire_in: 1 week - when: on_failure paths: - "*.stdout" - "*.stderr" + - "*.info" - system-info.txt - - /tmp/samba-testbase/*/*/bin/config.log retry: max: 2 when: @@ -44,39 +96,42 @@ variables: script: # gitlab predefines CI_JOB_NAME for each job. The gitlab job usually matches the # autobuild name, which means we can define a default template that runs most autobuild jobs - - echo "Running cmd script/autobuild.py $CI_JOB_NAME --verbose --nocleanup --keeplogs --tail --testbase /tmp/samba-testbase" - - script/autobuild.py $CI_JOB_NAME --verbose --nocleanup --keeplogs --tail --testbase /tmp/samba-testbase + - echo "Running cmd script/autobuild.py $AUTOBUILD_JOB_NAME $SAMBA_CI_AUTOBUILD_ENABLE_COVERAGE --verbose --nocleanup --keeplogs --tail --testbase /tmp/samba-testbase" + - script/autobuild.py $AUTOBUILD_JOB_NAME $SAMBA_CI_AUTOBUILD_ENABLE_COVERAGE --verbose --nocleanup --keeplogs --tail --testbase /tmp/samba-testbase + +# Ensure when adding a new job below that you also add it to +# the dependencies for 'pages' below for the code coverage page +# generation. others: extends: .shared_template script: - - script/autobuild.py ldb --verbose --nocleanup --keeplogs --tail --testbase /tmp/samba-testbase - - script/autobuild.py pidl --verbose --nocleanup --keeplogs --tail --testbase /tmp/samba-testbase - - script/autobuild.py replace --verbose --nocleanup --keeplogs --tail --testbase /tmp/samba-testbase - - script/autobuild.py talloc --verbose --nocleanup --keeplogs --tail --testbase /tmp/samba-testbase - - script/autobuild.py tdb --verbose --nocleanup --keeplogs --tail --testbase /tmp/samba-testbase - - script/autobuild.py tevent --verbose --nocleanup --keeplogs --tail --testbase /tmp/samba-testbase + - script/autobuild.py ldb $SAMBA_CI_AUTOBUILD_ENABLE_COVERAGE --verbose --nocleanup --keeplogs --tail --testbase /tmp/samba-testbase + - script/autobuild.py pidl $SAMBA_CI_AUTOBUILD_ENABLE_COVERAGE --verbose --nocleanup --keeplogs --tail --testbase /tmp/samba-testbase + - script/autobuild.py replace $SAMBA_CI_AUTOBUILD_ENABLE_COVERAGE --verbose --nocleanup --keeplogs --tail --testbase /tmp/samba-testbase + - script/autobuild.py talloc $SAMBA_CI_AUTOBUILD_ENABLE_COVERAGE --verbose --nocleanup --keeplogs --tail --testbase /tmp/samba-testbase + - script/autobuild.py tdb $SAMBA_CI_AUTOBUILD_ENABLE_COVERAGE --verbose --nocleanup --keeplogs --tail --testbase /tmp/samba-testbase + - script/autobuild.py tevent $SAMBA_CI_AUTOBUILD_ENABLE_COVERAGE --verbose --nocleanup --keeplogs --tail --testbase /tmp/samba-testbase -samba-none-env: +samba: extends: .shared_template - # this one takes about 1 hours to finish -samba-nopython: +samba-mitkrb5: extends: .shared_template -samba-nopython-py2: +samba-none-env: extends: .shared_template -samba-systemkrb5: +samba-nopython: extends: .shared_template -samba-xc: +samba-nopython-py2: extends: .shared_template -samba-o3: +samba-xc: extends: .shared_template -samba-ad-member: +samba-admem: extends: .shared_template samba-ad-dc-2: @@ -94,15 +149,15 @@ samba-ad-dc-5: samba-ad-dc-6: extends: .shared_template -samba-ad-dc-backup: - extends: .shared_template - samba-libs: extends: .shared_template samba-static: extends: .shared_template +samba-fuzz: + extends: .shared_template + ctdb: extends: .shared_template @@ -111,20 +166,18 @@ samba-ctdb: samba-ad-dc-ntvfs: extends: .shared_template - # this one takes about 100 mins to finish +samba-admem-mit: + extends: .shared_template + +samba-ad-dc-4-mitkrb5: + extends: .shared_template .private_template: extends: .shared_template tags: - docker - - private - before_script: - - uname -a - - lsb_release -a - - mount - - df -h - - free -h + - samba-ci-private only: variables: # These jobs are only run if the gitlab repo has private runners available. @@ -133,16 +186,142 @@ samba-ad-dc-ntvfs: # settings -> CI/CD -> Environment variables - $SUPPORT_PRIVATE_TEST == "yes" -samba: +samba-ad-dc-backup: + extends: .private_template + +samba-simpleserver: extends: .private_template - # this one takes about 4 hours to finish samba-fileserver: extends: .private_template - # this one takes about 1 hours to finish + +samba-ktest-heimdal: + extends: .private_template samba-ad-dc-1: extends: .private_template samba-nt4: extends: .private_template + +samba-schemaupgrade: + extends: .private_template + +samba-ad-dc-1-mitkrb5: + extends: .private_template + +# 'pages' is a special job which can publish artifacts in `public` dir to gitlab pages +pages: + image: ${SAMBA_CI_CONTAINER_REGISTRY}/samba-ci-${SAMBA_CI_CONTAINER_IMAGE}:${SAMBA_CI_CONTAINER_TAG} + stage: report + tags: + - docker + - shared + dependencies: # tell gitlab to download artifacts for these jobs + - others + - samba + - samba-mitkrb5 + - samba-none-env + - samba-nopython + - samba-nopython-py2 + - samba-xc + - samba-admem + - samba-ad-dc-2 + - samba-ad-dc-3 + - samba-ad-dc-4 + - samba-ad-dc-5 + - samba-ad-dc-6 + - samba-libs + - samba-static + - samba-fuzz + # - ctdb # TODO + - samba-ctdb + - samba-ad-dc-ntvfs + - samba-admem-mit + - samba-ad-dc-4-mitkrb5 + - samba-ad-dc-backup + - samba-simpleserver + - samba-fileserver + - samba-ktest-heimdal + - samba-ad-dc-1 + - samba-nt4 + - samba-schemaupgrade + - samba-ad-dc-1-mitkrb5 + script: + - ./configure.developer + - make -j + - lcov $(ls *.info | xargs -I{} echo -n "-a {} ") -o all.info + - genhtml all.info --output-directory public --prefix=$(pwd) --title "coverage report for $CI_COMMIT_REF_NAME $CI_COMMIT_SHORT_SHA" + artifacts: + expire_in: 30 days + paths: + - public + only: + variables: + - $SAMBA_CI_AUTOBUILD_ENABLE_COVERAGE == "--enable-coverage" + +# +# We build samba-o3 on all supported distributions +# + +.samba-o3-template: + extends: .shared_template + variables: + AUTOBUILD_JOB_NAME: samba-o3 + only: + variables: + # do not run o3 for coverage since they are using different images + - $SAMBA_CI_AUTOBUILD_ENABLE_COVERAGE == "" + +ubuntu1804-samba-o3: + extends: .samba-o3-template + image: $SAMBA_CI_CONTAINER_IMAGE_ubuntu1804 + +ubuntu1604-samba-o3: + extends: .samba-o3-template + image: $SAMBA_CI_CONTAINER_IMAGE_ubuntu1604 + +debian9-samba-o3: + extends: .samba-o3-template + image: $SAMBA_CI_CONTAINER_IMAGE_debian9 + +debian10-samba-o3: + extends: .samba-o3-template + image: $SAMBA_CI_CONTAINER_IMAGE_debian10 + +opensuse150-samba-o3: + extends: .samba-o3-template + image: $SAMBA_CI_CONTAINER_IMAGE_opensuse150 + +opensuse151-samba-o3: + extends: .samba-o3-template + image: $SAMBA_CI_CONTAINER_IMAGE_opensuse151 + +centos7-samba-o3: + extends: .samba-o3-template + image: $SAMBA_CI_CONTAINER_IMAGE_centos7 + variables: + # Git on CentOS doesn't support shallow git cloning + GIT_DEPTH: "" + # We need a newer GnuTLS version on CentOS7 + PKG_CONFIG_PATH: "/usr/lib64/compat-gnutls34/pkgconfig:/usr/lib64/compat-nettle32/pkgconfig" + +centos8-samba-o3: + extends: .samba-o3-template + image: $SAMBA_CI_CONTAINER_IMAGE_centos8 + +fedora29-samba-o3: + extends: .samba-o3-template + image: $SAMBA_CI_CONTAINER_IMAGE_fedora29 + +fedora30-samba-o3: + extends: .samba-o3-template + image: $SAMBA_CI_CONTAINER_IMAGE_fedora30 + +fedora31-samba-o3: + extends: .samba-o3-template + image: $SAMBA_CI_CONTAINER_IMAGE_fedora31 + +# +# Keep the samba-o3 sections at the end ... +#