Blame view

.gitlab-ci.yml 9.14 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
7298d82d9   Tom Rini   gitlab-ci: Add qe...
5
  image: trini/u-boot-gitlab-ci-runner:xenial-20190720-02Aug2019
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
25
26
27
28
29
30
    - 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
      - grub-mkimage -o ~/grub_x86.efi -O i386-efi normal  echo lsefimmap lsefi lsefisystab efinet tftp minicmd
      - grub-mkimage -o ~/grub_x64.efi -O x86_64-efi normal  echo lsefimmap lsefi lsefisystab efinet tftp minicmd
      - 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...
31

1a62a7221   Tom Rini   gitlab-ci: Initia...
32
    after_script:
b29cb0588   Tom Rini   gitlab-ci: Switch...
33
      - rm -rf ~/grub2* /tmp/uboot-test-hooks /tmp/venv
1a62a7221   Tom Rini   gitlab-ci: Initia...
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
    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;
          tools/buildman/buildman -P -E ${BUILDMAN} ${OVERRIDE}|| ret=$?;
          if [[ $ret -ne 0 && $ret -ne 129 ]]; then
            tools/buildman/buildman -sdeP ${BUILDMAN};
            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.
      - export UBOOT_TRAVIS_BUILD_DIR=`cd .. && pwd`/.bm-work/${TEST_PY_BD};
b29cb0588   Tom Rini   gitlab-ci: Switch...
50
        export PATH=/opt/qemu/bin:/tmp/uboot-test-hooks/bin:/usr/bin:/bin;
1a62a7221   Tom Rini   gitlab-ci: Initia...
51
52
53
54
55
56
57
58
59
60
        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;
9f7bda104   Tom Rini   gitlab-ci: Split ...
61
  build all 32bit ARM plaforms:
1a62a7221   Tom Rini   gitlab-ci: Initia...
62
63
64
65
    tags: [ 'all' ]
    stage: world build
    script:
      - ret=0;
9f7bda104   Tom Rini   gitlab-ci: Split ...
66
67
68
69
70
71
72
73
74
75
       ./tools/buildman/buildman -P -E arm -x aarch64 || ret=$?;
       if [[ $ret -ne 0 && $ret -ne 129 ]]; then
         ./tools/buildman/buildman -sdeP;
         exit $ret;
       fi;
  
  build all 64bit ARM plaforms:
    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
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
      - ret=0;
       ./tools/buildman/buildman -P -E aarch64 || ret=$?;
       if [[ $ret -ne 0 && $ret -ne 129 ]]; then
         ./tools/buildman/buildman -sdeP;
         exit $ret;
       fi;
  
  build all PowerPC plaforms:
    tags: [ 'all' ]
    stage: world build
    script:
      - ret=0;
       ./tools/buildman/buildman -P -E powerpc || ret=$?;
       if [[ $ret -ne 0 && $ret -ne 129 ]]; then
         ./tools/buildman/buildman -sdeP;
         exit $ret;
       fi;
  
  build all other plaforms:
    tags: [ 'all' ]
    stage: world build
    script:
      - ret=0;
       ./tools/buildman/buildman -P -E -x arm,powerpc || ret=$?;
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
144
145
       if [[ $ret -ne 0 && $ret -ne 129 ]]; then
         ./tools/buildman/buildman -sdeP;
         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 ...
146
147
148
149
150
151
  # Ensure env tools build
  Build envtools:
    tags: [ 'all' ]
    stage: testsuites
    script:
      - make tools-only_config envtools -j$(nproc)
d7ae93215   Tom Rini   gitlab-ci: Consol...
152
  Run binman, buildman, dtoc and patman testsuites:
1a62a7221   Tom Rini   gitlab-ci: Initia...
153
154
155
    tags: [ 'all' ]
    stage: testsuites
    script:
d7ae93215   Tom Rini   gitlab-ci: Consol...
156
157
158
159
160
161
162
163
164
165
166
167
168
169
      - 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;
        export UBOOT_TRAVIS_BUILD_DIR=`cd .. && pwd`/.bm-work/sandbox_spl;
        export PYTHONPATH="${UBOOT_TRAVIS_BUILD_DIR}/scripts/dtc/pylibfdt";
        export PATH="${UBOOT_TRAVIS_BUILD_DIR}/scripts/dtc:${PATH}";
        ./tools/buildman/buildman -P sandbox_spl;
        ./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...
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
  
  # 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...
186
187
188
189
190
  evb-ast2500 test.py:
    tags: [ 'all' ]
    variables:
      TEST_PY_BD: "evb-ast2500"
      TEST_PY_ID: "--id qemu"
699c0b93d   Tom Rini   gitlab-ci: Add ev...
191
192
      BUILDMAN: "^evb-ast2500$"
    <<: *buildman_and_testpy_dfn
1a62a7221   Tom Rini   gitlab-ci: Initia...
193
194
195
196
197
198
199
200
201
202
203
204
  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...
205
206
207
208
209
210
211
212
      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...
213
214
215
216
217
218
219
220
221
      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...
222
223
224
225
226
227
228
229
      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...
230
231
232
233
234
235
236
237
      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...
238
239
240
241
242
243
244
245
      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...
246
      BUILDMAN: "^qemu_mips$"
1a62a7221   Tom Rini   gitlab-ci: Initia...
247
248
249
250
251
252
253
    <<: *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...
254
      BUILDMAN: "^qemu_mipsel$"
1a62a7221   Tom Rini   gitlab-ci: Initia...
255
256
257
258
259
260
261
    <<: *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...
262
      BUILDMAN: "^qemu_mips64$"
1a62a7221   Tom Rini   gitlab-ci: Initia...
263
264
265
266
267
268
269
    <<: *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...
270
      BUILDMAN: "^qemu_mips64el$"
1a62a7221   Tom Rini   gitlab-ci: Initia...
271
272
273
274
275
276
277
    <<: *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...
278
      BUILDMAN: "^qemu-ppce500$"
1a62a7221   Tom Rini   gitlab-ci: Initia...
279
    <<: *buildman_and_testpy_dfn
7298d82d9   Tom Rini   gitlab-ci: Add qe...
280
281
282
283
284
285
286
  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...
287
288
289
290
291
  qemu-x86 test.py:
    tags: [ 'all' ]
    variables:
      TEST_PY_BD: "qemu-x86"
      TEST_PY_TEST_SPEC: "not sleep"
1a62a7221   Tom Rini   gitlab-ci: Initia...
292
      BUILDMAN: "^qemu-x86$"
1a62a7221   Tom Rini   gitlab-ci: Initia...
293
294
295
296
297
298
299
    <<: *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...
300
      BUILDMAN: "^qemu-x86_64$"
1a62a7221   Tom Rini   gitlab-ci: Initia...
301
302
303
304
305
306
307
    <<: *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...
308
309
310
311
312
313
314
315
316
      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...
317
318
319
320
321
322
323
324
325
      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...
326
327
      TEST_PY_ID: "--id qemu"
      BUILDMAN: "^xtfpga$"
1a62a7221   Tom Rini   gitlab-ci: Initia...
328
    <<: *buildman_and_testpy_dfn