ci-automation: add hetzner testing

No need for garbage collection since one temporary project is allocated with 1h of
lifespan for each run.

Signed-off-by: Mathieu Tortuyaux <mtortuyaux@microsoft.com>
Co-authored-by: Julian Tölle <julian.toelle97@gmail.com>
This commit is contained in:
Mathieu Tortuyaux 2024-07-22 10:13:08 +02:00
parent abeddbd41b
commit ce763ff862
No known key found for this signature in database
GPG Key ID: AC5CCFB52545D9B8
2 changed files with 65 additions and 0 deletions

View File

@ -163,3 +163,10 @@ OPENSTACK_PARALLEL="${PARALLEL_TESTS:-3}"
: ${BRIGHTBOX_IMAGE_NAME:='flatcar_production_openstack_image.img'}
BRIGHTBOX_PARALLEL="${PARALLEL_TESTS:-1}"
: ${BRIGHTBOX_SERVER_TYPE:="2gb.ssd"}
# -- Hetzner --
: ${HETZNER_IMAGE_NAME:='flatcar_production_hetzner_image.bin.bz2'}
: ${HETZNER_amd64_INSTANCE_TYPE:="cpx11"}
: ${HETZNER_arm64_INSTANCE_TYPE:="cax11"}
HETZNER_PARALLEL="${PARALLEL_TESTS:-1}"
HETZNER_LOCATION="${HETZNER_LOCATION:-fsn1}"

View File

@ -0,0 +1,58 @@
#!/bin/bash
# Copyright (c) 2023 The Flatcar Maintainers.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
set -euo pipefail
# Test execution script for the Hetzner vendor.
# This script is supposed to run in the mantle container.
source ci-automation/vendor_test.sh
hetzner_instance_type_var="HETZNER_${CIA_ARCH}_INSTANCE_TYPE"
hetzner_instance_type="${!hetzner_instance_type_var}"
# HETZNER_TPS_TOKEN should be provided by sdk_container/.env
# We first need to create a temporary project using HETZNER_TPS_TOKEN
# When the project is created it returns a regular HETZNER_TOKEN that can be used
# in the next commands, it is a token similar to what you would get in your Hetzner console.
HETZNER_TOKEN=$(curl \
--fail-with-body \
--retry 2 \
--silent \
--user-agent "flatcar-ci/unknown" \
--request POST \
--header "Authorization: Bearer ${HETZNER_TPS_TOKEN}" \
https://tps.hc-integrations.de
)
# Upload the image on Hetzner.
IMAGE_ID=$(ore hetzner \
--hetzner-token="${HETZNER_TOKEN}" \
--hetzner-location="${HETZNER_LOCATION}" \
create-image \
--board="${CIA_ARCH}-usr" \
--name flatcar-"${CIA_VERNUM}" \
--file="https://${BUILDCACHE_SERVER}/images/${CIA_ARCH}/${CIA_VERNUM}/${HETZNER_IMAGE_NAME}"
)
kola_test_basename="ci-${CIA_VERNUM//[+.]/-}"
set -x
timeout --signal=SIGQUIT 2h kola run \
--board="${CIA_ARCH}-usr" \
--parallel="${HETZNER_PARALLEL}" \
--tapfile="${CIA_TAPFILE}" \
--channel="${CIA_CHANNEL}" \
--basename="${kola_test_basename}" \
--platform=hetzner \
--hetzner-token="${HETZNER_TOKEN}" \
--hetzner-server-type="${hetzner_instance_type}" \
--hetzner-location="${HETZNER_LOCATION}" \
--hetzner-image=${IMAGE_ID} \
"${@}"
set +x