1
1
#! /usr/bin/env bash
2
- # This is an update script for gitea installed via the binary distribution
3
- # from dl.gitea.io on linux as systemd service. It performs a backup and updates
4
- # Gitea in place.
5
- # NOTE: This adds the GPG Signing Key of the Gitea maintainers to the keyring.
2
+ # This is an update script for forgejo installed via the binary distribution
3
+ # from codeberg.org/forgejo/forgejo on linux as systemd service. It
4
+ # performs a backup and updates Forgejo in place.
5
+ # NOTE: This adds the GPG Signing Key of the Forgejo maintainers to the keyring.
6
6
# Depends on: bash, curl, xz, sha256sum. optionally jq, gpg
7
7
# See section below for available environment vars.
8
8
# When no version is specified, updates to the latest release.
9
9
# Examples:
10
10
# upgrade.sh 1.15.10
11
- # giteahome =/opt/gitea giteaconf=$giteahome /app.ini upgrade.sh
11
+ # forgejohome =/opt/forgejo forgejoconf=$forgejohome /app.ini upgrade.sh
12
12
13
13
# apply variables from environment
14
- : " ${giteabin := " /usr/local/bin/gitea " } "
15
- : " ${giteahome := " /var/lib/gitea " } "
16
- : " ${giteaconf := " /etc/gitea /app.ini" } "
17
- : " ${giteauser := " git" } "
14
+ : " ${forgejobin := " /usr/local/bin/forgejo " } "
15
+ : " ${forgejohome := " /var/lib/forgejo " } "
16
+ : " ${forgejoconf := " /etc/forgejo /app.ini" } "
17
+ : " ${forgejouser := " git" } "
18
18
: " ${sudocmd:= " sudo" } "
19
19
: " ${arch:= " linux-amd64" } "
20
- : " ${service_start:= " $sudocmd systemctl start gitea " } "
21
- : " ${service_stop:= " $sudocmd systemctl stop gitea " } "
22
- : " ${service_status:= " $sudocmd systemctl status gitea " } "
23
- : " ${backupopts:= " " } " # see `gitea dump --help` for available options
20
+ : " ${service_start:= " $sudocmd systemctl start forgejo " } "
21
+ : " ${service_stop:= " $sudocmd systemctl stop forgejo " } "
22
+ : " ${service_status:= " $sudocmd systemctl status forgejo " } "
23
+ : " ${backupopts:= " " } " # see `forgejo dump --help` for available options
24
24
25
- function giteacmd {
25
+ function forgejocmd {
26
26
if [[ $sudocmd = " su" ]]; then
27
27
# `-c` only accept one string as argument.
28
- " $sudocmd " - " $giteauser " -c " $( printf " %q " " $giteabin " " --config" " $giteaconf " " --work-path" " $giteahome " " $@ " ) "
28
+ " $sudocmd " - " $forgejouser " -c " $( printf " %q " " $forgejobin " " --config" " $forgejoconf " " --work-path" " $forgejohome " " $@ " ) "
29
29
else
30
- " $sudocmd " --user " $giteauser " " $giteabin " --config " $giteaconf " --work-path " $giteahome " " $@ "
30
+ " $sudocmd " --user " $forgejouser " " $forgejobin " --config " $forgejoconf " --work-path " $forgejohome " " $@ "
31
31
fi
32
32
}
33
33
@@ -40,7 +40,7 @@ function require {
40
40
# parse command line arguments
41
41
while true ; do
42
42
case " $1 " in
43
- -v | --version ) giteaversion =" $2 " ; shift 2 ;;
43
+ -v | --version ) forgejoversion =" $2 " ; shift 2 ;;
44
44
-y | --yes ) no_confirm=" yes" ; shift ;;
45
45
--ignore-gpg) ignore_gpg=" yes" ; shift ;;
46
46
" " | -- ) shift ; break ;;
@@ -56,9 +56,9 @@ if [[ -f /etc/os-release ]]; then
56
56
57
57
if [[ " $os_release " =~ " OpenWrt" ]]; then
58
58
sudocmd=" su"
59
- service_start=" /etc/init.d/gitea start"
60
- service_stop=" /etc/init.d/gitea stop"
61
- service_status=" /etc/init.d/gitea status"
59
+ service_start=" /etc/init.d/forgejo start"
60
+ service_stop=" /etc/init.d/forgejo stop"
61
+ service_status=" /etc/init.d/forgejo status"
62
62
else
63
63
require systemctl
64
64
fi
67
67
require curl xz sha256sum " $sudocmd "
68
68
69
69
# select version to install
70
- if [[ -z " ${giteaversion :- } " ]]; then
70
+ if [[ -z " ${forgejoversion :- } " ]]; then
71
71
require jq
72
- giteaversion =$( curl --connect-timeout 10 -sL https://dl.gitea.io/gitea/version. json | jq -r .latest.version )
73
- echo " Latest available version is $giteaversion "
72
+ forgejoversion =$( curl --connect-timeout 10 -sL ' https://codeberg.org/api/v1/repos/forgejo/forgejo/releases?draft=false&pre-release=false&limit=1 ' -H ' accept: application/ json' | jq -r ' .[0].tag_name | sub("v"; "") ' )
73
+ echo " Latest available version is $forgejoversion "
74
74
fi
75
75
76
76
# confirm update
77
77
echo " Checking currently installed version..."
78
- current=$( giteacmd --version | cut -d ' ' -f 3)
79
- [[ " $current " == " $giteaversion " ]] && echo " $current is already installed, stopping." && exit 1
78
+ current=$( forgejocmd --version | cut -d ' ' -f 3)
79
+ [[ " $current " == " $forgejoversion " ]] && echo " $current is already installed, stopping." && exit 1
80
80
if [[ -z " ${no_confirm:- } " ]]; then
81
- echo " Make sure to read the changelog first: https://github.com/go-gitea/gitea/blob/main /CHANGELOG.md"
82
- echo " Are you ready to update Gitea from ${current} to ${giteaversion } ? (y/N)"
81
+ echo " Make sure to read the changelog first: https://codeberg.org/forgejo/forgejo/src/branch/forgejo /CHANGELOG.md"
82
+ echo " Are you ready to update forgejo from ${current} to ${forgejoversion } ? (y/N)"
83
83
read -r confirm
84
84
[[ " $confirm " == " y" ]] || [[ " $confirm " == " Y" ]] || exit 1
85
85
fi
86
86
87
- echo " Upgrading gitea from $current to $giteaversion ..."
87
+ echo " Upgrading forgejo from $current to $forgejoversion ..."
88
88
89
89
pushd " $( pwd) " & > /dev/null
90
- cd " $giteahome " # needed for gitea dump later
90
+ cd " $forgejohome " # needed for forgejo dump later
91
91
92
92
# download new binary
93
- binname=" gitea -${giteaversion } -${arch} "
94
- binurl=" https://dl.gitea.io/gitea/ ${giteaversion } /${binname} .xz"
93
+ binname=" forgejo -${forgejoversion } -${arch} "
94
+ binurl=" https://codeberg.org/forgejo/forgejo/releases/download/v ${forgejoversion } /${binname} .xz"
95
95
echo " Downloading $binurl ..."
96
96
curl --connect-timeout 10 --silent --show-error --fail --location -O " $binurl {,.sha256,.asc}"
97
97
98
98
# validate checksum & gpg signature
99
99
sha256sum -c " ${binname} .xz.sha256"
100
100
if [[ -z " ${ignore_gpg:- } " ]]; then
101
101
require gpg
102
- gpg --keyserver keys.openpgp.org --recv 7C9E68152594688862D62AF62D9AE806EC1592E2
102
+ gpg --keyserver keys.openpgp.org --recv EB114F5E6C0DC2BCDD183550A4B61A2DC5923710
103
103
gpg --verify " ${binname} .xz.asc" " ${binname} .xz" || { echo ' Signature does not match' ; exit 1; }
104
104
fi
105
105
rm " ${binname} " .xz.{sha256,asc}
106
106
107
107
# unpack binary + make executable
108
108
xz --decompress --force " ${binname} .xz"
109
- chown " $giteauser " " $binname "
109
+ chown " $forgejouser " " $binname "
110
110
chmod +x " $binname "
111
111
112
- # stop gitea , create backup, replace binary, restart gitea
113
- echo " Flushing gitea queues at $( date) "
114
- giteacmd manager flush-queues
115
- echo " Stopping gitea at $( date) "
112
+ # stop forgejo , create backup, replace binary, restart forgejo
113
+ echo " Flushing forgejo queues at $( date) "
114
+ forgejocmd manager flush-queues
115
+ echo " Stopping forgejo at $( date) "
116
116
$service_stop
117
- echo " Creating backup in $giteahome "
118
- giteacmd dump $backupopts
119
- echo " Updating binary at $giteabin "
120
- cp -f " $giteabin " " $giteabin .bak" && mv -f " $binname " " $giteabin "
117
+ echo " Creating backup in $forgejohome "
118
+ forgejocmd dump $backupopts
119
+ echo " Updating binary at $forgejobin "
120
+ cp -f " $forgejobin " " $forgejobin .bak" && mv -f " $binname " " $forgejobin "
121
121
$service_start
122
122
$service_status
123
123
124
- echo " Upgrade to $giteaversion successful!"
124
+ echo " Upgrade to $forgejoversion successful!"
125
125
126
126
popd
0 commit comments