mirror of
https://code.forgejo.org/actions/setup-forgejo.git
synced 2024-11-23 23:01:00 -05:00
87d8b85700
if the cache is not cleared, the action that was just uploaded with the latest changes won't be used, the cached version will.
85 lines
2.5 KiB
Bash
Executable file
85 lines
2.5 KiB
Bash
Executable file
#!/bin/bash
|
|
# SPDX-License-Identifier: MIT
|
|
|
|
set -ex
|
|
|
|
SELF_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
|
|
: ${FORGEJO_RUNNER_CONFIG:=$SELF_DIR/runner-config.yaml}
|
|
|
|
function dependencies() {
|
|
if ! which curl daemon > /dev/null ; then
|
|
apt-get install -y -qq curl daemon
|
|
fi
|
|
}
|
|
|
|
function download() {
|
|
local runner_repository="$1"
|
|
local version="$2"
|
|
|
|
if ! which forgejo-runner > /dev/null; then
|
|
if ! curl -L --fail -sS $runner_repository/releases/download/$version/forgejo-runner-${version#v}-linux-amd64 > /bin/forgejo-runner ; then
|
|
# backward compatibility for for the naming scheme prior to 3.0.0
|
|
curl -L --fail -sS $runner_repository/releases/download/$version/forgejo-runner-linux-amd64 > /bin/forgejo-runner
|
|
fi
|
|
chmod 755 /bin/forgejo-runner
|
|
fi
|
|
}
|
|
|
|
function register() {
|
|
local forgejo="$1"
|
|
mktemp -d > forgejo-runner-home
|
|
docker exec --user 1000 forgejo forgejo actions generate-runner-token > forgejo-runner-token
|
|
timeout --signal=KILL 30 forgejo-runner register --no-interactive --instance "$forgejo" --name runner --token $(cat forgejo-runner-token) --labels docker:docker://code.forgejo.org/oci/node:16-bullseye,ubuntu-latest:docker://code.forgejo.org/oci/node:16-buster,self-hosted
|
|
}
|
|
|
|
function run() {
|
|
rm -f forgejo-runner.log
|
|
daemon --chdir=$(pwd) --unsafe \
|
|
--env="TERM=$TERM" --env="HOME=$(cat forgejo-runner-home)" --env="PATH=$PATH" --env="USER=$USER" --env="TERM=dumb" --env="USERNAME=$USERNAME" --env="LANG=$LANG" \
|
|
--pidfile=$(pwd)/forgejo-runner-pid --errlog=$(pwd)/forgejo-runner.log --output=$(pwd)/forgejo-runner.log -- \
|
|
forgejo-runner --config $FORGEJO_RUNNER_CONFIG daemon
|
|
sleep 1
|
|
cat forgejo-runner.log
|
|
}
|
|
|
|
function reload() {
|
|
teardown
|
|
rm -f forgejo-runner.log
|
|
run
|
|
}
|
|
|
|
function setup() {
|
|
local runner_repository="${1:-https://code.forgejo.org/forgejo/runner}"
|
|
local version="${2:-v3.0.1}"
|
|
local forgejo="${3:-http://$(cat forgejo-ip):3000/}"
|
|
|
|
dependencies
|
|
download $runner_repository $version
|
|
register $forgejo
|
|
run
|
|
}
|
|
|
|
function stop_daemon() {
|
|
local daemon=$1
|
|
local DIR=.
|
|
|
|
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 teardown() {
|
|
stop_daemon forgejo-runner
|
|
rm -fr $(cat forgejo-runner-home)
|
|
}
|
|
|
|
"$@"
|