xref: /OK3568_Linux_fs/buildroot/support/misc/gitlab-ci.yml.in (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1*4882a593Smuzhiyun.check-DEVELOPERS_base:
2*4882a593Smuzhiyun    # get-developers should print just "No action specified"; if it prints
3*4882a593Smuzhiyun    # anything else, it's a parse error.
4*4882a593Smuzhiyun    # The initial ! is removed by YAML so we need to quote it.
5*4882a593Smuzhiyun    script:
6*4882a593Smuzhiyun        - "! utils/get-developers | grep -v 'No action specified'"
7*4882a593Smuzhiyun
8*4882a593Smuzhiyun.check-flake8_base:
9*4882a593Smuzhiyun    script:
10*4882a593Smuzhiyun        - make check-flake8
11*4882a593Smuzhiyun
12*4882a593Smuzhiyun.check-package_base:
13*4882a593Smuzhiyun    script:
14*4882a593Smuzhiyun        - make check-package
15*4882a593Smuzhiyun
16*4882a593Smuzhiyun.defconfig_check:
17*4882a593Smuzhiyun    before_script:
18*4882a593Smuzhiyun        - DEFCONFIG_NAME=$(echo ${CI_JOB_NAME} | sed -e 's,_check$,,g')
19*4882a593Smuzhiyun    script:
20*4882a593Smuzhiyun        - echo "Configure Buildroot for ${DEFCONFIG_NAME}"
21*4882a593Smuzhiyun        - make ${DEFCONFIG_NAME}
22*4882a593Smuzhiyun        - support/scripts/check-dotconfig.py .config configs/${DEFCONFIG_NAME}
23*4882a593Smuzhiyun    artifacts:
24*4882a593Smuzhiyun        when: on_failure
25*4882a593Smuzhiyun        expire_in: 2 weeks
26*4882a593Smuzhiyun        paths:
27*4882a593Smuzhiyun            - .config
28*4882a593Smuzhiyun
29*4882a593Smuzhiyun.run_make: &run_make
30*4882a593Smuzhiyun    |
31*4882a593Smuzhiyun      make O=${OUTPUT_DIR} > >(tee build.log |grep '>>>') 2>&1 || {
32*4882a593Smuzhiyun          echo 'Failed build last output'
33*4882a593Smuzhiyun          tail -200 build.log
34*4882a593Smuzhiyun          exit 1
35*4882a593Smuzhiyun      }
36*4882a593Smuzhiyun
37*4882a593Smuzhiyun.defconfig_base:
38*4882a593Smuzhiyun    before_script:
39*4882a593Smuzhiyun        - DEFCONFIG_NAME=${CI_JOB_NAME}
40*4882a593Smuzhiyun        - OUTPUT_DIR=output
41*4882a593Smuzhiyun    script:
42*4882a593Smuzhiyun        - echo "Configure Buildroot for ${DEFCONFIG_NAME}"
43*4882a593Smuzhiyun        - make ${DEFCONFIG_NAME}
44*4882a593Smuzhiyun        - ./support/scripts/check-dotconfig.py .config ./configs/${DEFCONFIG_NAME}
45*4882a593Smuzhiyun        - echo 'Build buildroot'
46*4882a593Smuzhiyun        - *run_make
47*4882a593Smuzhiyun        - |
48*4882a593Smuzhiyun            ./support/scripts/boot-qemu-image.py "${DEFCONFIG_NAME}" > >(tee runtime-test.log) 2>&1 || {
49*4882a593Smuzhiyun                echo 'Failed runtime test last output'
50*4882a593Smuzhiyun                tail -200 runtime-test.log
51*4882a593Smuzhiyun                exit 1
52*4882a593Smuzhiyun            }
53*4882a593Smuzhiyun    artifacts:
54*4882a593Smuzhiyun        when: always
55*4882a593Smuzhiyun        expire_in: 2 weeks
56*4882a593Smuzhiyun        paths:
57*4882a593Smuzhiyun            - .config
58*4882a593Smuzhiyun            - build.log
59*4882a593Smuzhiyun            - output/images/
60*4882a593Smuzhiyun            - output/build/build-time.log
61*4882a593Smuzhiyun            - output/build/packages-file-list.txt
62*4882a593Smuzhiyun            - output/build/*/.config
63*4882a593Smuzhiyun            - runtime-test.log
64*4882a593Smuzhiyun
65*4882a593Smuzhiyun.runtime_test_base:
66*4882a593Smuzhiyun    before_script:
67*4882a593Smuzhiyun        - TEST_CASE_NAME=${CI_JOB_NAME}
68*4882a593Smuzhiyun    # Keep build directories so the rootfs can be an artifact of the job. The
69*4882a593Smuzhiyun    # runner will clean up those files for us.
70*4882a593Smuzhiyun    # Multiply every emulator timeout by 10 to avoid sporadic failures in
71*4882a593Smuzhiyun    # elastic runners.
72*4882a593Smuzhiyun    script:
73*4882a593Smuzhiyun        - echo "Starting runtime test ${TEST_CASE_NAME}"
74*4882a593Smuzhiyun        - ./support/testing/run-tests -o test-output/ -d test-dl/ -k --timeout-multiplier 10 ${TEST_CASE_NAME}
75*4882a593Smuzhiyun    artifacts:
76*4882a593Smuzhiyun        when: always
77*4882a593Smuzhiyun        expire_in: 2 weeks
78*4882a593Smuzhiyun        paths:
79*4882a593Smuzhiyun            - test-output/*.log
80*4882a593Smuzhiyun            - test-output/*/.config
81*4882a593Smuzhiyun            - test-output/*/images/*
82*4882a593Smuzhiyun
83*4882a593Smuzhiyun.test_pkg:
84*4882a593Smuzhiyun    stage: build
85*4882a593Smuzhiyun    before_script:
86*4882a593Smuzhiyun        - OUTPUT_DIR=${CI_JOB_NAME}
87*4882a593Smuzhiyun    script:
88*4882a593Smuzhiyun        - echo "Configure Buildroot for ${OUTPUT_DIR}"
89*4882a593Smuzhiyun        - make O=${OUTPUT_DIR} syncconfig
90*4882a593Smuzhiyun        - make O=${OUTPUT_DIR} savedefconfig
91*4882a593Smuzhiyun        - echo 'Build buildroot'
92*4882a593Smuzhiyun        - *run_make
93*4882a593Smuzhiyun    needs:
94*4882a593Smuzhiyun        - pipeline: $PARENT_PIPELINE_ID
95*4882a593Smuzhiyun          job: generate-gitlab-ci-yml
96*4882a593Smuzhiyun    artifacts:
97*4882a593Smuzhiyun        when: always
98*4882a593Smuzhiyun        expire_in: 2 weeks
99*4882a593Smuzhiyun        paths:
100*4882a593Smuzhiyun            - build.log
101*4882a593Smuzhiyun            - br-test-pkg/*/.config
102*4882a593Smuzhiyun            - br-test-pkg/*/defconfig
103*4882a593Smuzhiyun            - br-test-pkg/*/build/build-time.log
104*4882a593Smuzhiyun            - br-test-pkg/*/build/packages-file-list*.txt
105