From 72fe7b98eaff90e1ca5e10691f983f5d891118be Mon Sep 17 00:00:00 2001 From: Eric Anholt Date: Mon, 8 Jun 2020 15:36:16 -0700 Subject: [PATCH] ci/bare-metal: Stop fetching the git tree. Like for LAVA, make the tradeoff of moving the test scripts and data (55k) into the artifacts in order to make the per-build jobs not have to pull down the git tree (hundreds of MB when you don't hit a cached container for your specific user, which I see happen multiple times a day in my CI runs). To do this, we have to be a bit more careful in some places about our working directory potentially being dirty. Reviewed-by: Christian Gmeiner Part-of: --- .gitlab-ci.yml | 7 ++++--- .gitlab-ci/bare-metal/cros-servo.sh | 7 ++++++- .gitlab-ci/bare-metal/fastboot.sh | 13 ++++++++----- .gitlab-ci/bare-metal/google-power-down.sh | 2 +- .gitlab-ci/bare-metal/google-power-up.sh | 4 ++-- .gitlab-ci/bare-metal/init.sh | 0 .gitlab-ci/prepare-artifacts.sh | 1 + 7 files changed, 22 insertions(+), 12 deletions(-) mode change 100644 => 100755 .gitlab-ci/bare-metal/init.sh diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 3f561c3b418..f561d96a3a5 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -885,13 +885,14 @@ arm64_a630_gles2: BM_CMDLINE: "ip=dhcp console=ttyMSM0,115200n8 root=/dev/nfs rw nfsrootdebug nfsroot=,tcp,nfsvers=4.2 init=/init" DEQP_EXPECTED_FAILS: deqp-freedreno-a630-fails.txt DEQP_SKIPS: deqp-freedreno-a630-skips.txt + GIT_STRATEGY: none NIR_VALIDATE: 0 DEQP_EXPECTED_RENDERER: FD630 DEQP_NO_SAVE_RESULTS: "" tags: - google-freedreno-cheza script: - - .gitlab-ci/bare-metal/cros-servo.sh + - ./install/bare-metal/cros-servo.sh arm64_a630_gles31: extends: arm64_a630_gles2 @@ -993,7 +994,7 @@ arm64_a306_gles2: DEQP_NO_SAVE_RESULTS: 1 # NIR_VALIDATE=0 left intentionally unset as a3xx is fast enough at its small testsuite. script: - - .gitlab-ci/bare-metal/fastboot.sh + - ./install/bare-metal/fastboot.sh needs: - arm_test-base - arm64_test @@ -1021,7 +1022,7 @@ arm64_a306_gles3_options: DEQP_VER: gles3 script: # Check that the non-constbuf UBO case works. - - DEQP_RUN_SUFFIX=-nouboopt IR3_SHADER_DEBUG=nouboopt DEQP_CASELIST_FILTER="functional.*ubo" .gitlab-ci/bare-metal/fastboot.sh + - DEQP_RUN_SUFFIX=-nouboopt IR3_SHADER_DEBUG=nouboopt DEQP_CASELIST_FILTER="functional.*ubo" ./install/bare-metal/fastboot.sh arm64_a530_gles2: extends: diff --git a/.gitlab-ci/bare-metal/cros-servo.sh b/.gitlab-ci/bare-metal/cros-servo.sh index 43982e07f96..091d24695d5 100755 --- a/.gitlab-ci/bare-metal/cros-servo.sh +++ b/.gitlab-ci/bare-metal/cros-servo.sh @@ -4,7 +4,7 @@ # NFS and TFTP to boot. # We're run from the root of the repo, make a helper var for our paths -BM=$CI_PROJECT_DIR/.gitlab-ci/bare-metal +BM=$CI_PROJECT_DIR/install/bare-metal # Runner config checks if [ -z "$BM_SERIAL" ]; then @@ -47,6 +47,11 @@ fi set -ex +# Clear out any previous run's artifacts. +rm -rf results/ +mkdir -p results +find artifacts/ -name serial\*.txt | xargs rm -f + # Create the rootfs in the NFS directory. rm to make sure it's in a pristine # state, since it's volume-mounted on the host. rsync -a --delete $BM_ROOTFS/ /nfs/ diff --git a/.gitlab-ci/bare-metal/fastboot.sh b/.gitlab-ci/bare-metal/fastboot.sh index 2b1edbac45b..2ed636f637c 100755 --- a/.gitlab-ci/bare-metal/fastboot.sh +++ b/.gitlab-ci/bare-metal/fastboot.sh @@ -1,6 +1,6 @@ #!/bin/bash -BM=$CI_PROJECT_DIR/.gitlab-ci/bare-metal +BM=$CI_PROJECT_DIR/install/bare-metal if [ -z "$BM_SERIAL" -a -z "$BM_SERIAL_SCRIPT" ]; then echo "Must set BM_SERIAL OR BM_SERIAL_SCRIPT in your gitlab-runner config.toml [[runners]] environment" @@ -47,11 +47,14 @@ fi set -ex -# Copy the rootfs to a temporary for our setup, as I believe changes to the -# container can end up impacting future runs. -cp -Rp $BM_ROOTFS/ rootfs +# Clear out any previous run's artifacts. +rm -rf results/ +mkdir -p results +find artifacts/ -name serial\*.txt | xargs rm -f -. .gitlab-ci/bare-metal/rootfs-setup.sh rootfs +# Create the rootfs in a temp dir +rsync -a --delete $BM_ROOTFS/ rootfs/ +. $BM/rootfs-setup.sh rootfs # Finally, pack it up into a cpio rootfs. Skip the vulkan CTS since none of # these devices use it and it would take up space in the initrd. diff --git a/.gitlab-ci/bare-metal/google-power-down.sh b/.gitlab-ci/bare-metal/google-power-down.sh index ffb6b4cc6df..9aa68a70d33 100755 --- a/.gitlab-ci/bare-metal/google-power-down.sh +++ b/.gitlab-ci/bare-metal/google-power-down.sh @@ -7,4 +7,4 @@ if [ -z "$relay" ]; then exit 1 fi -$CI_PROJECT_DIR/.gitlab-ci/bare-metal/google-power-relay.py off $relay +$CI_PROJECT_DIR/install/bare-metal/google-power-relay.py off $relay diff --git a/.gitlab-ci/bare-metal/google-power-up.sh b/.gitlab-ci/bare-metal/google-power-up.sh index 6f44c72b660..f0c054162a2 100755 --- a/.gitlab-ci/bare-metal/google-power-up.sh +++ b/.gitlab-ci/bare-metal/google-power-up.sh @@ -7,6 +7,6 @@ if [ -z "$relay" ]; then exit 1 fi -$CI_PROJECT_DIR/.gitlab-ci/bare-metal/google-power-relay.py off $relay +$CI_PROJECT_DIR/install/bare-metal/google-power-relay.py off $relay sleep 5 -$CI_PROJECT_DIR/.gitlab-ci/bare-metal/google-power-relay.py on $relay +$CI_PROJECT_DIR/install/bare-metal/google-power-relay.py on $relay diff --git a/.gitlab-ci/bare-metal/init.sh b/.gitlab-ci/bare-metal/init.sh old mode 100644 new mode 100755 diff --git a/.gitlab-ci/prepare-artifacts.sh b/.gitlab-ci/prepare-artifacts.sh index 86abacfdfd9..caeb8727160 100755 --- a/.gitlab-ci/prepare-artifacts.sh +++ b/.gitlab-ci/prepare-artifacts.sh @@ -23,6 +23,7 @@ find install -name \*.so -exec $STRIP {} \; # Test runs don't pull down the git tree, so put the dEQP helper # script and associated bits there. cp VERSION install/ +cp -Rp .gitlab-ci/bare-metal install/ cp -Rp .gitlab-ci/deqp* install/ cp -Rp .gitlab-ci/piglit install/ cp -Rp .gitlab-ci/traces.yml install/ -- 2.30.2