2024-03-20 11:51:46 +01:00
# Copyright 2024 The Forgejo Authors
# SPDX-License-Identifier: MIT
ACTIONS_DIR = " $( cd " $( dirname " ${ BASH_SOURCE [0] } " ) " && pwd ) "
function actions_verify_example( ) {
local example = $1
2024-04-07 20:25:02 +00:00
export HOST_PORT
2024-03-20 11:51:46 +01:00
export url = http://${ FORGEJO_USER } :${ FORGEJO_PASSWORD } @${ HOST_PORT }
export token = $( cat $DOT_FORGEJO_CURL /token)
actions_cleanup_example_volume
export example
export EXAMPLE_DIR = $ACTIONS_DIR /example-$example
if test -f $EXAMPLE_DIR /setup.sh ; then
echo " ============================ SETUP example- $example =================== "
bash -ex $EXAMPLE_DIR /setup.sh || return 1
fi
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
if test -f $EXAMPLE_DIR /teardown.sh ; then
echo " ============================ TEARDOWN example- $example =================== "
bash -ex $EXAMPLE_DIR /teardown.sh || return 1
fi
actions_save_contexts $example
}
function actions_save_contexts( ) {
local example = " $1 "
if test -d /srv/example/$example /contexts; then
mkdir -p /srv/contexts
rsync -av /srv/example/$example /contexts/ /srv/contexts/$example /
fi
}
function actions_cleanup_example_volume( ) {
if test $( id -u) != 0 ; then
$SUDO chown $( id -u) /srv
fi
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
2024-07-02 20:54:27 +02:00
forgejo-runner.sh setup '' '' http://${ HOST_PORT }
2024-03-20 11:51:46 +01:00
}
function actions_teardown( ) {
forgejo-curl.sh logout
forgejo-runner.sh teardown
2024-06-04 13:04:05 +02:00
stop_forgejo
2024-03-20 11:51:46 +01:00
}
2024-03-21 14:25:28 +01:00
function actions_runner_version( ) {
local runner_version = $( $DIR /forgejo-runner --version | sed -n -e 's/forgejo-runner version v//p' )
if test -z " $runner_version " ; then
$DIR /forgejo-runner --version
echo failed to parse version
false
fi
echo $runner_version
}
2024-03-20 11:51:46 +01:00
function test_actions( ) {
2024-04-25 12:39:48 +02:00
local versions = " ${ 1 :- 1 .21 $RELEASE_NUMBERS_AND_DEV } "
2024-03-20 11:51:46 +01:00
for version in $versions ; do
actions_setup $version
2024-03-21 14:25:28 +01:00
local runner_version = $( actions_runner_version)
2024-03-21 15:34:38 +01:00
log_info " Testing actions with Forgejo $version & Forgejo runner $runner_version "
2024-03-21 17:16:05 +01:00
if dpkg --compare-versions $version ge 7.0 && dpkg --compare-versions $runner_version gt 3.3.0 ; then
2024-03-21 14:25:28 +01:00
for example in artifacts-v4 ; do
run actions_verify_example $example
done
fi
2024-03-20 11:51:46 +01:00
2024-06-22 20:27:04 +02:00
for example in echo cache checkout service container expression local-action docker-action if if -fail push tag push-cancel artifacts pull-request context ; do
2024-03-20 11:51:46 +01:00
run actions_verify_example $example
done
2024-04-25 12:39:48 +02:00
if dpkg --compare-versions $version lt 7.1 ; then
2024-04-07 20:25:02 +00:00
for example in cron ; do
run actions_verify_example $example
done
fi
if dpkg --compare-versions $version ge 7.1 ; then
2024-05-27 16:57:05 +02:00
for example in automerge post-7-0-schedule ; do
2024-04-07 20:25:02 +00:00
run actions_verify_example $example
done
fi
2024-07-04 20:15:32 +02:00
if dpkg --compare-versions $version ge 8.0 ; then
for example in workflow-dispatch ; do
run actions_verify_example $example
done
fi
2024-03-20 11:51:46 +01:00
done
}