mirror of
https://github.com/flatcar/scripts.git
synced 2025-08-07 04:56:58 +02:00
Merge 602301d452
into 5cc0d8c40c
This commit is contained in:
commit
5bc744fe72
39
jenkins/kola/external-arm64.sh
Executable file
39
jenkins/kola/external-arm64.sh
Executable file
@ -0,0 +1,39 @@
|
||||
#!/bin/bash
|
||||
set -exu
|
||||
|
||||
set -o pipefail
|
||||
|
||||
if [[ "${DOWNLOAD_ROOT}" == gs://flatcar-jenkins-private/* ]]; then
|
||||
echo "Not supported"
|
||||
exit 1
|
||||
else
|
||||
BASE_URL="https://storage.googleapis.com/$(echo $DOWNLOAD_ROOT | sed 's|gs://||g')/boards/${BOARD}/${FLATCAR_VERSION}"
|
||||
fi
|
||||
|
||||
if [[ "${KOLA_TESTS}" == "" ]]; then
|
||||
KOLA_TESTS="*"
|
||||
fi
|
||||
|
||||
SCRIPTFOLDER="$(dirname "$(readlink -f "$0")")"
|
||||
|
||||
# TODO: start tor in container on TOR_PORT
|
||||
|
||||
# Do not expand the kola test patterns globs
|
||||
set -o noglob
|
||||
timeout --signal=SIGQUIT 24h bin/kola run \
|
||||
--board=arm64-usr \
|
||||
--basename="${NAME}" \
|
||||
--parallel=1 \
|
||||
--platform=external \
|
||||
--external-user=core \
|
||||
--external-password="${EXTERNAL_PASSWORD}" \
|
||||
--external-provisioning-cmds="$(echo BASE_URL=${BASE_URL}; cat "${SCRIPTFOLDER}/external-provisioning-cmds")" \
|
||||
--external-serial-console-cmd="$(cat "${SCRIPTFOLDER}/external-serial-console-cmd")" \
|
||||
--external-deprovisioning-cmds="$(cat "${SCRIPTFOLDER}/external-deprovisioning-cmds")" \
|
||||
--external-socks="127.0.0.1:${TOR_PORT}" \
|
||||
--external-host="${EXTERNAL_HOST}" \
|
||||
--channel="${GROUP}" \
|
||||
--tapfile="${JOB_NAME##*/}.tap" \
|
||||
--torcx-manifest=torcx_manifest.json \
|
||||
${KOLA_TESTS}
|
||||
set +o noglob
|
12
jenkins/kola/external-deprovisioning-cmds
Normal file
12
jenkins/kola/external-deprovisioning-cmds
Normal file
@ -0,0 +1,12 @@
|
||||
set -euo pipefail
|
||||
if [ "${IPADDR}" = "172.24.213.6" ]; then
|
||||
HOST="bmc-a"
|
||||
elif [ "${IPADDR}" = "172.24.213.5" ]; then
|
||||
HOST="bmc-b"
|
||||
else
|
||||
echo "Unknown ${IPADDR}"
|
||||
exit 1
|
||||
fi
|
||||
ipmitool -C3 -I lanplus -H "${HOST}" -U ADMIN -P ADMIN sol deactivate || true
|
||||
ipmitool -C3 -I lanplus -H "${HOST}" -U ADMIN -P ADMIN power off
|
||||
rm -f "/opt/pxe/last-boot-${HOST}"
|
100
jenkins/kola/external-provisioning-cmds
Normal file
100
jenkins/kola/external-provisioning-cmds
Normal file
@ -0,0 +1,100 @@
|
||||
set -euo pipefail
|
||||
|
||||
SOURCE="$(mktemp)"
|
||||
|
||||
while true; do
|
||||
touch "${SOURCE}" # update timestamp in case it takes a while to get the lock
|
||||
HOST="bmc-a"
|
||||
IPADDR="172.24.213.6"
|
||||
PXE="/opt/pxe/boot-mac-00-1b-21-e0-69-5b.ipxe"
|
||||
mv -n "${SOURCE}" "/opt/pxe/last-boot-${HOST}"
|
||||
# with -n there is a 0 exit code for both cases
|
||||
if [ ! -e "${SOURCE}" ]; then
|
||||
break
|
||||
fi
|
||||
HOST="bmc-b"
|
||||
IPADDR="172.24.213.5"
|
||||
PXE="/opt/pxe/boot-mac-00-1b-21-e0-6d-c0.ipxe"
|
||||
mv -n "${SOURCE}" "/opt/pxe/last-boot-${HOST}"
|
||||
if [ ! -e "${SOURCE}" ]; then
|
||||
break
|
||||
fi
|
||||
sleep 1
|
||||
done
|
||||
|
||||
BOOT_IGNITION="/opt/pxe/boot-${HOST}.ignition"
|
||||
BOOT_IGNITION_URL="http://172.24.213.1/boot-${HOST}.ignition"
|
||||
FINAL_IGNITION="/opt/pxe/final-${HOST}.ignition"
|
||||
FINAL_IGNITION_URL="http://172.24.213.1/final-${HOST}.ignition"
|
||||
PROVISION_SCRIPT="/opt/pxe/provision-${HOST}.sh"
|
||||
PROVISION_SCRIPT_URL="http://172.24.213.1/provision-${HOST}.sh"
|
||||
NOTIFY_PORT=$(shuf -i 3000-30000 -n 1)
|
||||
|
||||
echo "${USERDATA}" > "${FINAL_IGNITION}"
|
||||
|
||||
tee "${PXE}" >/dev/null <<-EOF
|
||||
#!ipxe
|
||||
kernel ${BASE_URL}/flatcar_production_pxe.vmlinuz initrd=flatcar_production_pxe_image.cpio.gz flatcar.first_boot=1 flatcar.autologin ignition.config.url=${BOOT_IGNITION_URL}
|
||||
initrd ${BASE_URL}/flatcar_production_pxe_image.cpio.gz
|
||||
boot
|
||||
EOF
|
||||
|
||||
tee "${PROVISION_SCRIPT}" >/dev/null <<-EOF
|
||||
#!/bin/bash
|
||||
set -euo pipefail
|
||||
curl -fsSL -o /final.ign ${FINAL_IGNITION_URL}
|
||||
curl -fsSL -o /image.bin.bz2 ${BASE_URL}/flatcar_production_image.bin.bz2
|
||||
flatcar-install -i /final.ign -s -f /image.bin.bz2
|
||||
echo done | ncat 172.24.213.1 ${NOTIFY_PORT}
|
||||
systemctl reboot
|
||||
EOF
|
||||
|
||||
tee "${BOOT_IGNITION}" >/dev/null <<EOF
|
||||
{
|
||||
"ignition": {
|
||||
"version": "2.2.0"
|
||||
},
|
||||
"systemd": {
|
||||
"units": [
|
||||
{
|
||||
"contents": "[Unit]\nDescription=Provision Flatcar\nRequires=network-online.target\nAfter=network-online.target\n[Service]\nType=oneshot\nRemainAfterExit=true\nRestart=on-failure\nExecStart=/provision\n[Install]\nWantedBy=multi-user.target\n",
|
||||
"enabled": true,
|
||||
"name": "provision.service"
|
||||
},
|
||||
{
|
||||
"name": "sshd.socket",
|
||||
"mask": true
|
||||
},
|
||||
{
|
||||
"name": "sshd.service",
|
||||
"mask": true
|
||||
}
|
||||
]
|
||||
},
|
||||
"storage": {
|
||||
"files": [
|
||||
{
|
||||
"filesystem": "root",
|
||||
"path": "/provision",
|
||||
"mode": 493,
|
||||
"contents": {
|
||||
"source": "${PROVISION_SCRIPT_URL}",
|
||||
"verification": {}
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
EOF
|
||||
|
||||
ipmitool -C3 -I lanplus -H "${HOST}" -U ADMIN -P ADMIN power off > /dev/stderr
|
||||
# persistent booting from disk
|
||||
ipmitool -C3 -I lanplus -H "${HOST}" -U ADMIN -P ADMIN raw 0x00 0x08 0x05 0xe0 0x08 0x00 0x00 0x00 > /dev/stderr
|
||||
# single boot from PXE
|
||||
ipmitool -C3 -I lanplus -H "${HOST}" -U ADMIN -P ADMIN chassis bootdev pxe options=efiboot > /dev/stderr
|
||||
ipmitool -C3 -I lanplus -H "${HOST}" -U ADMIN -P ADMIN power on > /dev/stderr
|
||||
# wait for writing to disk to succeed so that we don't boot an old instance
|
||||
ncat -l "${NOTIFY_PORT}" > /dev/stderr
|
||||
# Workaround: set booting from disk again because the boot parameter gets cleared on each boot (Boot parameter data: 0000000000) and we land in an efi shell
|
||||
ipmitool -C3 -I lanplus -H "${HOST}" -U ADMIN -P ADMIN raw 0x00 0x08 0x05 0xe0 0x08 0x00 0x00 0x00 > /dev/stderr
|
||||
echo "${IPADDR}"
|
11
jenkins/kola/external-serial-console-cmd
Normal file
11
jenkins/kola/external-serial-console-cmd
Normal file
@ -0,0 +1,11 @@
|
||||
set -euo pipefail
|
||||
if [ "${IPADDR}" = "172.24.213.6" ]; then
|
||||
HOST="bmc-a"
|
||||
elif [ "${IPADDR}" = "172.24.213.5" ]; then
|
||||
HOST="bmc-b"
|
||||
else
|
||||
echo "Unknown ${IPADDR}"
|
||||
exit 1
|
||||
fi
|
||||
ipmitool -C3 -I lanplus -H "${HOST}" -U ADMIN -P ADMIN sol deactivate || true
|
||||
ipmitool -C3 -I lanplus -H "${HOST}" -U ADMIN -P ADMIN sol activate
|
Loading…
Reference in New Issue
Block a user