forgejo-deb/.ci-make.sh

159 lines
4.7 KiB
Bash
Raw Permalink Normal View History

2023-02-06 21:29:43 +11: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"
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 16:42:02 +10:00
echo "CI pipeline still pending, checking again in $CI_VERIFY_RETRY_TIME seconds..."
sleep $CI_VERIFY_RETRY_TIME
2023-02-06 21:29:43 +11:00
;;
*)
echo "ERROR: Bad pipeline status $CI_VERIFY"
exit 1
;;
esac
done
exit 255
;;
"download-binary")
if [ $CI_COMMIT_TAG ] ; then
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 21:29:43 +11: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-10 05:27:52 +10:00
wget -nv --content-disposition $CI_RELEASE_BINARY_URL
2023-02-06 21:29:43 +11: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")
2023-04-30 12:37:19 +10:00
apt update
2023-03-25 08:46:50 +11:00
apt install -y ./"$2"
2023-02-06 21:29:43 +11: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-10 05:55:59 +10:00
forgejo web -q --config /etc/forgejo/app.ini &
2023-02-06 21:29:43 +11:00
sleep 10
2023-09-10 05:27:52 +10:00
curl http://localhost:3000/ | grep -A 4 "Powered by Forgejo"
2023-02-06 21:29:43 +11:00
exit $?
;;
2023-07-03 07:46:48 +10:00
"install-repo-test")
2023-11-26 12:56:25 +11:00
export DEBIAN_FRONTEND=noninteractive
apt update -qq
2023-07-03 07:46:48 +10:00
apt install -y ./"$2"
2023-11-26 12:56:25 +11:00
apt update -qq
2023-07-03 07:46:48 +10:00
apt upgrade -y
2023-11-26 12:56:25 +11:00
apt update -qq
2023-07-03 07:46:48 +10:00
apt install "$3"
sudo -u forgejo USER=forgejo \
HOME=/var/lib/forgejo GITEA_WORK_DIR=/var/lib/forgejo \
2023-09-10 05:55:59 +10:00
forgejo web -q --config /etc/fogejo/app.ini &
2023-07-03 07:46:48 +10:00
sleep 10
2023-09-10 05:55:59 +10:00
curl http://localhost:3000/ | grep -A 4 "Powered by Forgejo"
2023-07-03 07:46:48 +10:00
exit $?
;;
2023-11-26 11:12:14 +11:00
"verify-data-dir-chmod")
2023-11-26 12:36:45 +11:00
DATA_DIR_CHMOD="$(stat -c %a /var/lib/forgejo)"
2023-11-26 11:12:14 +11:00
if [ "$DATA_DIR_CHMOD" = "750" ]; then
exit 0
else
exit 100
fi
;;
"force-clean-forgejo")
2023-11-26 12:56:25 +11:00
export DEBIAN_FRONTEND=noninteractive
2023-11-26 11:12:14 +11:00
apt install -y psmisc
killall forgejo
exit $?
;;
2023-11-26 11:37:24 +11:00
"forgejo-test-deps")
2023-11-26 12:00:32 +11:00
echo "deb http://deb.debian.org/debian/ bookworm-backports main contrib" > /etc/apt/sources.list.d/backports.list
2023-11-26 12:56:25 +11:00
export DEBIAN_FRONTEND=noninteractive
apt update -qq
apt install -qq --no-install-recommends -y git-lfs
apt install -qq -y -t bookworm-backports golang-1.20
2023-11-26 12:06:29 +11:00
ln -sf /usr/lib/go-1.20/bin/go /usr/local/bin/go
2023-11-26 11:37:24 +11:00
adduser --quiet --comment forgejo --disabled-password forgejo
chown -R forgejo:forgejo .
;;
2023-02-06 21:29:43 +11:00
esac