summaryrefslogtreecommitdiff
path: root/bootstrap/.gitlab-ci.yml
blob: e474b4b500f308162f05c4a0ad3d51649c060383 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
services:
  - docker:dind

.build_image_template:
  image: docker:latest
  stage: images
  tags:
    - docker
    - shared
  variables:
    SAMBA_CI_IS_BROKEN_IMAGE: "no"
  before_script:
    # Ensure we are generating correct the container
    - uname -a
    - cat /etc/os-release
    - echo "SAMBA_CI_CONTAINER_REGISTRY[${SAMBA_CI_CONTAINER_REGISTRY}]"
    - echo "SAMBA_CI_CONTAINER_TAG[${SAMBA_CI_CONTAINER_TAG}]"
    - echo "SAMBA_CI_IS_BROKEN_IMAGE[${SAMBA_CI_IS_BROKEN_IMAGE}]"
    - echo "SAMBA_CI_REBUILD_IMAGES[${SAMBA_CI_REBUILD_IMAGES}]"
    - echo "SAMBA_CI_REBUILD_BROKEN_IMAGES[${SAMBA_CI_REBUILD_BROKEN_IMAGES}]"
    - echo "GITLAB_USER_LOGIN[${GITLAB_USER_LOGIN}]"
    - echo "${SAMBA_CI_CONTAINER_TAG}" > /tmp/sha1sum-tag.txt
    - diff -u bootstrap/sha1sum.txt /tmp/sha1sum-tag.txt
  script: |
    set -xueo pipefail
    ci_image_name=samba-ci-${CI_JOB_NAME}
    docker build -t ${ci_image_name} --build-arg SHA1SUM=${SAMBA_CI_CONTAINER_TAG} bootstrap/generated-dists/${CI_JOB_NAME}
    ci_image_path="${SAMBA_CI_CONTAINER_REGISTRY}/${ci_image_name}"
    timestamp=$(date +%Y%m%d%H%M%S)
    docker_hash=$(docker image inspect --format='{{index .Id}}' ${ci_image_name} | cut -d : -f 2 | cut -c 1-9)
    timestamp_tag=${SAMBA_CI_CONTAINER_TAG}-${timestamp}-${GITLAB_USER_LOGIN}-${docker_hash}
    samba_repo_root=/home/samba/samba
    # Ensure we are generating the correct container that we expect to be in
    echo "${SAMBA_CI_CONTAINER_TAG}" > /tmp/sha1sum-tag.txt
    diff -u bootstrap/sha1sum.txt /tmp/sha1sum-tag.txt
    docker run --volume $(pwd):${samba_repo_root} --workdir ${samba_repo_root} ${ci_image_name} \
        /bin/bash -c "echo \"${SAMBA_CI_CONTAINER_TAG}\" > /tmp/sha1sum-tag.txt; diff -u bootstrap/sha1sum.txt /tmp/sha1sum-tag.txt"
    docker run --volume $(pwd):${samba_repo_root} --workdir ${samba_repo_root} ${ci_image_name} \
        diff -u bootstrap/sha1sum.txt /sha1sum.txt
    docker run --volume $(pwd):${samba_repo_root} --workdir ${samba_repo_root} ${ci_image_name} \
        bootstrap/template.py --sha1sum > /tmp/sha1sum-template.txt
    diff -u bootstrap/sha1sum.txt /tmp/sha1sum-template.txt
    # run smoke test with samba-o3
    docker run --volume $(pwd):${samba_repo_root} --workdir ${samba_repo_root} ${ci_image_name} \
        /bin/bash -c "sudo chown -R samba:samba ./** && export PKG_CONFIG_PATH=/usr/lib64/compat-gnutls34/pkgconfig:/usr/lib64/compat-nettle32/pkgconfig && script/autobuild.py samba-o3 --verbose --nocleanup --keeplogs --tail --testbase /tmp/samba-testbase"
    docker tag ${ci_image_name} ${ci_image_path}:${SAMBA_CI_CONTAINER_TAG}
    docker tag ${ci_image_name} ${ci_image_path}:${timestamp_tag}
    # We build all images, but only upload is it's not marked as broken
    test x"${SAMBA_CI_IS_BROKEN_IMAGE}" = x"yes" || { \
        docker login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD $CI_REGISTRY; \
        docker push ${ci_image_path}:${SAMBA_CI_CONTAINER_TAG}; \
        docker push ${ci_image_path}:${timestamp_tag}; \
    }
    echo "Success for ${ci_image_path}:${timestamp_tag}"
    test x"${SAMBA_CI_IS_BROKEN_IMAGE}" = x"no" || { \
         echo "The image ${CI_JOB_NAME} is marked as broken and should have failed!"; \
         echo "Replace .build_image_template_force_broken with .build_image_template!"; \
         echo "Add a .samba-o3-template section at the end of the main .gitlab-ci.yml!"; \
         /bin/false; \
    }
  only:
    variables:
      #
      # You need a custom pipeline which passes
      # SAMBA_CI_REBUILD_IMAGES="yes".
      #
      # https://gitlab.com/samba-team/devel/samba/pipelines/new
      #
      - $SAMBA_CI_REBUILD_IMAGES == "yes"

.build_image_template_force_broken:
  extends: .build_image_template
  variables:
    SAMBA_CI_IS_BROKEN_IMAGE: "yes"
  only:
    variables:
      #
      # You need a custom pipeline which passes
      # SAMBA_CI_REBUILD_BROKEN_IMAGES="yes"
      # in order to build broken images for debugging
      #
      # https://gitlab.com/samba-team/devel/samba/pipelines/new
      #
      - $SAMBA_CI_REBUILD_BROKEN_IMAGES == "yes"

ubuntu1804:
  extends: .build_image_template

ubuntu1604:
  extends: .build_image_template

ubuntu1404:
  extends: .build_image_template_force_broken

debian9:
  extends: .build_image_template

debian8:
  extends: .build_image_template_force_broken

debian7:
  extends: .build_image_template_force_broken

fedora30:
  extends: .build_image_template

fedora29:
  extends: .build_image_template

fedora28:
  extends: .build_image_template_force_broken

centos8:
  extends: .build_image_template

centos7:
  extends: .build_image_template
  variables:
    # Shallow copies are not supported by git on CentOS7
    GIT_DEPTH: ""
    # We install a compat-gnutls34 package for GnuTLS >= 3.4.7
    PKG_CONFIG_PATH: /usr/lib64/compat-gnutls34/pkgconfig:/usr/lib64/compat-nettle32/pkgconfig

centos6:
  extends: .build_image_template_force_broken

opensuse150:
  extends: .build_image_template

opensuse151:
  extends: .build_image_template