Blame view

.gitlab-ci.yml 9.27 KB
1a62a7221   Tom Rini   gitlab-ci: Initia...
1
2
3
4
  # SPDX-License-Identifier: GPL-2.0+
  
  # Grab our configured image.  The source for this is found at:
  # https://gitlab.denx.de/u-boot/gitlab-ci-runner
28a512341   Tom Rini   gitlab-ci: Switch...
5
  image: trini/u-boot-gitlab-ci-runner:bionic-20190912.1-03Oct2019
1a62a7221   Tom Rini   gitlab-ci: Initia...
6
7
8
  
  # We run some tests in different order, to catch some failures quicker.
  stages:
1a62a7221   Tom Rini   gitlab-ci: Initia...
9
    - testsuites
b29cb0588   Tom Rini   gitlab-ci: Switch...
10
    - test.py
1a62a7221   Tom Rini   gitlab-ci: Initia...
11
12
13
14
15
16
17
18
19
20
21
22
23
24
    - world build
  
  .buildman_and_testpy_template: &buildman_and_testpy_dfn
    tags: [ 'all' ]
    stage: test.py
    before_script:
      # Clone uboot-test-hooks
      - git clone --depth=1 git://github.com/swarren/uboot-test-hooks.git /tmp/uboot-test-hooks
      - ln -s travis-ci /tmp/uboot-test-hooks/bin/`hostname`
      - ln -s travis-ci /tmp/uboot-test-hooks/py/`hostname`
      - virtualenv /tmp/venv
      - . /tmp/venv/bin/activate
      - pip install pytest==2.8.7
      - pip install python-subunit
28a512341   Tom Rini   gitlab-ci: Switch...
25
26
27
      - pip install coverage
      - grub-mkimage --prefix="" -o ~/grub_x86.efi -O i386-efi normal  echo lsefimmap lsefi lsefisystab efinet tftp minicmd
      - grub-mkimage --prefix="" -o ~/grub_x64.efi -O x86_64-efi normal  echo lsefimmap lsefi lsefisystab efinet tftp minicmd
1a62a7221   Tom Rini   gitlab-ci: Initia...
28
29
30
31
      - mkdir ~/grub2-arm
      - ( cd ~/grub2-arm; wget -O - http://download.opensuse.org/ports/armv7hl/distribution/leap/42.2/repo/oss/suse/armv7hl/grub2-arm-efi-2.02~beta2-87.1.armv7hl.rpm | rpm2cpio | cpio -di )
      - mkdir ~/grub2-arm64
      - ( cd ~/grub2-arm64; wget -O - http://download.opensuse.org/ports/aarch64/distribution/leap/42.2/repo/oss/suse/aarch64/grub2-arm64-efi-2.02~beta2-87.1.aarch64.rpm | rpm2cpio | cpio -di )
b29cb0588   Tom Rini   gitlab-ci: Switch...
32

1a62a7221   Tom Rini   gitlab-ci: Initia...
33
    after_script:
b29cb0588   Tom Rini   gitlab-ci: Switch...
34
      - rm -rf ~/grub2* /tmp/uboot-test-hooks /tmp/venv
1a62a7221   Tom Rini   gitlab-ci: Initia...
35
36
37
38
39
    script:
      # From buildman, exit code 129 means warnings only.  If we've been asked to
      # use clang only do one configuration.
      - if [[ "${BUILDMAN}" != "" ]]; then
          ret=0;
db7b86028   Tom Rini   gitlab-ci: Have b...
40
          tools/buildman/buildman -o /tmp -P -E ${BUILDMAN} ${OVERRIDE}|| ret=$?;
1a62a7221   Tom Rini   gitlab-ci: Initia...
41
          if [[ $ret -ne 0 && $ret -ne 129 ]]; then
db7b86028   Tom Rini   gitlab-ci: Have b...
42
            tools/buildman/buildman -o /tmp -sdeP ${BUILDMAN};
1a62a7221   Tom Rini   gitlab-ci: Initia...
43
44
45
46
47
48
49
            exit $ret;
          fi;
        fi
      # "not a_test_which_does_not_exist" is a dummy -k parameter which will
      # never prevent any test from running. That way, we can always pass
      # "-k something" even when $TEST_PY_TEST_SPEC doesnt need a custom
      # value.
db7b86028   Tom Rini   gitlab-ci: Have b...
50
      - export UBOOT_TRAVIS_BUILD_DIR=/tmp/.bm-work/${TEST_PY_BD};
b29cb0588   Tom Rini   gitlab-ci: Switch...
51
        export PATH=/opt/qemu/bin:/tmp/uboot-test-hooks/bin:/usr/bin:/bin;
1a62a7221   Tom Rini   gitlab-ci: Initia...
52
53
54
55
56
57
58
59
60
61
        export PYTHONPATH=/tmp/uboot-test-hooks/py/travis-ci;
        if [[ "${TEST_PY_BD}" != "" ]]; then
          ./test/py/test.py --bd ${TEST_PY_BD} ${TEST_PY_ID}
            -k "${TEST_PY_TEST_SPEC:-not a_test_which_does_not_exist}"
            --build-dir "$UBOOT_TRAVIS_BUILD_DIR";
          ret=$?;
          if [[ $ret -ne 0 ]]; then
            exit $ret;
          fi;
        fi;
a11cb57de   Heinrich Schuchardt   gitlab-ci: fix ty...
62
  build all 32bit ARM platforms:
1a62a7221   Tom Rini   gitlab-ci: Initia...
63
64
65
66
    tags: [ 'all' ]
    stage: world build
    script:
      - ret=0;
db7b86028   Tom Rini   gitlab-ci: Have b...
67
       ./tools/buildman/buildman -o /tmp -P -E arm -x aarch64 || ret=$?;
9f7bda104   Tom Rini   gitlab-ci: Split ...
68
       if [[ $ret -ne 0 && $ret -ne 129 ]]; then
db7b86028   Tom Rini   gitlab-ci: Have b...
69
         ./tools/buildman/buildman -o /tmp -sdeP;
9f7bda104   Tom Rini   gitlab-ci: Split ...
70
71
         exit $ret;
       fi;
a11cb57de   Heinrich Schuchardt   gitlab-ci: fix ty...
72
  build all 64bit ARM platforms:
9f7bda104   Tom Rini   gitlab-ci: Split ...
73
74
75
    tags: [ 'all' ]
    stage: world build
    script:
f0db8395b   Tom Rini   gitlab-ci: Move t...
76
77
78
      - virtualenv /tmp/venv
      - . /tmp/venv/bin/activate
      - pip install pyelftools
9f7bda104   Tom Rini   gitlab-ci: Split ...
79
      - ret=0;
db7b86028   Tom Rini   gitlab-ci: Have b...
80
       ./tools/buildman/buildman -o /tmp -P -E aarch64 || ret=$?;
9f7bda104   Tom Rini   gitlab-ci: Split ...
81
       if [[ $ret -ne 0 && $ret -ne 129 ]]; then
db7b86028   Tom Rini   gitlab-ci: Have b...
82
         ./tools/buildman/buildman -o /tmp -sdeP;
9f7bda104   Tom Rini   gitlab-ci: Split ...
83
84
         exit $ret;
       fi;
a11cb57de   Heinrich Schuchardt   gitlab-ci: fix ty...
85
  build all PowerPC platforms:
9f7bda104   Tom Rini   gitlab-ci: Split ...
86
87
88
89
    tags: [ 'all' ]
    stage: world build
    script:
      - ret=0;
db7b86028   Tom Rini   gitlab-ci: Have b...
90
       ./tools/buildman/buildman -o /tmp -P -E powerpc || ret=$?;
9f7bda104   Tom Rini   gitlab-ci: Split ...
91
       if [[ $ret -ne 0 && $ret -ne 129 ]]; then
db7b86028   Tom Rini   gitlab-ci: Have b...
92
         ./tools/buildman/buildman -o /tmp -sdeP;
9f7bda104   Tom Rini   gitlab-ci: Split ...
93
94
         exit $ret;
       fi;
a11cb57de   Heinrich Schuchardt   gitlab-ci: fix ty...
95
  build all other platforms:
9f7bda104   Tom Rini   gitlab-ci: Split ...
96
97
98
99
    tags: [ 'all' ]
    stage: world build
    script:
      - ret=0;
db7b86028   Tom Rini   gitlab-ci: Have b...
100
       ./tools/buildman/buildman -o /tmp -P -E -x arm,powerpc || ret=$?;
1a62a7221   Tom Rini   gitlab-ci: Initia...
101
       if [[ $ret -ne 0 && $ret -ne 129 ]]; then
db7b86028   Tom Rini   gitlab-ci: Have b...
102
         ./tools/buildman/buildman -o /tmp -sdeP;
1a62a7221   Tom Rini   gitlab-ci: Initia...
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
132
133
134
135
136
137
138
139
140
141
142
143
         exit $ret;
       fi;
  
  # QA jobs for code analytics
  # static code analysis with cppcheck (we can add --enable=all later)
  cppcheck:
    tags: [ 'all' ]
    stage: testsuites
    script:
      - cppcheck --force --quiet --inline-suppr .
  
  # search for TODO within source tree
  grep TODO/FIXME/HACK:
    tags: [ 'all' ]
    stage: testsuites
    script:
      - grep -r TODO .
      - grep -r FIXME .
      # search for HACK within source tree and ignore HACKKIT board
      - grep -r HACK . | grep -v HACKKIT
  
  # some statistics about the code base
  sloccount:
    tags: [ 'all' ]
    stage: testsuites
    script:
      - sloccount .
  
  # ensure all configs have MAINTAINERS entries
  Check for configs without MAINTAINERS entry:
    tags: [ 'all' ]
    stage: testsuites
    script:
      - if [ `./tools/genboardscfg.py -f 2>&1 | wc -l` -ne 0 ]; then exit 1; fi
  
  # Ensure host tools build
  Build tools-only:
    tags: [ 'all' ]
    stage: testsuites
    script:
      - make tools-only_config tools-only -j$(nproc)
1f3910da6   Pierre-Jean Texier   ci: add envtools ...
144
145
146
147
148
149
  # Ensure env tools build
  Build envtools:
    tags: [ 'all' ]
    stage: testsuites
    script:
      - make tools-only_config envtools -j$(nproc)
d7ae93215   Tom Rini   gitlab-ci: Consol...
150
  Run binman, buildman, dtoc and patman testsuites:
1a62a7221   Tom Rini   gitlab-ci: Initia...
151
152
153
    tags: [ 'all' ]
    stage: testsuites
    script:
d7ae93215   Tom Rini   gitlab-ci: Consol...
154
155
156
157
158
159
      - git config --global user.name "GitLab CI Runner";
        git config --global user.email trini@konsulko.com;
        export USER=gitlab;
        virtualenv /tmp/venv;
        . /tmp/venv/bin/activate;
        pip install pyelftools;
db7b86028   Tom Rini   gitlab-ci: Have b...
160
        export UBOOT_TRAVIS_BUILD_DIR=/tmp/.bm-work/sandbox_spl;
d7ae93215   Tom Rini   gitlab-ci: Consol...
161
162
        export PYTHONPATH="${UBOOT_TRAVIS_BUILD_DIR}/scripts/dtc/pylibfdt";
        export PATH="${UBOOT_TRAVIS_BUILD_DIR}/scripts/dtc:${PATH}";
db7b86028   Tom Rini   gitlab-ci: Have b...
163
        ./tools/buildman/buildman -o /tmp -P sandbox_spl;
d7ae93215   Tom Rini   gitlab-ci: Consol...
164
165
166
167
        ./tools/binman/binman --toolpath ${UBOOT_TRAVIS_BUILD_DIR}/tools test;
        ./tools/buildman/buildman -t;
        ./tools/dtoc/dtoc -t;
        ./tools/patman/patman --test
1a62a7221   Tom Rini   gitlab-ci: Initia...
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
  
  # Test sandbox with test.py
  sandbox test.py:
    tags: [ 'all' ]
    variables:
      TEST_PY_BD: "sandbox"
      BUILDMAN: "^sandbox$"
    <<: *buildman_and_testpy_dfn
  
  sandbox_spl test.py:
    tags: [ 'all' ]
    variables:
      TEST_PY_BD: "sandbox_spl"
      BUILDMAN: "^sandbox_spl$"
      TEST_PY_TEST_SPEC: "test_ofplatdata"
    <<: *buildman_and_testpy_dfn
699c0b93d   Tom Rini   gitlab-ci: Add ev...
184
185
186
187
188
  evb-ast2500 test.py:
    tags: [ 'all' ]
    variables:
      TEST_PY_BD: "evb-ast2500"
      TEST_PY_ID: "--id qemu"
699c0b93d   Tom Rini   gitlab-ci: Add ev...
189
190
      BUILDMAN: "^evb-ast2500$"
    <<: *buildman_and_testpy_dfn
1a62a7221   Tom Rini   gitlab-ci: Initia...
191
192
193
194
195
196
197
198
199
200
201
202
  sandbox_flattree test.py:
    tags: [ 'all' ]
    variables:
      TEST_PY_BD: "sandbox_flattree"
      BUILDMAN: "^sandbox_flattree$"
    <<: *buildman_and_testpy_dfn
  
  vexpress_ca15_tc2 test.py:
    tags: [ 'all' ]
    variables:
      TEST_PY_BD: "vexpress_ca15_tc2"
      TEST_PY_ID: "--id qemu"
1a62a7221   Tom Rini   gitlab-ci: Initia...
203
204
205
206
207
208
209
210
      BUILDMAN: "^vexpress_ca15_tc2$"
    <<: *buildman_and_testpy_dfn
  
  vexpress_ca9x4 test.py:
    tags: [ 'all' ]
    variables:
      TEST_PY_BD: "vexpress_ca9x4"
      TEST_PY_ID: "--id qemu"
1a62a7221   Tom Rini   gitlab-ci: Initia...
211
212
213
214
215
216
217
218
219
      BUILDMAN: "^vexpress_ca9x4$"
    <<: *buildman_and_testpy_dfn
  
  integratorcp_cm926ejs test.py:
    tags: [ 'all' ]
    variables:
      TEST_PY_BD: "integratorcp_cm926ejs"
      TEST_PY_TEST_SPEC: "not sleep"
      TEST_PY_ID: "--id qemu"
1a62a7221   Tom Rini   gitlab-ci: Initia...
220
221
222
223
224
225
226
227
      BUILDMAN: "^integratorcp_cm926ejs$"
    <<: *buildman_and_testpy_dfn
  
  qemu_arm test.py:
    tags: [ 'all' ]
    variables:
      TEST_PY_BD: "qemu_arm"
      TEST_PY_TEST_SPEC: "not sleep"
1a62a7221   Tom Rini   gitlab-ci: Initia...
228
229
230
231
232
233
234
235
      BUILDMAN: "^qemu_arm$"
    <<: *buildman_and_testpy_dfn
  
  qemu_arm64 test.py:
    tags: [ 'all' ]
    variables:
      TEST_PY_BD: "qemu_arm64"
      TEST_PY_TEST_SPEC: "not sleep"
1a62a7221   Tom Rini   gitlab-ci: Initia...
236
237
238
239
240
241
242
243
      BUILDMAN: "^qemu_arm64$"
    <<: *buildman_and_testpy_dfn
  
  qemu_mips test.py:
    tags: [ 'all' ]
    variables:
      TEST_PY_BD: "qemu_mips"
      TEST_PY_TEST_SPEC: "not sleep"
1a62a7221   Tom Rini   gitlab-ci: Initia...
244
      BUILDMAN: "^qemu_mips$"
1a62a7221   Tom Rini   gitlab-ci: Initia...
245
246
247
248
249
250
251
    <<: *buildman_and_testpy_dfn
  
  qemu_mipsel test.py:
    tags: [ 'all' ]
    variables:
      TEST_PY_BD: "qemu_mipsel"
      TEST_PY_TEST_SPEC: "not sleep"
1a62a7221   Tom Rini   gitlab-ci: Initia...
252
      BUILDMAN: "^qemu_mipsel$"
1a62a7221   Tom Rini   gitlab-ci: Initia...
253
254
255
256
257
258
259
    <<: *buildman_and_testpy_dfn
  
  qemu_mips64 test.py:
    tags: [ 'all' ]
    variables:
      TEST_PY_BD: "qemu_mips64"
      TEST_PY_TEST_SPEC: "not sleep"
1a62a7221   Tom Rini   gitlab-ci: Initia...
260
      BUILDMAN: "^qemu_mips64$"
1a62a7221   Tom Rini   gitlab-ci: Initia...
261
262
263
264
265
266
267
    <<: *buildman_and_testpy_dfn
  
  qemu_mips64el test.py:
    tags: [ 'all' ]
    variables:
      TEST_PY_BD: "qemu_mips64el"
      TEST_PY_TEST_SPEC: "not sleep"
1a62a7221   Tom Rini   gitlab-ci: Initia...
268
      BUILDMAN: "^qemu_mips64el$"
1a62a7221   Tom Rini   gitlab-ci: Initia...
269
270
271
272
273
274
275
    <<: *buildman_and_testpy_dfn
  
  qemu-ppce500 test.py:
    tags: [ 'all' ]
    variables:
      TEST_PY_BD: "qemu-ppce500"
      TEST_PY_TEST_SPEC: "not sleep"
1a62a7221   Tom Rini   gitlab-ci: Initia...
276
      BUILDMAN: "^qemu-ppce500$"
1a62a7221   Tom Rini   gitlab-ci: Initia...
277
    <<: *buildman_and_testpy_dfn
7298d82d9   Tom Rini   gitlab-ci: Add qe...
278
279
280
281
282
283
284
  qemu-riscv64 test.py:
    tags: [ 'all' ]
    variables:
      TEST_PY_BD: "qemu-riscv64"
      TEST_PY_TEST_SPEC: "not sleep"
      BUILDMAN: "^qemu-riscv64$"
    <<: *buildman_and_testpy_dfn
1a62a7221   Tom Rini   gitlab-ci: Initia...
285
286
287
288
289
  qemu-x86 test.py:
    tags: [ 'all' ]
    variables:
      TEST_PY_BD: "qemu-x86"
      TEST_PY_TEST_SPEC: "not sleep"
1a62a7221   Tom Rini   gitlab-ci: Initia...
290
      BUILDMAN: "^qemu-x86$"
1a62a7221   Tom Rini   gitlab-ci: Initia...
291
292
293
294
295
296
297
    <<: *buildman_and_testpy_dfn
  
  qemu-x86_64 test.py:
    tags: [ 'all' ]
    variables:
      TEST_PY_BD: "qemu-x86_64"
      TEST_PY_TEST_SPEC: "not sleep"
1a62a7221   Tom Rini   gitlab-ci: Initia...
298
      BUILDMAN: "^qemu-x86_64$"
1a62a7221   Tom Rini   gitlab-ci: Initia...
299
300
301
302
303
304
305
    <<: *buildman_and_testpy_dfn
  
  zynq_zc702 test.py:
    tags: [ 'all' ]
    variables:
      TEST_PY_BD: "zynq_zc702"
      TEST_PY_TEST_SPEC: "not sleep"
1a62a7221   Tom Rini   gitlab-ci: Initia...
306
307
308
309
310
311
312
313
314
      TEST_PY_ID: "--id qemu"
      BUILDMAN: "^zynq_zc702$"
    <<: *buildman_and_testpy_dfn
  
  xilinx_versal_virt test.py:
    tags: [ 'all' ]
    variables:
      TEST_PY_BD: "xilinx_versal_virt"
      TEST_PY_TEST_SPEC: "not sleep"
1a62a7221   Tom Rini   gitlab-ci: Initia...
315
316
317
318
319
320
321
322
323
      TEST_PY_ID: "--id qemu"
      BUILDMAN: "^xilinx_versal_virt$"
    <<: *buildman_and_testpy_dfn
  
  xtfpga test.py:
    tags: [ 'all' ]
    variables:
      TEST_PY_BD: "xtfpga"
      TEST_PY_TEST_SPEC: "not sleep"
1a62a7221   Tom Rini   gitlab-ci: Initia...
324
325
      TEST_PY_ID: "--id qemu"
      BUILDMAN: "^xtfpga$"
1a62a7221   Tom Rini   gitlab-ci: Initia...
326
    <<: *buildman_and_testpy_dfn