2023-02-06 03:29:43 -07:00
#!/bin/sh
CI_VERIFY_API = "https://codeberg.org" # Query the Forgejo API at this URL to check upstream CI status
CI_VERIFY_REPO = "forgejo/forgejo" # Check this repo at the Forgejo API for upstream CI status
CI_VERIFY_RETRY_TIME = 120 # How long to wait in seconds before retrying if the pipeline is pending
CI_VERIFY_RETRY_COUNT = 30 # How many times to retry before giving up if the pipeline is pending
case " $1 " in
"submodule-build" )
cd " $2 "
2024-03-14 16:07:10 -04:00
LDFLAGS = " $LDFLAGS -X code.gitea.io/gitea/cmd.PIDFile=/run/forgejo.pid "
LDFLAGS = " $LDFLAGS -X code.gitea.io/gitea/modules/setting.CustomConf=/etc/forgejo/app.ini "
LDFLAGS = " $LDFLAGS -X code.gitea.io/gitea/modules/setting.AppWorkPath=/var/lib/forgejo/ "
LDFLAGS = " $LDFLAGS -X code.gitea.io/gitea/modules/setting.StaticRootPath=/usr/share/forgejo/ " # this is necesary to be HFS by example opensuse raise error if you install files nonarch outside of sahred dir
export LDFLAGS
2023-02-06 03:29:43 -07:00
make build
EXIT_STATUS = $?
mv gitea ../" $3 "
exit $EXIT_STATUS
; ;
"submodule-make" )
cd " $2 "
shift; shift
make " $@ "
exit $?
; ;
"ci-verify" )
RETRY_LOOPS = 0
while [ $RETRY_LOOPS -le $CI_VERIFY_RETRY_COUNT ] ; do
RETRY_LOOPS = $(( $RETRY_LOOPS + 1 ))
CURRENT_COMMIT = $( git submodule status " $2 / " | cut -d ' ' -f2)
CI_VERIFY = $( curl $CI_VERIFY_API /api/v1/repos/$CI_VERIFY_REPO /commits/$CURRENT_COMMIT /status | jq --jsonargs .state)
case " $CI_VERIFY " in
'"success"' )
echo "CI pipeline passed!"
exit 0
; ;
'"pending"' )
2023-07-05 00:42:02 -06:00
echo " CI pipeline still pending, checking again in $CI_VERIFY_RETRY_TIME seconds... "
sleep $CI_VERIFY_RETRY_TIME
2023-02-06 03:29:43 -07:00
; ;
*)
echo " ERROR: Bad pipeline status $CI_VERIFY "
2024-01-09 16:55:06 -07:00
exit 1
2023-02-06 03:29:43 -07:00
; ;
esac
done
exit 255
; ;
"download-binary" )
if [ $CI_COMMIT_TAG ] ; then
2024-01-09 17:16:45 -07:00
CI_RELEASE_ASSETS = $( curl $CI_VERIFY_API /api/v1/repos/$CI_VERIFY_REPO /releases/tags/$CI_COMMIT_TAG | jq -c '.assets[]' | grep linux-amd64)
2023-02-06 03:29:43 -07:00
CI_RELEASE_BINARY_URL = $( echo " $CI_RELEASE_ASSETS " | grep linux-amd64\" | jq -r --jsonargs .browser_download_url)
CI_RELEASE_SHA256 = $( curl $( echo " $CI_RELEASE_ASSETS " | grep linux-amd64.sha256\" | jq -r --jsonargs .browser_download_url) | cut -d ' ' -f1)
2023-09-09 13:27:52 -06:00
wget -nv --content-disposition $CI_RELEASE_BINARY_URL
2023-02-06 03:29:43 -07:00
DOWNLOAD_SHA256 = $( sha256sum forgejo-*-linux-amd64 | cut -d ' ' -f1)
if [ $CI_RELEASE_SHA256 != $DOWNLOAD_SHA256 ] ; then
echo "ERROR: Downloaded file didn't match expected SHA256 sum"
exit 1
fi
mv forgejo-*-linux-amd64 $2
chmod +x $2
exit 0
else
echo "not a tag, skipping download"
exit 0
fi
; ;
"package-prep" )
mkdir deb/forgejo-bin
mkdir deb/forgejo-sqlite-bin
mv forgejo-bin deb/forgejo-bin/forgejo
mv forgejo-sqlite-bin deb/forgejo-sqlite-bin/forgejo
if [ -x forgejo-bin-dl ] ; then
mkdir deb/forgejo-bin-dl
mv forgejo-bin-dl deb/forgejo-bin-dl/forgejo
mv deb/.forgejo-bin.install deb/debian/forgejo-bin.install
ln -s forgejo.preinst deb/debian/forgejo-bin.preinst
ln -s forgejo.postinst deb/debian/forgejo-bin.postinst
ln -s forgejo.prerm deb/debian/forgejo-bin.prerm
echo >> deb/debian/control
cat deb/.forgejo-bin.control >> deb/debian/control
fi
; ;
"package-build" )
cd deb
dpkg-buildpackage -b
exit $?
; ;
"package-clean" )
rm *dbgsym*.deb || true
exit 0
; ;
"pkg-gen-sha256" )
for deb in *.deb ; do
sha256sum $deb > $deb .sha256
done
; ;
"preview-sha256" )
for p in *.sha256 ; do
echo $p
cat $p
done
; ;
"test-userinst-prep" )
cp ./etc/default/forgejo /etc/default/forgejo
mkdir -p /etc/systemd/system/forgejo.service.d
cp ./etc/systemd/system/forgejo.service.d/override.conf /etc/systemd/system/forgejo.service.d/override.conf
; ;
"install-run-test" )
2024-01-16 15:43:36 -07:00
export DEBIAN_FRONTEND = noninteractive
2023-04-29 20:37:19 -06:00
apt update
2023-03-24 15:46:50 -06:00
apt install -y ./" $2 "
2023-02-06 03:29:43 -07:00
[ -f "/etc/default/forgejo" ] && . /etc/default/forgejo
[ -z " $FORGEJO_HOME " ] && FORGEJO_HOME = /var/lib/forgejo
[ -z " $FORGEJO_USER " ] && FORGEJO_USER = forgejo
sudo -u $FORGEJO_USER USER = $FORGEJO_USER \
HOME = $FORGEJO_HOME GITEA_WORK_DIR = $FORGEJO_HOME \
2023-09-09 13:55:59 -06:00
forgejo web -q --config /etc/forgejo/app.ini &
2023-02-06 03:29:43 -07:00
sleep 10
2023-09-09 13:27:52 -06:00
curl http://localhost:3000/ | grep -A 4 "Powered by Forgejo"
2023-02-06 03:29:43 -07:00
exit $?
; ;
2023-07-02 15:46:48 -06:00
"install-repo-test" )
2023-11-25 18:56:25 -07:00
export DEBIAN_FRONTEND = noninteractive
apt update -qq
2024-01-16 15:24:20 -07:00
apt install -y apt-utils apt-listchanges
2023-07-02 15:46:48 -06:00
apt install -y ./" $2 "
2023-11-25 18:56:25 -07:00
apt update -qq
2023-07-02 15:46:48 -06:00
apt upgrade -y
2023-11-25 18:56:25 -07:00
apt update -qq
2024-03-23 12:50:19 -06:00
apt install -y " $3 "
2023-07-02 15:46:48 -06:00
sudo -u forgejo USER = forgejo \
HOME = /var/lib/forgejo GITEA_WORK_DIR = /var/lib/forgejo \
2023-09-09 13:55:59 -06:00
forgejo web -q --config /etc/fogejo/app.ini &
2023-07-02 15:46:48 -06:00
sleep 10
2023-09-09 13:55:59 -06:00
curl http://localhost:3000/ | grep -A 4 "Powered by Forgejo"
2023-07-02 15:46:48 -06:00
exit $?
; ;
2023-11-25 17:12:14 -07:00
"verify-data-dir-chmod" )
2023-11-25 18:36:45 -07:00
DATA_DIR_CHMOD = " $( stat -c %a /var/lib/forgejo) "
2023-11-25 17:12:14 -07:00
if [ " $DATA_DIR_CHMOD " = "750" ] ; then
exit 0
else
exit 100
fi
; ;
"force-clean-forgejo" )
2023-11-25 18:56:25 -07:00
export DEBIAN_FRONTEND = noninteractive
2023-11-25 17:12:14 -07:00
apt install -y psmisc
killall forgejo
exit $?
; ;
2023-11-25 17:37:24 -07:00
"forgejo-test-deps" )
2023-11-25 18:00:32 -07:00
echo "deb http://deb.debian.org/debian/ bookworm-backports main contrib" > /etc/apt/sources.list.d/backports.list
2023-11-25 18:56:25 -07:00
export DEBIAN_FRONTEND = noninteractive
apt update -qq
apt install -qq --no-install-recommends -y git-lfs
2024-01-09 18:27:35 -07:00
apt install -qq -y -t bookworm-backports golang-$DEP_GOLANG_VER
ln -sf /usr/lib/go-$DEP_GOLANG_VER /bin/go /usr/local/bin/go
2023-11-25 17:37:24 -07:00
adduser --quiet --comment forgejo --disabled-password forgejo
chown -R forgejo:forgejo .
; ;
2023-02-06 03:29:43 -07:00
esac