end-to-end/actions/example-schedule-noncancel/run.sh
2024-10-13 12:45:19 +02:00

92 lines
2.1 KiB
Bash
Executable file

repo=root/example-$example
#
# delete the repository
#
api=$url/api/v1
if forgejo-curl.sh api_json -X GET $api/repos/root/example-$example; then
forgejo-curl.sh api_json -X DELETE $api/repos/root/example-$example
fi
#
# push the repository
#
forgejo-test-helper.sh push_workflow actions/example-$example $url root example-$example setup-forgejo $token
# Prevent test failure because the db is occupied
sqlite3 $DIR/forgejo-work-path/forgejo.db "pragma busy_timeout=20000"
#
# get the run id of the workflow that just started
#
getScheduleRun() {
sqlite3 $DIR/forgejo-work-path/forgejo.db \
"select action_run.id \
from action_run \
inner join action_schedule on action_run.schedule_id = action_schedule.id \
inner join repository on action_schedule.repo_id = repository.id \
where repository.name = 'example-schedule-noncancel' \
order by action_run.created desc limit 1"
}
run_id=$(getScheduleRun)
while [ -z $run_id ]; do
echo waiting 5...
sleep 5
run_id=$(getScheduleRun)
done
echo Schedule run id: $run_id
#
# Wait for it to be started
#
checkStarted() {
sqlite3 $DIR/forgejo-work-path/forgejo.db \
"select id \
from action_run \
where id = $run_id \
and started is not null"
}
started_check=$(checkStarted)
while [ -z $started_check ]; do
echo waiting 2...
sleep 2
started_check=$(checkStarted)
done
echo Run has started
echo Push to repo again
#
# Push to the repo again
#
forgejo-test-helper.sh push_workflow actions/example-echo $url root example-$example setup-forgejo $token
echo Signal to the workflow that the push has happened
mkdir -p /srv/example/schedule-noncancel
touch /srv/example/schedule-noncancel/PUSHED
#
# Wait for the workflow to finish anyway
#
echo Wait for workflow to finish
checkFinished() {
sqlite3 $DIR/forgejo-work-path/forgejo.db \
"select status \
from action_run \
where id = $run_id \
and (status != 6 and status != 5)"
}
finished_status=$(checkFinished)
while [ -z $finished_status ]; do
echo waiting 5...
sleep 5
finished_status=$(checkFinished)
done
echo Workflow finished.
test $finished_status = 1