end-to-end/actions/actions.sh

154 lines
4.3 KiB
Bash
Raw Normal View History

# Copyright 2024 The Forgejo Authors
# SPDX-License-Identifier: MIT
2024-08-07 08:31:33 +02:00
ACTIONS_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
function actions_export_variables() {
2024-08-07 08:31:33 +02:00
export HOST_PORT
export url=http://${FORGEJO_USER}:${FORGEJO_PASSWORD}@${HOST_PORT}
export token=$(cat $DOT_FORGEJO_CURL/token)
}
function actions_verify_feature() {
local feature=$1
actions_export_variables
export FEATURE_DIR=$ACTIONS_DIR/feature-$feature
echo "============================ RUN feature-$feature ==================="
bash -ex $FEATURE_DIR/run.sh || return 1
}
function actions_verify_example() {
local example=$1
actions_export_variables
2024-08-07 08:31:33 +02:00
actions_cleanup_example_volume
2024-08-07 08:31:33 +02:00
export example
export EXAMPLE_DIR=$ACTIONS_DIR/example-$example
2024-08-07 08:31:33 +02:00
if test -f $EXAMPLE_DIR/setup.sh; then
echo "============================ SETUP example-$example ==================="
bash -ex $EXAMPLE_DIR/setup.sh || return 1
fi
2024-08-07 08:31:33 +02:00
if test -f $EXAMPLE_DIR/run.sh; then
echo "============================ RUN example-$example ==================="
bash -ex $EXAMPLE_DIR/run.sh || return 1
else
forgejo-test-helper.sh run_workflow actions/example-$example $url root example-$example $example $token || return 1
fi
2024-08-07 08:31:33 +02:00
if test -f $EXAMPLE_DIR/teardown.sh; then
echo "============================ TEARDOWN example-$example ==================="
bash -ex $EXAMPLE_DIR/teardown.sh || return 1
fi
2024-08-07 08:31:33 +02:00
actions_save_contexts $example
}
function actions_save_contexts() {
local example="$1"
if test -d /srv/example/$example/contexts; then
2024-08-07 08:31:33 +02:00
mkdir -p /srv/contexts
rsync -av /srv/example/$example/contexts/ /srv/contexts/$example/
fi
}
function actions_cleanup_example_volume() {
2024-08-07 08:31:33 +02:00
if test $(id -u) != 0; then
$SUDO chown $(id -u) /srv
fi
2024-08-07 08:31:33 +02:00
if ! test -d /srv/example; then
mkdir -p /srv/example
return
fi
$SUDO rm -fr /srv/example/*
}
function actions_setup() {
local version=$1
actions_teardown
reset_forgejo $ACTIONS_DIR/default-app.ini
start_forgejo $version
export FORGEJO_RUNNER_LOGS=$DIR/forgejo-runner.log
actions_cleanup_example_volume
export FORGEJO_RUNNER_CONFIG=$ACTIONS_DIR/runner-config.yaml
forgejo-runner.sh setup '' '' http://${HOST_PORT}
}
function actions_teardown() {
forgejo-curl.sh logout
forgejo-runner.sh teardown
stop_forgejo
}
function actions_runner_version() {
local runner_version=$($DIR/forgejo-runner --version | sed -n -e 's/forgejo-runner version v//p')
2024-08-07 08:31:33 +02:00
if test -z "$runner_version"; then
$DIR/forgejo-runner --version
echo failed to parse version
false
fi
echo $runner_version
}
function test_actions() {
local versions="${1:-$RELEASE_NUMBERS}"
2024-08-07 08:31:33 +02:00
for version in $versions; do
2024-08-07 08:31:33 +02:00
actions_setup $version
local runner_version=$(actions_runner_version)
2024-08-07 08:31:33 +02:00
log_info "Testing actions with Forgejo $version & Forgejo runner $runner_version"
2024-03-21 15:34:38 +01:00
run actions_verify_example echo
if dpkg --compare-versions $version ge 9.0; then
# depends on run actions_verify_example echo
# run it immediately after
run actions_verify_feature logs-compression
fi
if dpkg --compare-versions $version ge 7.0 && dpkg --compare-versions $runner_version gt 3.3.0; then
for example in artifacts-v4; do
run actions_verify_example $example
done
fi
for example in cache checkout service container expression local-action docker-action if if-fail push tag push-cancel artifacts pull-request context; do
2024-08-07 08:31:33 +02:00
run actions_verify_example $example
done
2024-08-07 08:31:33 +02:00
if dpkg --compare-versions $version lt 7.1; then
for example in cron; do
run actions_verify_example $example
done
fi
2024-08-07 08:31:33 +02:00
if dpkg --compare-versions $version ge 7.1; then
for example in automerge post-7-0-schedule; do
run actions_verify_example $example
done
fi
2024-08-07 08:31:33 +02:00
if dpkg --compare-versions $version ge 8.0; then
for example in workflow-dispatch; do
run actions_verify_example $example
done
fi
if dpkg --compare-versions $version ge 9.0; then
run actions_verify_example schedule-noncancel
fi
done
}