ci/bare-metal: Fix capturing of serial output as job artifacts.
[mesa.git] / .gitlab-ci / bare-metal / cros-servo.sh
1 #!/bin/bash
2
3 # Boot script for Chrome OS devices attached to a servo debug connector, using
4 # NFS and TFTP to boot.
5
6 # We're run from the root of the repo, make a helper var for our paths
7 BM=$CI_PROJECT_DIR/install/bare-metal
8
9 # Runner config checks
10 if [ -z "$BM_SERIAL" ]; then
11 echo "Must set BM_SERIAL in your gitlab-runner config.toml [[runners]] environment"
12 echo "This is the CPU serial device."
13 exit 1
14 fi
15
16 if [ -z "$BM_SERIAL_EC" ]; then
17 echo "Must set BM_SERIAL in your gitlab-runner config.toml [[runners]] environment"
18 echo "This is the EC serial device for controlling board power"
19 exit 1
20 fi
21
22 if [ ! -d /nfs ]; then
23 echo "NFS rootfs directory needs to be mounted at /nfs by the gitlab runner"
24 exit 1
25 fi
26
27 if [ ! -d /tftp ]; then
28 echo "TFTP directory for this board needs to be mounted at /tftp by the gitlab runner"
29 exit 1
30 fi
31
32 # job config checks
33 if [ -z "$BM_KERNEL" ]; then
34 echo "Must set BM_KERNEL to your board's kernel FIT image"
35 exit 1
36 fi
37
38 if [ -z "$BM_ROOTFS" ]; then
39 echo "Must set BM_ROOTFS to your board's rootfs directory in the job's variables"
40 exit 1
41 fi
42
43 if [ -z "$BM_CMDLINE" ]; then
44 echo "Must set BM_CMDLINE to your board's kernel command line arguments"
45 exit 1
46 fi
47
48 set -ex
49
50 # Clear out any previous run's artifacts.
51 rm -rf results/
52 mkdir -p results
53
54 # Create the rootfs in the NFS directory. rm to make sure it's in a pristine
55 # state, since it's volume-mounted on the host.
56 rsync -a --delete $BM_ROOTFS/ /nfs/
57 mkdir -p /nfs/results
58 . $BM/rootfs-setup.sh /nfs
59
60 # Set up the TFTP kernel/cmdline. When we support more than one board with
61 # this method, we'll need to do some check on the runner name or something.
62 rm -rf /tftp/*
63 cp $BM_KERNEL /tftp/vmlinuz
64 echo "$BM_CMDLINE" > /tftp/cmdline
65
66 set +e
67 python3 $BM/cros_servo_run.py \
68 --cpu $BM_SERIAL \
69 --ec $BM_SERIAL_EC
70 ret=$?
71 set -e
72
73 # Bring artifacts back from the NFS dir to the build dir where gitlab-runner
74 # will look for them.
75 cp -Rp /nfs/results/. results/
76
77 exit $ret