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 # # get the run id of the workflow that just started # getScheduleRun() { rm -f $DIR/forgejo-work-path/forgejo.copy.db cp $DIR/forgejo-work-path/forgejo.db $DIR/forgejo-work-path/forgejo.copy.db sqlite3 $DIR/forgejo-work-path/forgejo.copy.db \ "pragma busy_timeout = 5000; \ 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" | sed '2q;d' } 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() { rm -f $DIR/forgejo-work-path/forgejo.copy.db cp $DIR/forgejo-work-path/forgejo.db $DIR/forgejo-work-path/forgejo.copy.db sqlite3 $DIR/forgejo-work-path/forgejo.copy.db \ "pragma busy_timeout = 5000; \ select id \ from action_run \ where id = $run_id \ and started is not null" | sed '2q;d' } 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() { rm -f $DIR/forgejo-work-path/forgejo.copy.db cp $DIR/forgejo-work-path/forgejo.db $DIR/forgejo-work-path/forgejo.copy.db sqlite3 $DIR/forgejo-work-path/forgejo.copy.db \ "pragma busy_timeout = 5000; \ select status \ from action_run \ where id = $run_id \ and (status != 6 and status != 5)" | sed '2q;d' } finished_status=$(checkFinished) while [ -z $finished_status ]; do echo waiting 5... sleep 5 finished_status=$(checkFinished) done echo Workflow finished. rm -f $DIR/forgejo-work-path/forgejo.copy.db test $finished_status = 1