diff options
Diffstat (limited to '.gitlab-ci/bare-metal/poe-powered.sh')
-rwxr-xr-x | .gitlab-ci/bare-metal/poe-powered.sh | 183 |
1 files changed, 0 insertions, 183 deletions
diff --git a/.gitlab-ci/bare-metal/poe-powered.sh b/.gitlab-ci/bare-metal/poe-powered.sh deleted file mode 100755 index 101fa606310..00000000000 --- a/.gitlab-ci/bare-metal/poe-powered.sh +++ /dev/null @@ -1,183 +0,0 @@ -#!/bin/bash -# shellcheck disable=SC1091 -# shellcheck disable=SC2034 -# shellcheck disable=SC2059 -# shellcheck disable=SC2086 # we want word splitting - -. "$SCRIPTS_DIR"/setup-test-env.sh - -# Boot script for devices attached to a PoE switch, using NFS for the root -# filesystem. - -# We're run from the root of the repo, make a helper var for our paths -BM=$CI_PROJECT_DIR/install/bare-metal -CI_COMMON=$CI_PROJECT_DIR/install/common - -# Runner config checks -if [ -z "$BM_SERIAL" ]; then - echo "Must set BM_SERIAL in your gitlab-runner config.toml [[runners]] environment" - echo "This is the serial port to listen the device." - exit 1 -fi - -if [ -z "$BM_POE_ADDRESS" ]; then - echo "Must set BM_POE_ADDRESS in your gitlab-runner config.toml [[runners]] environment" - echo "This is the PoE switch address to connect for powering up/down devices." - exit 1 -fi - -if [ -z "$BM_POE_INTERFACE" ]; then - echo "Must set BM_POE_INTERFACE in your gitlab-runner config.toml [[runners]] environment" - echo "This is the PoE switch interface where the device is connected." - exit 1 -fi - -if [ -z "$BM_POWERUP" ]; then - echo "Must set BM_POWERUP in your gitlab-runner config.toml [[runners]] environment" - echo "This is a shell script that should power up the device and begin its boot sequence." - exit 1 -fi - -if [ -z "$BM_POWERDOWN" ]; then - echo "Must set BM_POWERDOWN in your gitlab-runner config.toml [[runners]] environment" - echo "This is a shell script that should power off the device." - exit 1 -fi - -if [ ! -d /nfs ]; then - echo "NFS rootfs directory needs to be mounted at /nfs by the gitlab runner" - exit 1 -fi - -if [ ! -d /tftp ]; then - echo "TFTP directory for this board needs to be mounted at /tftp by the gitlab runner" - exit 1 -fi - -# job config checks -if [ -z "$BM_ROOTFS" ]; then - echo "Must set BM_ROOTFS to your board's rootfs directory in the job's variables" - exit 1 -fi - -if [ -z "$BM_BOOTFS" ]; then - echo "Must set /boot files for the TFTP boot in the job's variables" - exit 1 -fi - -if [ -z "$BM_CMDLINE" ]; then - echo "Must set BM_CMDLINE to your board's kernel command line arguments" - exit 1 -fi - -set -ex - -date +'%F %T' - -# Clear out any previous run's artifacts. -rm -rf results/ -mkdir -p results - -# 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/ - -date +'%F %T' - -# If BM_BOOTFS is an URL, download it -if echo $BM_BOOTFS | grep -q http; then - curl -L --retry 4 -f --retry-all-errors --retry-delay 60 \ - "${FDO_HTTP_CACHE_URI:-}$BM_BOOTFS" -o /tmp/bootfs.tar - BM_BOOTFS=/tmp/bootfs.tar -fi - -date +'%F %T' - -# If BM_BOOTFS is a file, assume it is a tarball and uncompress it -if [ -f $BM_BOOTFS ]; then - mkdir -p /tmp/bootfs - tar xf $BM_BOOTFS -C /tmp/bootfs - BM_BOOTFS=/tmp/bootfs -fi - -date +'%F %T' - -# Install kernel modules (it could be either in /lib/modules or -# /usr/lib/modules, but we want to install in the latter) -[ -d $BM_BOOTFS/usr/lib/modules ] && rsync -a $BM_BOOTFS/usr/lib/modules/ /nfs/usr/lib/modules/ -[ -d $BM_BOOTFS/lib/modules ] && rsync -a $BM_BOOTFS/lib/modules/ /nfs/lib/modules/ - -date +'%F %T' - -# Install kernel image + bootloader files -rsync -aL --delete $BM_BOOTFS/boot/ /tftp/ - -date +'%F %T' - -# Set up the pxelinux config for Jetson Nano -mkdir -p /tftp/pxelinux.cfg -cat <<EOF >/tftp/pxelinux.cfg/default-arm-tegra210-p3450-0000 -PROMPT 0 -TIMEOUT 30 -DEFAULT primary -MENU TITLE jetson nano boot options -LABEL primary - MENU LABEL CI kernel on TFTP - LINUX Image - FDT tegra210-p3450-0000.dtb - APPEND \${cbootargs} $BM_CMDLINE -EOF - -# Set up the pxelinux config for Jetson TK1 -cat <<EOF >/tftp/pxelinux.cfg/default-arm-tegra124-jetson-tk1 -PROMPT 0 -TIMEOUT 30 -DEFAULT primary -MENU TITLE jetson TK1 boot options -LABEL primary - MENU LABEL CI kernel on TFTP - LINUX zImage - FDT tegra124-jetson-tk1.dtb - APPEND \${cbootargs} $BM_CMDLINE -EOF - -# Create the rootfs in the NFS directory -mkdir -p /nfs/results -. $BM/rootfs-setup.sh /nfs - -date +'%F %T' - -echo "$BM_CMDLINE" > /tftp/cmdline.txt - -# Add some options in config.txt, if defined -if [ -n "$BM_BOOTCONFIG" ]; then - printf "$BM_BOOTCONFIG" >> /tftp/config.txt -fi - -set +e -ATTEMPTS=3 -while [ $((ATTEMPTS--)) -gt 0 ]; do - python3 $BM/poe_run.py \ - --dev="$BM_SERIAL" \ - --powerup="$BM_POWERUP" \ - --powerdown="$BM_POWERDOWN" \ - --test-timeout ${TEST_PHASE_TIMEOUT:-20} - ret=$? - - if [ $ret -eq 2 ]; then - echo "Did not detect boot sequence, retrying..." - else - ATTEMPTS=0 - fi -done -set -e - -date +'%F %T' - -# Bring artifacts back from the NFS dir to the build dir where gitlab-runner -# will look for them. -cp -Rp /nfs/results/. results/ - -date +'%F %T' - -exit $ret |