1
0
Fork 0
mirror of https://code.forgejo.org/actions/setup-forgejo synced 2024-09-19 09:56:16 +00:00
setup-forgejo/forgejo.sh

69 lines
2.6 KiB
Bash
Raw Normal View History

2023-03-24 21:42:52 +00:00
#!/bin/bash
2023-04-01 09:08:06 +00:00
# SPDX-License-Identifier: MIT
2023-03-24 21:42:52 +00:00
set -e
2023-09-24 14:54:52 +00:00
DIR=/tmp
if ${VERBOSE:-false}; then set -x; fi
: ${CONTAINER:=forgejo}
2023-03-24 21:42:52 +00:00
2023-03-25 13:34:41 +00:00
function run() {
local image="$1"
local version="$2"
2023-04-05 21:27:33 +00:00
if test "$version" != "1.19" && dpkg --compare-versions "$version" "lt" "1.19.0-3"; then
actions_unit="actions.actions"
else
actions_unit="repo.actions"
fi
2023-03-24 21:42:52 +00:00
2023-04-01 14:04:26 +00:00
docker run --restart unless-stopped --name ${CONTAINER} \
2023-03-24 21:42:52 +00:00
-e "RUN_MODE=dev" \
-e "FORGEJO__security__INSTALL_LOCK=true" \
-e "FORGEJO__log__LEVEL=trace" \
2023-03-24 21:42:52 +00:00
-e "FORGEJO__actions__ENABLED=true" \
-e "FORGEJO__queue__TYPE=immediate" \
-e "FORGEJO__queue.push_update__TYPE=immediate" \
2023-03-24 21:42:52 +00:00
-e "FORGEJO__repository__ENABLE_PUSH_CREATE_USER=true" \
2023-03-25 13:34:41 +00:00
-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" \
-d $image:$version
local ip="$(docker inspect -f "{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}" ${CONTAINER})"
2023-03-25 13:34:41 +00:00
echo $ip > forgejo-ip
docker exec ${CONTAINER} sed -i -e "s|localhost|$ip|" /data/gitea/conf/app.ini
docker restart ${CONTAINER}
2023-03-25 13:34:41 +00:00
}
function setup() {
local user="${1:-root}"
local password="${2:-admin1234}"
local image="${3:-codeberg.org/forgejo/forgejo}"
local version="${4:-1.20}"
2023-03-25 13:34:41 +00:00
run $image $version
2023-03-24 21:42:52 +00:00
sleep 5 # for some reason trying to run "forgejo admin" while forgejo is booting will permanently break everything
if docker exec --user 1000 ${CONTAINER} forgejo admin user list --admin | grep "$user" ; then
docker exec --user 1000 ${CONTAINER} forgejo admin user change-password --username "$user" --password "$password"
2023-03-24 21:42:52 +00:00
else
2023-09-24 14:54:52 +00:00
retry docker exec --user 1000 ${CONTAINER} forgejo admin user create --admin --username "$user" --password "$password" --email "$user@example.com"
2023-03-24 21:42:52 +00:00
fi
2023-09-24 14:54:52 +00:00
#
# The 'sudo' scope was removed in Forgejo v1.20 and is ignored
#
docker exec --user 1000 ${CONTAINER} forgejo admin user generate-access-token -u $user --raw --scopes 'all,sudo' > forgejo-token
2023-09-24 14:54:52 +00:00
retry forgejo-curl.sh --user "$user" --password "$password" --token @forgejo-token login http://$(cat forgejo-ip):3000
#
# Redundant with forgejo-curl.sh, kept around for backward compatibility 09/2023
#
2023-03-24 21:42:52 +00:00
( echo -n 'Authorization: token ' ; cat forgejo-token ) > forgejo-header
2023-03-25 13:34:41 +00:00
( echo "#!/bin/sh" ; echo 'curl -sS -H "Content-Type: application/json" -H @'$(pwd)/forgejo-header' "$@"' ) > forgejo-api && chmod +x forgejo-api
2023-03-24 21:42:52 +00:00
}
function teardown() {
docker stop ${CONTAINER} >& /dev/null || true
docker rm -f ${CONTAINER} >& /dev/null || true
2023-03-24 21:42:52 +00:00
}
"$@"