From 95ac7bf70ad324760c310053210f48c86486b51b Mon Sep 17 00:00:00 2001 From: Adrien Bourmault Date: Sun, 10 Mar 2024 19:35:50 +0100 Subject: [PATCH] =?UTF-8?q?Migration=20=C3=A0=20forgejo?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- bin/check_update | 67 +++++++++++++++++++++++++++++++++++++++++++++ bin/doctor | 4 +++ bin/upgrade | 62 ++++++++++++++++++++++++++++++++++++++++++ check_update | 70 ------------------------------------------------ upgrade_gitea | 57 --------------------------------------- 5 files changed, 133 insertions(+), 127 deletions(-) create mode 100644 bin/check_update create mode 100644 bin/doctor create mode 100644 bin/upgrade delete mode 100644 check_update delete mode 100644 upgrade_gitea diff --git a/bin/check_update b/bin/check_update new file mode 100644 index 0000000..f5638f0 --- /dev/null +++ b/bin/check_update @@ -0,0 +1,67 @@ +#!/bin/bash +# Author: Cpm +# License: GNU AGPLv3+ +# Nagios plugin to check Forgejo version + +function usage +{ + echo "Usage : $0" +} + +function get_gitea_local_version +{ + local result + + local DOMAIN_URL="$1" + + result=$(curl -6 -s -X GET "${DOMAIN_URL}/api/v1/version" -H "accept: application/json" | egrep -Eo "[[:digit:].-]+") + + echo "$result" +} + +function get_last_version_from_gitea +{ + local result + + local DOMAIN_URL="$1" + local OWNER="$2" + local REPO_NAME="$3" + + local result=$(curl -s -X GET "${DOMAIN_URL}/api/v1/repos/${OWNER}/${REPO_NAME}/releases" -H "accept: application/json" | jshon |grep tag_name | head -1 | egrep -Eo "[[:digit:].-]+") + + echo "$result" +} + +function get_forgejo_last_version +{ + local result + + result=$(get_last_version_from_gitea "https://codeberg.org" "forgejo" "forgejo") + + echo "$result" +} + + +# +if [ "$#" -ne 0 ]; then + usage +else + localVersion=$(get_gitea_local_version "https://forge.a-lec.org") + #echo "Local version = $localVersion" + + lastVersion=$(get_forgejo_last_version) + #echo "Last version = $lastVersion" + + if [[ -z $localVersion ]]; then + echo "Bad local version value." + elif [[ -z $lastVersion ]]; then + echo "Bad last version value." + elif [ $localVersion = $lastVersion ]; then + echo "OK" + result=0 + else + echo "WARNING : new version available, current is $localVersion, last is $lastVersion." + result=1 + fi +fi +exit $result diff --git a/bin/doctor b/bin/doctor new file mode 100644 index 0000000..3d33878 --- /dev/null +++ b/bin/doctor @@ -0,0 +1,4 @@ +#!/bin/bash + +ACTION="$@" +su - git -c "cd /srv/forgejo/bin ; /srv/forgejo/bin/forgejo doctor -c /etc/forgejo/forgejo.ini -w /srv/forgejo/ -C /srv/forgejo/custom $ACTION" diff --git a/bin/upgrade b/bin/upgrade new file mode 100644 index 0000000..be52d44 --- /dev/null +++ b/bin/upgrade @@ -0,0 +1,62 @@ +#!/bin/bash +# Author: Cpm +# License: GNU AGPLv3+ + +#set -ex + +BINDIR=/srv/forgejo/bin +GITEA_HOME=/srv/forgejo +export GITEA_WORK_DIR=/srv/forgejo + +cd $BINDIR + +if [ -z "$1" ]; then + echo "Need version value." +else + # + VERSION="$1" + + # Verify. + if ./forgejo --version | grep -q "version $VERSION " ; then + echo "Same version." + else + # Download the binary file. + wget https://codeberg.org/forgejo/forgejo/releases/download/v${VERSION}/forgejo-${VERSION}-linux-amd64 + + # Check the binary file. + wget https://codeberg.org/forgejo/forgejo/releases/download/v${VERSION}/forgejo-${VERSION}-linux-amd64.sha256 + sha256sum -c forgejo-${VERSION}-linux-amd64.sha256 + + # Verify the binary file. + wget https://codeberg.org/forgejo/forgejo/releases/download/v${VERSION}/forgejo-${VERSION}-linux-amd64.asc + gpg --keyserver keys.openpgp.org --recv EB114F5E6C0DC2BCDD183550A4B61A2DC5923710 + gpg --verify forgejo-${VERSION}-linux-amd64.asc forgejo-${VERSION}-linux-amd64 + + # Flush queues. + su - git -c "cd /srv/forgejo/bin ; $BINDIR/forgejo -c /etc/forgejo/forgejo.ini manager flush-queues" + + # Stop. + systemctl stop forgejo + + # Call doctor. + su - git -c "cd /srv/forgejo/bin ; $BINDIR/forgejo doctor --all --fix -c /etc/forgejo/forgejo.ini -C /srv/forgejo/custom -w /srv/forgejo/" + + # Dump. + su - git -c "cd /srv/forgejo/bin ; $BINDIR/forgejo dump --tempdir $GITEA_HOME/tmp/ -c /etc/forgejo/forgejo.ini -C /srv/forgejo/custom -w /srv/forgejo/" + + # Upgrade. + chmod u+x forgejo-${VERSION}-linux-amd64 + chown git.git forgejo-${VERSION}-linux-amd64 + ln --force forgejo-${VERSION}-linux-amd64 forgejo + + # Start. + #systemctl start forgejo + echo "Please, check then start the service Forgejo." + read -e -p "Start Forgejo service? [Y/n] " choice + if [[ "$choice" =~ ^[yY]$ ]]; then + echo "Restarting…" + systemctl start forgejo + journalctl -f -u forgejo + fi + fi +fi diff --git a/check_update b/check_update deleted file mode 100644 index 98de402..0000000 --- a/check_update +++ /dev/null @@ -1,70 +0,0 @@ -#!/bin/bash -# GNU AGPLv3+ -# Nagios plugin to check Gitea version - -function usage() -{ - echo "Usage : $0" -} - - -function getCurrentVersion -{ - local result - - local json=$(curl -s -X GET "https://forge.chalec.org/api/v1/version" -H "accept: application/json") - #echo "[$json]" - - # {"version":"1.11.1"} - local regexp='\{"version":"(.*)"}' - if [[ $json =~ $regexp ]]; then - result=${BASH_REMATCH[1]} - else - result= - fi - - echo "$result" -} - -function getLastVersionFromGithub -{ - local result - - local owner="$1" - local repo="$2" - - local json=$(curl -s -X GET https://api.github.com/repos/$owner/$repo/releases/latest |grep tag_name) - #echo "[$json]" - - # [ "tag_name": "v1.11.1",] - local regexp='.*"tag_name": "v(.+)".*' - - if [[ $json =~ $regexp ]]; then - result=${BASH_REMATCH[1]} - else - result= - fi - - echo "$result" -} - - -# -if [ "$#" -ne 0 ]; then - usage -else - currentVersion=$(getCurrentVersion) - #echo "Current version = $currentVersion" - - lastVersion=$(getLastVersionFromGithub "go-gitea" "gitea") - #echo "Last version = $lastVersion" - - if [ $currentVersion = $lastVersion ]; then - echo "OK" - result=0 - else - echo "WARNING : new version available, current is $currentVersion, last is $lastVersion." - result=1 - fi -fi -exit $result diff --git a/upgrade_gitea b/upgrade_gitea deleted file mode 100644 index f2241cd..0000000 --- a/upgrade_gitea +++ /dev/null @@ -1,57 +0,0 @@ -#!/bin/bash -# GNU AGPLv3+ - -set -ex - -BINDIR=/srv/gitea/bin -GITEA_HOME=/srv/gitea -export GITEA_WORK_DIR=/srv/gitea - -cd $BINDIR - -if [ -z "$1" ]; then - echo "Need version value." -else - # - VERSION="$1" - - # Verify. - if ./gitea --version | grep -q "version $VERSION " ; then - echo "Same version." - else - # Download. - wget https://dl.gitea.io/gitea/$VERSION/gitea-$VERSION-linux-amd64 - wget https://dl.gitea.io/gitea/$VERSION/gitea-$VERSION-linux-amd64.asc - wget https://dl.gitea.io/gitea/$VERSION/gitea-$VERSION-linux-amd64.sha256 - sha256sum -c gitea-$VERSION-linux-amd64.sha256 - # gpg --keyserver keys.openpgp.org --recv 7C9E68152594688862D62AF62D9AE806EC1592E2 - gpg --verify gitea-$VERSION-linux-amd64.asc gitea-$VERSION-linux-amd64 - - # Flush queues. - su - git -c "cd /srv/gitea/bin ; $BINDIR/gitea -c /etc/gitea/gitea.ini manager flush-queues" - - # Stop. - systemctl stop gitea - - # Dump. - su - git -c "cd /srv/gitea/bin ; $BINDIR/gitea dump --tempdir $GITEA_HOME/tmp/ -c /etc/gitea/gitea.ini" - - # Call doctor. - su - git -c "cd /srv/gitea/bin ; $BINDIR/gitea doctor --all --fix -c /etc/gitea/gitea.ini -C /srv/gitea/custom -w /srv/gitea" - - # Upgrade. - chmod u+x gitea-$VERSION-linux-amd64 - chown git.git gitea-$VERSION-linux-amd64 - ln --force gitea-$VERSION-linux-amd64 gitea - - # Start. - #systemctl start gitea - echo "Please, check then start the service Gitea." - read -e -p "Start Gitea service? [Y/n] " choice - if [[ "$choice" =~ ^[yY]$ ]]; then - echo "Restarting…" - systemctl start gitea - journalctl -f -u gitea - fi - fi -fi