aboutsummaryrefslogtreecommitdiffstats
path: root/.gitlab-ci.yml
blob: f43dc8f9410df1a06456f3314b8c074a307dbd01 (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
# Use our custom Crops-derived image
image: $CI_REGISTRY/$CI_PROJECT_NAMESPACE/yocto-builder:master

  # First do a common bootstrap, and then build all the targets
stages:
  - bootstrap
  - build

# Common job fragment to get a worker ready
.setup:
  # Retry because the runner is flakey (see https://gitlab.com/gitlab-org/gitlab-runner/-/issues/2890)
  retry: 2
  stage: build
  variables:
    KAS_WORK_DIR: $CI_PROJECT_DIR/work
    SSTATE_DIR: $CI_BUILDS_DIR/persist/sstate
    DL_DIR: $CI_BUILDS_DIR/persist/downloads
  before_script:
    - echo KAS_WORK_DIR = $KAS_WORK_DIR
    - echo SSTATE_DIR = $SSTATE_DIR
    - echo DL_DIR = $DL_DIR
    - mkdir --verbose --parents $KAS_WORK_DIR $SSTATE_DIR $DL_DIR

# Generalised fragment to do a Kas build
.build:
  extends: .setup
  script:
  - KASFILES=$(kas/jobs-to-kas $CI_JOB_NAME)
  - kas shell --update --force-checkout $KASFILES -c 'cat conf/*.conf'
  - kas build $KASFILES


#
# First phase, bootstrap and machine coverage
#

# Build a number of native tools first to ensure the other builders don't race
# over them
bootstrap:
  extends: .build
  stage: bootstrap
  variables:
    KAS_TARGET: binutils-cross-aarch64 gcc-cross-aarch64 python3-native opkg-native rpm-native
  script:
  - kas build kas/n1sdp.yml

# What percentage of machines in the layer do we build
machine-coverage:
  stage: bootstrap
  script:
  - ./kas/check-machine-coverage
  coverage: '/Coverage: \d+/'


#
# Second phase, the actual build jobs
#

corstone500:
  extends: .build

corstone700-fvp:
  extends: .build

corstone700-mps3:
  extends: .build

fvp-base:
  extends: .build

fvp-base-arm32:
  extends: .build

gem5-arm64:
  extends: .build

juno:
  extends: .build

juno/clang:
  extends: .build

musca-b1:
  extends: .build

musca-s1:
  extends: .build

n1sdp:
  extends: .build

qemuarm64-secureboot:
  extends: .build

qemuarm64-secureboot/clang:
  extends: .build

qemuarm64-secureboot/clang/musl:
  extends: .build

qemuarm64-secureboot/musl:
  extends: .build

sgi575:
  extends: .build

tc0:
  extends: .build


#
# Utility tasks, not executed automatically
#

# Report on disk usage
usage:
  extends: .setup
  stage: bootstrap
  when: manual
  script:
  - du -h -s $DL_DIR $SSTATE_DIR

# Wipe out old sstate
prune-sstate:
  extends: .setup
  stage: bootstrap
  when: manual
  script:
  - find $SSTATE_DIR -type f -atime +30 -delete