- .fdo.container-build@debian
- .container
variables:
- FDO_DISTRIBUTION_TAG: &arm_test-base "2020-07-09-cache"
+ FDO_DISTRIBUTION_TAG: &arm_test-base "2020-07-18-nginx"
.use-arm_test-base:
extends:
extends:
- .use-arm_test-base
variables:
- FDO_DISTRIBUTION_TAG: &arm64_test "2020-07-09-cache"
+ FDO_DISTRIBUTION_TAG: &arm64_test "2020-07-18-nginx"
.use-arm64_test:
variables:
exit 1
fi
+if [ -z "$BM_WEBDAV_IP" -o -z "$BM_WEBDAV_PORT" ]; then
+ echo "BM_WEBDAV_IP and/or BM_WEBDAV_PORT is not set - no results will be uploaded from DUT!"
+ WEBDAV_CMDLINE=""
+else
+ WEBDAV_CMDLINE="webdav=http://$BM_WEBDAV_IP:$BM_WEBDAV_PORT"
+fi
+
set -ex
# Clear out any previous run's artifacts.
--create artifacts/fastboot.img \
-k Image.gz-dtb \
-r rootfs.cpio.gz \
- -c cmdline="$BM_CMDLINE"
+ -c cmdline="$BM_CMDLINE $WEBDAV_CMDLINE"
rm Image.gz-dtb
+# Start nginx to get results from DUT
+if [ -n "$WEBDAV_CMDLINE" ]; then
+ ln -s `pwd`/results /results
+ sed -i s/80/$BM_WEBDAV_PORT/g /etc/nginx/sites-enabled/default
+ sed -i s/www-data/root/g /etc/nginx/nginx.conf
+ nginx
+fi
+
# Start watching serial, and power up the device.
if [ -n "$BM_SERIAL" ]; then
$BM/serial-buffer.py $BM_SERIAL | tee artifacts/serial-output.txt &
echo "nameserver 8.8.8.8" > /etc/resolv.conf
if sh $BARE_METAL_TEST_SCRIPT; then
+ OK=1
+else
+ OK=0
+fi
+
+# upload artifacts via webdav
+WEBDAV=$(cat /proc/cmdline | tr " " "\n" | grep webdav | cut -d '=' -f 2 || true)
+if [ -n "$WEBDAV" ]; then
+ find /results -type f -exec curl -T {} $WEBDAV/{} \;
+fi
+
+if [ $OK -eq 1 ]; then
echo "bare-metal result: pass"
else
echo "bare-metal result: fail"
--- /dev/null
+server {
+ listen 80 default_server;
+ listen [::]:80 default_server;
+
+ server_name _;
+
+ location / {
+ dav_methods PUT;
+ dav_ext_methods PROPFIND OPTIONS;
+ dav_access user:rw group:rw all:r;
+
+ client_body_temp_path /tmp;
+ client_max_body_size 0;
+ create_full_put_path on;
+
+ root /results;
+
+ autoindex on;
+ }
+}
flex \
git \
netcat \
+ nginx-full \
python3-distutils \
python3-minimal \
python3-serial \
apt install -t buster-backports -y --no-remove \
meson
+# setup nginx
+sed -i '/gzip_/ s/#\ //g' /etc/nginx/nginx.conf
+cp .gitlab-ci/bare-metal/nginx-default-site /etc/nginx/sites-enabled/default
+
. .gitlab-ci/container/container_post_build.sh
apt-get -y install --no-install-recommends \
ca-certificates \
+ curl \
initramfs-tools \
libpng16-16 \
strace \
gitlab-runner system, since the initramfs is what contains the Mesa
testing payload.
-The boards should have networking, so that (in a future iteration of
-this code) we can extract the dEQP .xml results to artifacts on
-gitlab.
+The boards should have networking, so that we can extract the dEQP .xml
+results to artifacts on gitlab.
Requirements (servo)
--------------------
serial console and fastboot USB devices (--device arguments don't
apply to devices that show up after container start, which is the case
with fastboot, and the servo serial devices are actually links to
-/dev/pts). We use host network mode so that we can (in the future)
-spin up a server to collect XML results for fastboot.
+/dev/pts). We use host network mode so that we can spin up a nginx
+server to collect XML results for fastboot.
Once you've added your boards, you're going to need to add a little
more customization in ``/etc/gitlab-runner/config.toml``. First, add
name = "google-freedreno-db410c-1"
environment = ["BM_SERIAL=/dev/ttyDB410c8", "BM_POWERUP=google-power-up.sh 8", "BM_FASTBOOT_SERIAL=15e9e390"]
+If you want to collect the results for fastboot you need to add the following
+two board-specific environment variables ``BM_WEBDAV_IP`` and ``BM_WEBDAV_PORT``.
+These represent the IP address of the docker host and the board specific port number
+that gets used to start a nginx server.
+
Once you've updated your runners' configs, restart with ``sudo service
gitlab-runner restart``