mirror of
https://code.forgejo.org/actions/setup-forgejo.git
synced 2025-02-22 07:51:03 -05:00
Merge pull request 'chore(cleanup): shfmt and .editorconfig applied to all scripts' (#296) from earl-warren/setup-forgejo:wip-shfmt into main
Reviewed-on: https://code.forgejo.org/actions/setup-forgejo/pulls/296
This commit is contained in:
commit
3897b689c2
7 changed files with 151 additions and 141 deletions
10
.editorconfig
Normal file
10
.editorconfig
Normal file
|
@ -0,0 +1,10 @@
|
||||||
|
root = true
|
||||||
|
|
||||||
|
[*]
|
||||||
|
indent_style = space
|
||||||
|
indent_size = 4
|
||||||
|
tab_width = 4
|
||||||
|
end_of_line = lf
|
||||||
|
charset = utf-8
|
||||||
|
trim_trailing_whitespace = true
|
||||||
|
insert_final_newline = true
|
|
@ -3,19 +3,13 @@
|
||||||
|
|
||||||
set -e
|
set -e
|
||||||
|
|
||||||
SELF_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
|
SELF_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||||
source $SELF_DIR/forgejo-lib.sh
|
source $SELF_DIR/forgejo-lib.sh
|
||||||
|
|
||||||
: ${DIR:=/tmp/forgejo-binary}
|
: ${DIR:=/tmp/forgejo-binary}
|
||||||
|
|
||||||
if ${VERBOSE:-false}; then set -x; fi
|
if ${VERBOSE:-false}; then set -x; fi
|
||||||
|
|
||||||
function maybe_sudo() {
|
|
||||||
if test $(id -u) != 0 ; then
|
|
||||||
SUDO=sudo
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
function ensure_user() {
|
function ensure_user() {
|
||||||
local user=$1
|
local user=$1
|
||||||
|
|
||||||
|
@ -28,7 +22,7 @@ function ensure_user() {
|
||||||
|
|
||||||
function dependencies() {
|
function dependencies() {
|
||||||
maybe_sudo
|
maybe_sudo
|
||||||
if ! which sudo curl daemon jq git-lfs ip sqlite3 envsubst unzip > /dev/null ; then
|
if ! which sudo curl daemon jq git-lfs ip sqlite3 envsubst unzip >/dev/null; then
|
||||||
$SUDO apt-get update -qq
|
$SUDO apt-get update -qq
|
||||||
$SUDO apt-get -q install -y -qq sudo curl daemon jq git-lfs iproute2 sqlite3 gettext-base unzip
|
$SUDO apt-get -q install -y -qq sudo curl daemon jq git-lfs iproute2 sqlite3 gettext-base unzip
|
||||||
fi
|
fi
|
||||||
|
@ -44,14 +38,14 @@ function cleanup_logs() {
|
||||||
function download() {
|
function download() {
|
||||||
local url="$1"
|
local url="$1"
|
||||||
|
|
||||||
if ! test -f $DIR/forgejo ; then
|
if ! test -f $DIR/forgejo; then
|
||||||
curl -sS $url > $DIR/forgejo.tmp
|
curl -sS $url >$DIR/forgejo.tmp
|
||||||
if file $DIR/forgejo.tmp | grep --quiet 'Zip archive' ; then
|
if file $DIR/forgejo.tmp | grep --quiet 'Zip archive'; then
|
||||||
unzip $DIR/forgejo.tmp -d $DIR
|
unzip $DIR/forgejo.tmp -d $DIR
|
||||||
rm -f $DIR/forgejo.tmp
|
rm -f $DIR/forgejo.tmp
|
||||||
else
|
else
|
||||||
mv $DIR/forgejo.tmp $DIR/forgejo
|
mv $DIR/forgejo.tmp $DIR/forgejo
|
||||||
fi
|
fi
|
||||||
chmod +x $DIR/forgejo
|
chmod +x $DIR/forgejo
|
||||||
fi
|
fi
|
||||||
echo $DIR/forgejo --version
|
echo $DIR/forgejo --version
|
||||||
|
@ -68,10 +62,10 @@ function create_user() {
|
||||||
fi
|
fi
|
||||||
|
|
||||||
$DIR/forgejocli admin user create --admin --username "$user" --password "$password" --email "$user@example.com"
|
$DIR/forgejocli admin user create --admin --username "$user" --password "$password" --email "$user@example.com"
|
||||||
$DIR/forgejocli admin user generate-access-token -u "$user" --raw --scopes all > $DIR/forgejo-token
|
$DIR/forgejocli admin user generate-access-token -u "$user" --raw --scopes all >$DIR/forgejo-token
|
||||||
local url="http://$(cat $DIR/forgejo-ip):3000"
|
local url="http://$(cat $DIR/forgejo-ip):3000"
|
||||||
echo "$url" > $DIR/forgejo-url
|
echo "$url" >$DIR/forgejo-url
|
||||||
echo "http://${user}:${password}@$(cat $DIR/forgejo-ip):3000" > $DIR/forgejo-auth-url
|
echo "http://${user}:${password}@$(cat $DIR/forgejo-ip):3000" >$DIR/forgejo-auth-url
|
||||||
retry forgejo-curl.sh --user "$user" --password "$password" --token @$DIR/forgejo-token login "$url"
|
retry forgejo-curl.sh --user "$user" --password "$password" --token @$DIR/forgejo-token login "$url"
|
||||||
echo forgejo-curl.sh api_json $url/api/forgejo/v1/version
|
echo forgejo-curl.sh api_json $url/api/forgejo/v1/version
|
||||||
forgejo-curl.sh api_json $url/api/forgejo/v1/version
|
forgejo-curl.sh api_json $url/api/forgejo/v1/version
|
||||||
|
@ -84,14 +78,14 @@ function myip() {
|
||||||
function start_forgejo() {
|
function start_forgejo() {
|
||||||
local work_path=$DIR/forgejo-work-path
|
local work_path=$DIR/forgejo-work-path
|
||||||
daemon --chdir=$DIR --unsafe --env="TERM=$TERM" --env="HOME=$HOME" --env="PATH=$PATH" --pidfile=$DIR/forgejo-pid --errlog=$DIR/forgejo-err.log --output=$DIR/forgejo-out.log -- $DIR/forgejo --config $work_path/app.ini --work-path $work_path
|
daemon --chdir=$DIR --unsafe --env="TERM=$TERM" --env="HOME=$HOME" --env="PATH=$PATH" --pidfile=$DIR/forgejo-pid --errlog=$DIR/forgejo-err.log --output=$DIR/forgejo-out.log -- $DIR/forgejo --config $work_path/app.ini --work-path $work_path
|
||||||
if ! retry grep --no-messages --quiet 'Starting server on' $work_path/log/forgejo.log ; then
|
if ! retry grep --no-messages --quiet 'Starting server on' $work_path/log/forgejo.log; then
|
||||||
cat $DIR/*.log
|
cat $DIR/*.log
|
||||||
cat $work_path/log/*.log
|
cat $work_path/log/*.log
|
||||||
return 1
|
return 1
|
||||||
fi
|
fi
|
||||||
echo "$DIR/forgejo --config $work_path/app.ini --work-path $work_path" '"$@"' > $DIR/forgejocli
|
echo "$DIR/forgejo --config $work_path/app.ini --work-path $work_path" '"$@"' >$DIR/forgejocli
|
||||||
chmod +x $DIR/forgejocli
|
chmod +x $DIR/forgejocli
|
||||||
myip > $DIR/forgejo-ip
|
myip >$DIR/forgejo-ip
|
||||||
}
|
}
|
||||||
|
|
||||||
function reset_forgejo() {
|
function reset_forgejo() {
|
||||||
|
@ -99,7 +93,7 @@ function reset_forgejo() {
|
||||||
local work_path=$DIR/forgejo-work-path
|
local work_path=$DIR/forgejo-work-path
|
||||||
rm -fr $work_path
|
rm -fr $work_path
|
||||||
mkdir -p $work_path
|
mkdir -p $work_path
|
||||||
IP=$(myip) WORK_PATH=$work_path envsubst < $SELF_DIR/$config-app.ini > $work_path/app.ini
|
IP=$(myip) WORK_PATH=$work_path envsubst <$SELF_DIR/$config-app.ini >$work_path/app.ini
|
||||||
}
|
}
|
||||||
|
|
||||||
function teardown() {
|
function teardown() {
|
||||||
|
|
|
@ -9,15 +9,15 @@ source $(dirname $0)/lxc-helpers-lib.sh
|
||||||
|
|
||||||
function install_docker() {
|
function install_docker() {
|
||||||
if ! systemctl is-active --quiet docker; then
|
if ! systemctl is-active --quiet docker; then
|
||||||
lxc_install_docker_inside
|
lxc_install_docker_inside
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
function install_other() {
|
function install_other() {
|
||||||
local packages="sudo git"
|
local packages="sudo git"
|
||||||
if ! which $packages ; then
|
if ! which $packages; then
|
||||||
apt-get update -qq
|
apt-get update -qq
|
||||||
apt-get install -y -qq $packages
|
apt-get install -y -qq $packages
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -11,8 +11,8 @@ function retry() {
|
||||||
local tmp=/tmp
|
local tmp=/tmp
|
||||||
rm -f $tmp/retry.out
|
rm -f $tmp/retry.out
|
||||||
success=false
|
success=false
|
||||||
for delay in $RETRY_DELAYS ; do
|
for delay in $RETRY_DELAYS; do
|
||||||
if "$@" >> $tmp/retry.out 2>&1 ; then
|
if "$@" >>$tmp/retry.out 2>&1; then
|
||||||
success=true
|
success=true
|
||||||
break
|
break
|
||||||
fi
|
fi
|
||||||
|
@ -20,7 +20,7 @@ function retry() {
|
||||||
echo waiting $delay
|
echo waiting $delay
|
||||||
sleep $delay
|
sleep $delay
|
||||||
done
|
done
|
||||||
if test $success = false ; then
|
if test $success = false; then
|
||||||
cat $tmp/retry.out
|
cat $tmp/retry.out
|
||||||
return 1
|
return 1
|
||||||
fi
|
fi
|
||||||
|
@ -30,12 +30,12 @@ function stop_daemon() {
|
||||||
local daemon=$1
|
local daemon=$1
|
||||||
local dir=${2:-.}
|
local dir=${2:-.}
|
||||||
|
|
||||||
if test -f $dir/$daemon-pid ; then
|
if test -f $dir/$daemon-pid; then
|
||||||
local pid=$(cat $dir/$daemon-pid)
|
local pid=$(cat $dir/$daemon-pid)
|
||||||
kill -TERM $pid
|
kill -TERM $pid
|
||||||
pidwait $pid || true
|
pidwait $pid || true
|
||||||
for delay in 1 1 2 2 5 5 ; do
|
for delay in 1 1 2 2 5 5; do
|
||||||
if ! test -f $dir/$daemon-pid ; then
|
if ! test -f $dir/$daemon-pid; then
|
||||||
break
|
break
|
||||||
fi
|
fi
|
||||||
sleep $delay
|
sleep $delay
|
||||||
|
@ -45,13 +45,13 @@ function stop_daemon() {
|
||||||
}
|
}
|
||||||
|
|
||||||
function dependency_go() {
|
function dependency_go() {
|
||||||
go_version="1.21.4.linux-amd64" # Set the desired Go version here
|
go_version="1.21.4.linux-amd64" # Set the desired Go version here
|
||||||
|
|
||||||
if ! which wget tar > /dev/null ; then
|
if ! which wget tar >/dev/null; then
|
||||||
apt-get install -y -qq wget tar
|
apt-get install -y -qq wget tar
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if ! which go > /dev/null ; then
|
if ! which go >/dev/null; then
|
||||||
wget --quiet "https://go.dev/dl/go$go_version.tar.gz"
|
wget --quiet "https://go.dev/dl/go$go_version.tar.gz"
|
||||||
tar zxf "go$go_version.tar.gz"
|
tar zxf "go$go_version.tar.gz"
|
||||||
export PATH="$(pwd)/go/bin:$PATH"
|
export PATH="$(pwd)/go/bin:$PATH"
|
||||||
|
@ -70,12 +70,12 @@ function build_runner() {
|
||||||
|
|
||||||
local tmp=$(mktemp -d)
|
local tmp=$(mktemp -d)
|
||||||
(
|
(
|
||||||
cd $tmp
|
cd $tmp
|
||||||
checkout "$git"
|
checkout "$git"
|
||||||
dependency_go
|
dependency_go
|
||||||
cd forgejo-runner
|
cd forgejo-runner
|
||||||
git checkout "$version"
|
git checkout "$version"
|
||||||
make build
|
make build
|
||||||
)
|
)
|
||||||
mv $tmp/forgejo-runner/forgejo-runner $dir
|
mv $tmp/forgejo-runner/forgejo-runner $dir
|
||||||
$dir/forgejo-runner --version
|
$dir/forgejo-runner --version
|
||||||
|
|
|
@ -4,15 +4,15 @@
|
||||||
set -e
|
set -e
|
||||||
|
|
||||||
PS4='${BASH_SOURCE[0]}:$LINENO: ${FUNCNAME[0]}: '
|
PS4='${BASH_SOURCE[0]}:$LINENO: ${FUNCNAME[0]}: '
|
||||||
SELF_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
|
SELF_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||||
source $SELF_DIR/forgejo-lib.sh
|
source $SELF_DIR/forgejo-lib.sh
|
||||||
|
|
||||||
: ${FORGEJO_RUNNER_CONFIG:=$SELF_DIR/runner-config.yaml}
|
: ${FORGEJO_RUNNER_CONFIG:=$SELF_DIR/runner-config.yaml}
|
||||||
: ${DIR:=$(pwd)}
|
: ${DIR:=$(pwd)}
|
||||||
|
|
||||||
function dependencies() {
|
function dependencies() {
|
||||||
if ! which make curl daemon > /dev/null ; then
|
if ! which make curl daemon >/dev/null; then
|
||||||
apt-get install -y -qq make curl daemon
|
apt-get install -y -qq make curl daemon
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -20,35 +20,35 @@ function download() {
|
||||||
local runner_repository="$1"
|
local runner_repository="$1"
|
||||||
local version="$2"
|
local version="$2"
|
||||||
|
|
||||||
if ! which $DIR/forgejo-runner > /dev/null; then
|
if ! which $DIR/forgejo-runner >/dev/null; then
|
||||||
if ! curl -L --fail -sS $runner_repository/releases/download/$version/forgejo-runner-${version#v}-linux-amd64 > $DIR/forgejo-runner ; then
|
if ! curl -L --fail -sS $runner_repository/releases/download/$version/forgejo-runner-${version#v}-linux-amd64 >$DIR/forgejo-runner; then
|
||||||
# backward compatibility for for the naming scheme prior to 3.0.0
|
# 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 > $DIR/forgejo-runner
|
curl -L --fail -sS $runner_repository/releases/download/$version/forgejo-runner-linux-amd64 >$DIR/forgejo-runner
|
||||||
fi
|
fi
|
||||||
chmod 755 $DIR/forgejo-runner
|
chmod 755 $DIR/forgejo-runner
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
function register() {
|
function register() {
|
||||||
local forgejo="$1"
|
local forgejo="$1"
|
||||||
mktemp -d > $DIR/forgejo-runner-home
|
mktemp -d >$DIR/forgejo-runner-home
|
||||||
$DIR/forgejocli actions generate-runner-token | tee $DIR/forgejo-runner-token
|
$DIR/forgejocli actions generate-runner-token | tee $DIR/forgejo-runner-token
|
||||||
(
|
(
|
||||||
cd $DIR
|
cd $DIR
|
||||||
timeout --signal=KILL 30 $DIR/forgejo-runner register --no-interactive --instance "$forgejo" --name runner --token $(cat $DIR/forgejo-runner-token) \
|
timeout --signal=KILL 30 $DIR/forgejo-runner register --no-interactive --instance "$forgejo" --name runner --token $(cat $DIR/forgejo-runner-token) \
|
||||||
--labels docker:docker://code.forgejo.org/oci/node:20-bookworm,docker-bookworm:docker://code.forgejo.org/oci/node:20-bookworm,lxc-bookworm:lxc://debian:bookworm,ubuntu-latest:docker://code.forgejo.org/oci/node:20-bookworm,self-hosted:lxc://debian:bookworm,lxc-bullseye:lxc://debian:bullseye
|
--labels docker:docker://code.forgejo.org/oci/node:20-bookworm,docker-bookworm:docker://code.forgejo.org/oci/node:20-bookworm,lxc-bookworm:lxc://debian:bookworm,ubuntu-latest:docker://code.forgejo.org/oci/node:20-bookworm,self-hosted:lxc://debian:bookworm,lxc-bullseye:lxc://debian:bullseye
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
function run() {
|
function run() {
|
||||||
rm -f $DIR/forgejo-runner.log
|
rm -f $DIR/forgejo-runner.log
|
||||||
daemon --chdir=$DIR --unsafe \
|
daemon --chdir=$DIR --unsafe \
|
||||||
--env="TERM=$TERM" --env="HOME=$(cat $DIR/forgejo-runner-home)" --env="PATH=$PATH" --env="USER=$USER" --env="TERM=dumb" --env="USERNAME=$USERNAME" --env="LANG=$LANG" \
|
--env="TERM=$TERM" --env="HOME=$(cat $DIR/forgejo-runner-home)" --env="PATH=$PATH" --env="USER=$USER" --env="TERM=dumb" --env="USERNAME=$USERNAME" --env="LANG=$LANG" \
|
||||||
--pidfile=$DIR/forgejo-runner-pid --errlog=$DIR/forgejo-runner.log --output=$DIR/forgejo-runner.log -- \
|
--pidfile=$DIR/forgejo-runner-pid --errlog=$DIR/forgejo-runner.log --output=$DIR/forgejo-runner.log -- \
|
||||||
$DIR/forgejo-runner --config $FORGEJO_RUNNER_CONFIG daemon
|
$DIR/forgejo-runner --config $FORGEJO_RUNNER_CONFIG daemon
|
||||||
sleep 1
|
sleep 1
|
||||||
cat $DIR/forgejo-runner.log
|
cat $DIR/forgejo-runner.log
|
||||||
}
|
}
|
||||||
|
|
||||||
function reload() {
|
function reload() {
|
||||||
teardown
|
teardown
|
||||||
|
@ -63,11 +63,11 @@ function setup() {
|
||||||
local forgejo="${3:-$(cat $DIR/forgejo-url)}"
|
local forgejo="${3:-$(cat $DIR/forgejo-url)}"
|
||||||
|
|
||||||
dependencies
|
dependencies
|
||||||
if [[ "$version" =~ ^@ ]] ; then
|
if [[ "$version" =~ ^@ ]]; then
|
||||||
local branch=${version##@}
|
local branch=${version##@}
|
||||||
build_runner $runner_repository $branch $DIR
|
build_runner $runner_repository $branch $DIR
|
||||||
else
|
else
|
||||||
download $runner_repository $version
|
download $runner_repository $version
|
||||||
fi
|
fi
|
||||||
register $forgejo
|
register $forgejo
|
||||||
run
|
run
|
||||||
|
@ -75,8 +75,8 @@ function setup() {
|
||||||
|
|
||||||
function teardown() {
|
function teardown() {
|
||||||
stop_daemon forgejo-runner $DIR
|
stop_daemon forgejo-runner $DIR
|
||||||
if test -f $DIR/forgejo-runner-home ; then
|
if test -f $DIR/forgejo-runner-home; then
|
||||||
rm -fr $(cat $DIR/forgejo-runner-home)
|
rm -fr $(cat $DIR/forgejo-runner-home)
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -3,7 +3,7 @@
|
||||||
|
|
||||||
set -ex
|
set -ex
|
||||||
|
|
||||||
SELF_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
|
SELF_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||||
source $SELF_DIR/forgejo-lib.sh
|
source $SELF_DIR/forgejo-lib.sh
|
||||||
|
|
||||||
: ${LOOPS:=80}
|
: ${LOOPS:=80}
|
||||||
|
@ -18,8 +18,8 @@ function branch_tip() {
|
||||||
local repo="$2"
|
local repo="$2"
|
||||||
local branch="$3"
|
local branch="$3"
|
||||||
|
|
||||||
forgejo.sh retry forgejo-curl.sh api_json $url/api/v1/repos/$repo/branches/$branch >& /dev/null
|
forgejo.sh retry forgejo-curl.sh api_json $url/api/v1/repos/$repo/branches/$branch >&/dev/null
|
||||||
forgejo-curl.sh api_json $url/api/v1/repos/$repo/branches/$branch | jq --raw-output .commit.id
|
forgejo-curl.sh api_json $url/api/v1/repos/$repo/branches/$branch | jq --raw-output .commit.id
|
||||||
}
|
}
|
||||||
|
|
||||||
function get_status() {
|
function get_status() {
|
||||||
|
@ -37,15 +37,15 @@ function check_status() {
|
||||||
local expected_status="$4"
|
local expected_status="$4"
|
||||||
local expected_description="$5"
|
local expected_description="$5"
|
||||||
|
|
||||||
get_status $url $repo $sha > /tmp/status.json
|
get_status $url $repo $sha >/tmp/status.json
|
||||||
local status="$(jq --raw-output .state < /tmp/status.json)"
|
local status="$(jq --raw-output .state </tmp/status.json)"
|
||||||
local description="$(jq --raw-output .statuses[0].description < /tmp/status.json)"
|
local description="$(jq --raw-output .statuses[0].description </tmp/status.json)"
|
||||||
if test "$status" = "$expected_status" && test -z "$expected_description" -o "$description" = "$expected_description"; then
|
if test "$status" = "$expected_status" && test -z "$expected_description" -o "$description" = "$expected_description"; then
|
||||||
echo OK
|
echo OK
|
||||||
elif test "$status" = "failure" -o "$status" = "success"; then
|
elif test "$status" = "failure" -o "$status" = "success"; then
|
||||||
echo NOK
|
echo NOK
|
||||||
else
|
else
|
||||||
echo RETRY
|
echo RETRY
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -69,16 +69,16 @@ function wait_status() {
|
||||||
local description="$5"
|
local description="$5"
|
||||||
|
|
||||||
for i in $(seq $LOOPS); do
|
for i in $(seq $LOOPS); do
|
||||||
if test $(check_status "$url" "$repo" "$sha" "$status" "$description") != RETRY ; then
|
if test $(check_status "$url" "$repo" "$sha" "$status" "$description") != RETRY; then
|
||||||
break
|
break
|
||||||
fi
|
fi
|
||||||
test "$FORGEJO_RUNNER_LOGS" && tail $FORGEJO_RUNNER_LOGS
|
test "$FORGEJO_RUNNER_LOGS" && tail $FORGEJO_RUNNER_LOGS
|
||||||
sleep $LOOP_DELAY
|
sleep $LOOP_DELAY
|
||||||
done
|
done
|
||||||
if test $(check_status "$url" "$repo" "$sha" "$status" "$description") != "OK" ; then
|
if test $(check_status "$url" "$repo" "$sha" "$status" "$description") != "OK"; then
|
||||||
get_status $url $repo $sha | jq .statuses
|
get_status $url $repo $sha | jq .statuses
|
||||||
test "$FORGEJO_RUNNER_LOGS" && cat $FORGEJO_RUNNER_LOGS
|
test "$FORGEJO_RUNNER_LOGS" && cat $FORGEJO_RUNNER_LOGS
|
||||||
return 1
|
return 1
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -95,23 +95,23 @@ function push() {
|
||||||
|
|
||||||
local workflows=$dir/.forgejo/workflows/*.yml
|
local workflows=$dir/.forgejo/workflows/*.yml
|
||||||
if test "$(echo $workflows)" != "$workflows"; then
|
if test "$(echo $workflows)" != "$workflows"; then
|
||||||
sed -i \
|
sed -i \
|
||||||
-e "s|SELF|$url/$owner/$self_action|g" \
|
-e "s|SELF|$url/$owner/$self_action|g" \
|
||||||
-e "s|FORGEJO_TOKEN|$token|g" \
|
-e "s|FORGEJO_TOKEN|$token|g" \
|
||||||
$dir/.forgejo/workflows/*.yml
|
$dir/.forgejo/workflows/*.yml
|
||||||
fi
|
fi
|
||||||
(
|
(
|
||||||
cd $dir
|
cd $dir
|
||||||
git init
|
git init
|
||||||
git checkout -b main
|
git checkout -b main
|
||||||
git config user.email root@example.com
|
git config user.email root@example.com
|
||||||
git config user.name username
|
git config user.name username
|
||||||
git add .
|
git add .
|
||||||
git commit -m 'initial commit'
|
git commit -m 'initial commit'
|
||||||
git remote add origin $url/$owner/$project
|
git remote add origin $url/$owner/$project
|
||||||
git push --force -u origin main
|
git push --force -u origin main
|
||||||
sha=$(git rev-parse HEAD)
|
sha=$(git rev-parse HEAD)
|
||||||
echo $sha > SHA
|
echo $sha >SHA
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -124,8 +124,8 @@ function push_workflow() {
|
||||||
local token="$6"
|
local token="$6"
|
||||||
|
|
||||||
if test -z "$token"; then
|
if test -z "$token"; then
|
||||||
echo missing token argument
|
echo missing token argument
|
||||||
return 1
|
return 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
push "$directory" "$url" "$owner" "$project" "$self_action" "$token"
|
push "$directory" "$url" "$owner" "$project" "$self_action" "$token"
|
||||||
|
@ -144,8 +144,8 @@ function run_workflow() {
|
||||||
}
|
}
|
||||||
|
|
||||||
function clear_runner_cache() {
|
function clear_runner_cache() {
|
||||||
if test -f $DIR/forgejo-runner-home ; then
|
if test -f $DIR/forgejo-runner-home; then
|
||||||
rm -fr $(cat $DIR/forgejo-runner-home)/.cache/act
|
rm -fr $(cat $DIR/forgejo-runner-home)/.cache/act
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -161,24 +161,24 @@ function push_self_action() {
|
||||||
git diff --exit-code
|
git diff --exit-code
|
||||||
git clone . $dir
|
git clone . $dir
|
||||||
(
|
(
|
||||||
cd $dir
|
cd $dir
|
||||||
rm -fr .forgejo .git
|
rm -fr .forgejo .git
|
||||||
git init
|
git init
|
||||||
git checkout -b main
|
git checkout -b main
|
||||||
git remote add origin "$url/$owner/$self_action"
|
git remote add origin "$url/$owner/$self_action"
|
||||||
git config user.email root@example.com
|
git config user.email root@example.com
|
||||||
git config user.name username
|
git config user.name username
|
||||||
git add .
|
git add .
|
||||||
git commit -m 'initial commit'
|
git commit -m 'initial commit'
|
||||||
git push --force origin main
|
git push --force origin main
|
||||||
git tag --force $tag HEAD
|
git tag --force $tag HEAD
|
||||||
git push --force origin $tag
|
git push --force origin $tag
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
function dependencies() {
|
function dependencies() {
|
||||||
if ! which jq curl > /dev/null ; then
|
if ! which jq curl >/dev/null; then
|
||||||
apt-get -qq install -y jq curl
|
apt-get -qq install -y jq curl
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
56
forgejo.sh
56
forgejo.sh
|
@ -3,7 +3,7 @@
|
||||||
|
|
||||||
set -e
|
set -e
|
||||||
|
|
||||||
SELF_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
|
SELF_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||||
source $SELF_DIR/forgejo-lib.sh
|
source $SELF_DIR/forgejo-lib.sh
|
||||||
|
|
||||||
if ${VERBOSE:-false}; then set -x; fi
|
if ${VERBOSE:-false}; then set -x; fi
|
||||||
|
@ -15,27 +15,27 @@ function run() {
|
||||||
local version="$2"
|
local version="$2"
|
||||||
|
|
||||||
if test "$version" != "1.19" && dpkg --compare-versions "$version" "lt" "1.19.0-3"; then
|
if test "$version" != "1.19" && dpkg --compare-versions "$version" "lt" "1.19.0-3"; then
|
||||||
actions_unit="actions.actions"
|
actions_unit="actions.actions"
|
||||||
else
|
else
|
||||||
actions_unit="repo.actions"
|
actions_unit="repo.actions"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
docker run --restart unless-stopped --name ${CONTAINER} \
|
docker run --restart unless-stopped --name ${CONTAINER} \
|
||||||
-e "RUN_MODE=dev" \
|
-e "RUN_MODE=dev" \
|
||||||
-e "FORGEJO__security__INSTALL_LOCK=true" \
|
-e "FORGEJO__security__INSTALL_LOCK=true" \
|
||||||
-e "FORGEJO__log__LEVEL=trace" \
|
-e "FORGEJO__log__LEVEL=trace" \
|
||||||
-e "FORGEJO__actions__ENABLED=true" \
|
-e "FORGEJO__actions__ENABLED=true" \
|
||||||
-e "FORGEJO__queue__TYPE=immediate" \
|
-e "FORGEJO__queue__TYPE=immediate" \
|
||||||
-e "FORGEJO__queue.push_update__TYPE=immediate" \
|
-e "FORGEJO__queue.push_update__TYPE=immediate" \
|
||||||
-e "FORGEJO__repository__ENABLE_PUSH_CREATE_USER=true" \
|
-e "FORGEJO__repository__ENABLE_PUSH_CREATE_USER=true" \
|
||||||
-e "FORGEJO__repository__DEFAULT_PUSH_CREATE_PRIVATE=false" \
|
-e "FORGEJO__repository__DEFAULT_PUSH_CREATE_PRIVATE=false" \
|
||||||
-e "FORGEJO__repository__DEFAULT_REPO_UNITS=repo.code,repo.releases,repo.issues,repo.pulls,repo.wiki,repo.projects,repo.packages,$actions_unit" \
|
-e "FORGEJO__repository__DEFAULT_REPO_UNITS=repo.code,repo.releases,repo.issues,repo.pulls,repo.wiki,repo.projects,repo.packages,$actions_unit" \
|
||||||
-d $image:$version
|
-d $image:$version
|
||||||
local ip="$(docker inspect -f "{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}" ${CONTAINER})"
|
local ip="$(docker inspect -f "{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}" ${CONTAINER})"
|
||||||
echo 'docker exec --user 1000 '${CONTAINER}' forgejo "$@"' > $DIR/forgejocli
|
echo 'docker exec --user 1000 '${CONTAINER}' forgejo "$@"' >$DIR/forgejocli
|
||||||
chmod +x $DIR/forgejocli
|
chmod +x $DIR/forgejocli
|
||||||
echo $ip > $DIR/forgejo-ip
|
echo $ip >$DIR/forgejo-ip
|
||||||
echo "http://$(cat $DIR/forgejo-ip):3000" > $DIR/forgejo-url
|
echo "http://$(cat $DIR/forgejo-ip):3000" >$DIR/forgejo-url
|
||||||
docker exec ${CONTAINER} sed -i -e "s|localhost|$ip|" /data/gitea/conf/app.ini
|
docker exec ${CONTAINER} sed -i -e "s|localhost|$ip|" /data/gitea/conf/app.ini
|
||||||
docker restart ${CONTAINER}
|
docker restart ${CONTAINER}
|
||||||
}
|
}
|
||||||
|
@ -49,27 +49,33 @@ function setup() {
|
||||||
run $image $version
|
run $image $version
|
||||||
|
|
||||||
sleep 5 # for some reason trying to run "forgejo admin" while forgejo is booting will permanently break everything
|
sleep 5 # for some reason trying to run "forgejo admin" while forgejo is booting will permanently break everything
|
||||||
if $DIR/forgejocli admin user list --admin | grep "$user" ; then
|
if $DIR/forgejocli admin user list --admin | grep "$user"; then
|
||||||
$DIR/forgejocli admin user change-password --username "$user" --password "$password"
|
$DIR/forgejocli admin user change-password --username "$user" --password "$password"
|
||||||
else
|
else
|
||||||
retry $DIR/forgejocli admin user create --admin --username "$user" --password "$password" --email "$user@example.com"
|
retry $DIR/forgejocli admin user create --admin --username "$user" --password "$password" --email "$user@example.com"
|
||||||
fi
|
fi
|
||||||
#
|
#
|
||||||
# The 'sudo' scope was removed in Forgejo v1.20 and is ignored
|
# The 'sudo' scope was removed in Forgejo v1.20 and is ignored
|
||||||
#
|
#
|
||||||
echo "http://${user}:${password}@$(cat $DIR/forgejo-ip):3000" > $DIR/forgejo-auth-url
|
echo "http://${user}:${password}@$(cat $DIR/forgejo-ip):3000" >$DIR/forgejo-auth-url
|
||||||
$DIR/forgejocli admin user generate-access-token -u $user --raw --scopes 'all,sudo' > $DIR/forgejo-token
|
$DIR/forgejocli admin user generate-access-token -u $user --raw --scopes 'all,sudo' >$DIR/forgejo-token
|
||||||
retry forgejo-curl.sh --user "$user" --password "$password" --token @$DIR/forgejo-token login http://$(cat $DIR/forgejo-ip):3000
|
retry forgejo-curl.sh --user "$user" --password "$password" --token @$DIR/forgejo-token login http://$(cat $DIR/forgejo-ip):3000
|
||||||
#
|
#
|
||||||
# Redundant with forgejo-curl.sh, kept around for backward compatibility 09/2023
|
# Redundant with forgejo-curl.sh, kept around for backward compatibility 09/2023
|
||||||
#
|
#
|
||||||
( echo -n 'Authorization: token ' ; cat $DIR/forgejo-token ) > $DIR/forgejo-header
|
(
|
||||||
( echo "#!/bin/sh" ; echo 'curl -sS -H "Content-Type: application/json" -H @'$DIR/forgejo-header' "$@"' ) > $DIR/forgejo-api && chmod +x $DIR/forgejo-api
|
echo -n 'Authorization: token '
|
||||||
|
cat $DIR/forgejo-token
|
||||||
|
) >$DIR/forgejo-header
|
||||||
|
(
|
||||||
|
echo "#!/bin/sh"
|
||||||
|
echo 'curl -sS -H "Content-Type: application/json" -H @'$DIR/forgejo-header' "$@"'
|
||||||
|
) >$DIR/forgejo-api && chmod +x $DIR/forgejo-api
|
||||||
}
|
}
|
||||||
|
|
||||||
function teardown() {
|
function teardown() {
|
||||||
docker stop ${CONTAINER} >& /dev/null || true
|
docker stop ${CONTAINER} >&/dev/null || true
|
||||||
docker rm -f ${CONTAINER} >& /dev/null || true
|
docker rm -f ${CONTAINER} >&/dev/null || true
|
||||||
}
|
}
|
||||||
|
|
||||||
"$@"
|
"$@"
|
||||||
|
|
Loading…
Add table
Reference in a new issue