In the lifecycle of vX.Y.Z, all tests are run against vX.Y-test before it is published, including when the tag is pushed because the automated release process now runs end-to-end before pushing the release to forgejo-experimental. Running end-to-end against vX.Y-dev is therefore redundant with at least two other runs with exactly the same SHA (the one before the tag is pushed and the one when the tag is pushed). There would be value in doing that if it allowed to detect race conditions in Forgejo. But such races were not found in the past six months and there is a lot more scrutiny on commits merged in Forgejo which makes it even less likely than it was before. Running the tests on vX.Y instead of also including the built version provide the same coverage and reduces the workload.
128 lines
3.6 KiB
Bash
Executable file
128 lines
3.6 KiB
Bash
Executable file
# Copyright 2024 The Forgejo Authors
|
|
# SPDX-License-Identifier: MIT
|
|
|
|
ACTIONS_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
|
|
function actions_verify_example() {
|
|
local example=$1
|
|
|
|
export HOST_PORT
|
|
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
|
|
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')
|
|
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}"
|
|
|
|
for version in $versions; do
|
|
|
|
actions_setup $version
|
|
local runner_version=$(actions_runner_version)
|
|
|
|
log_info "Testing actions with Forgejo $version & Forgejo runner $runner_version"
|
|
|
|
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 echo cache checkout service container expression local-action docker-action if if-fail push tag push-cancel artifacts pull-request context; do
|
|
run actions_verify_example $example
|
|
done
|
|
|
|
if dpkg --compare-versions $version lt 7.1; then
|
|
for example in cron; do
|
|
run actions_verify_example $example
|
|
done
|
|
fi
|
|
|
|
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
|
|
|
|
if dpkg --compare-versions $version ge 8.0; then
|
|
for example in workflow-dispatch; do
|
|
run actions_verify_example $example
|
|
done
|
|
fi
|
|
done
|
|
}
|