Skip to content

Commit

Permalink
ci-automation: add hetzner testing
Browse files Browse the repository at this point in the history
No need for garbage collection since one temporary project is allocated with 1h of
lifespan for each run.

Signed-off-by: Mathieu Tortuyaux <[email protected]>
Co-authored-by: Julian Tölle <[email protected]>
  • Loading branch information
tormath1 and apricote committed Aug 27, 2024
1 parent 00606cb commit 43dddee
Show file tree
Hide file tree
Showing 2 changed files with 66 additions and 0 deletions.
7 changes: 7 additions & 0 deletions ci-automation/ci-config.env
Original file line number Diff line number Diff line change
Expand Up @@ -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}"
59 changes: 59 additions & 0 deletions ci-automation/vendor-testing/hetzner.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,59 @@
#!/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//+/-}"
kola_test_basename="${kola_test_basename//[+.]/-}"

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

0 comments on commit 43dddee

Please sign in to comment.