aboutsummaryrefslogtreecommitdiffstats
path: root/.gitlab-ci.yml
blob: c94274cdbc2b873e04b2ec391ab4d9e0e804e0bf (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
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
image: ghcr.io/siemens/kas/kas:4.0

variables:
  CPU_REQUEST: ""
  DEFAULT_TAG: ""
  # These are needed as the k8s executor doesn't respect the container
  # entrypoint by default
  FF_USE_LEGACY_KUBERNETES_EXECUTION_STRATEGY: 0
  FF_KUBERNETES_HONOR_ENTRYPOINT: 1

stages:
  - prep
  - build

# Common job fragment to get a worker ready
.setup:
  tags:
    - $DEFAULT_TAG
  stage: build
  interruptible: true
  variables:
    KAS_WORK_DIR: $CI_PROJECT_DIR/work
    KAS_REPO_REF_DIR: $CI_BUILDS_DIR/persist/repos
    SSTATE_DIR: $CI_BUILDS_DIR/persist/sstate
    DL_DIR: $CI_BUILDS_DIR/persist/downloads
    BB_LOGCONFIG: $CI_PROJECT_DIR/ci/logging.yml
  before_script:
    - echo KAS_WORK_DIR = $KAS_WORK_DIR
    - echo SSTATE_DIR = $SSTATE_DIR
    - echo DL_DIR = $DL_DIR
    - rm -rf $KAS_WORK_DIR
    - mkdir --verbose --parents $KAS_WORK_DIR $KAS_REPO_REF_DIR $SSTATE_DIR $DL_DIR

# Generalised fragment to do a Kas build
.build:
  extends: .setup
  variables:
    KUBERNETES_CPU_REQUEST: $CPU_REQUEST
  script:
    - KASFILES=$(./ci/jobs-to-kas "$CI_JOB_NAME")
    - kas shell --update --force-checkout $KASFILES -c 'cat conf/*.conf'
    - kas build $KASFILES
    - ./ci/check-warnings $KAS_WORK_DIR/build/warnings.log
  artifacts:
    name: "logs"
    when: on_failure
    paths:
      - $CI_PROJECT_DIR/work/build/tmp/work*/**/temp/log.do_*.*

#
# Prep stage, update repositories once
#
update-repos:
  extends: .setup
  stage: prep
  script:
    - flock --verbose --timeout 60 $KAS_REPO_REF_DIR ./ci/update-repos


#
# Bootstrap stage, machine coverage
#

# What percentage of machines in the layer do we build
machine-coverage:
  stage: prep
  interruptible: true
  script:
    - ./ci/check-machine-coverage
  coverage: '/Coverage: \d+/'
  tags:
    - $DEFAULT_TAG

#
# Build stage, the actual build jobs
#

96b-avenger96:
  extends: .build

96b-nitrogen:
  extends: .build

arduino-nano-33-ble:
  extends: .build

frdm-kw41z:
  extends: .build

intel-x86-64:
  extends: .build

mps2-an385:
  extends: .build
  parallel:
    matrix:
      - TOOLCHAIN: [default, zephyr-toolchain]
        TESTING: testimage

mps2-an521:
  extends: .build
  parallel:
    matrix:
      - TOOLCHAIN: [default, zephyr-toolchain]
        TESTING: testimage

mps3-an547:
  extends: .build
  parallel:
    matrix:
      - TOOLCHAIN: [default, zephyr-toolchain]
        TESTING: testimage

nrf52840-mdk-usb-dongle:
  extends: .build

nrf52840dk-nrf52840:
  extends: .build

qemu-cortex-a53:
  extends: .build
  parallel:
    matrix:
      - TOOLCHAIN: [default, zephyr-toolchain]
        TESTING: testimage

qemu-cortex-a9:
  extends: .build
  parallel:
    matrix:
      - TOOLCHAIN: [default, zephyr-toolchain]
        TESTING: testimage

qemu-cortex-m0:
  extends: .build
  parallel:
    matrix:
      - TOOLCHAIN: [default, zephyr-toolchain]
        TESTING: testimage

qemu-cortex-m3:
  extends: .build
  parallel:
    matrix:
      - TOOLCHAIN: [default, zephyr-toolchain]
        TESTING: testimage

qemu-cortex-r5:
  extends: .build

qemu-nios2:
  extends: .build

qemu-x86:
  extends: .build
  parallel:
    matrix:
      - TOOLCHAIN: [default, zephyr-toolchain]
        TESTING: testimage

stm32mp157c-dk2:
  extends: .build

v2m-beetle:
  extends: .build

v2m-musca-b1:
  extends: .build

v2m-musca-s1:
  extends: .build