mirror of
https://code.forgejo.org/actions/setup-forgejo.git
synced 2024-11-23 18:21:12 -05:00
03cebf0f41
take stop_daemon from forgejo-runner.sh take retry from forgejo.sh
81 lines
1.7 KiB
Bash
81 lines
1.7 KiB
Bash
#!/bin/bash
|
|
# SPDX-License-Identifier: MIT
|
|
|
|
set -e
|
|
|
|
export DEBIAN_FRONTEND=noninteractive
|
|
|
|
: ${RETRY_DELAYS:=1 1 5 5 15 30}
|
|
|
|
function retry() {
|
|
local tmp=/tmp
|
|
rm -f $tmp/retry.out
|
|
success=false
|
|
for delay in $RETRY_DELAYS ; do
|
|
if "$@" >> $tmp/retry.out 2>&1 ; then
|
|
success=true
|
|
break
|
|
fi
|
|
cat $tmp/retry.out
|
|
echo waiting $delay
|
|
sleep $delay
|
|
done
|
|
if test $success = false ; then
|
|
cat $tmp/retry.out
|
|
return 1
|
|
fi
|
|
}
|
|
|
|
function stop_daemon() {
|
|
local daemon=$1
|
|
local dir=${2:-.}
|
|
|
|
if test -f $dir/$daemon-pid ; then
|
|
local pid=$(cat $dir/$daemon-pid)
|
|
kill -TERM $pid
|
|
pidwait $pid || true
|
|
for delay in 1 1 2 2 5 5 ; do
|
|
if ! test -f $dir/$daemon-pid ; then
|
|
break
|
|
fi
|
|
sleep $delay
|
|
done
|
|
! test -f $dir/$daemon-pid
|
|
fi
|
|
}
|
|
|
|
function dependency_go() {
|
|
go_version="1.21.4.linux-amd64" # Set the desired Go version here
|
|
|
|
if ! which wget tar > /dev/null ; then
|
|
apt-get install -y -qq wget tar
|
|
fi
|
|
|
|
if ! which go > /dev/null ; then
|
|
wget --quiet "https://go.dev/dl/go$go_version.tar.gz"
|
|
tar zxf "go$go_version.tar.gz"
|
|
export PATH="$(pwd)/go/bin:$PATH"
|
|
fi
|
|
}
|
|
|
|
function checkout() {
|
|
local git="$1"
|
|
git clone $git forgejo-runner
|
|
}
|
|
|
|
function build_runner() {
|
|
local git="$1"
|
|
local version="${2:-main}"
|
|
local dir=$(mktemp -d)
|
|
(
|
|
cd $dir
|
|
checkout "$git"
|
|
dependency_go
|
|
cd forgejo-runner
|
|
git checkout "$version"
|
|
make build
|
|
)
|
|
mv $dir/forgejo-runner/forgejo-runner /usr/local/bin
|
|
forgejo-runner --version
|
|
rm -fr "$dir"
|
|
}
|