arm
Some checks failed
/ mirror (push) Has been skipped
/ build-forgejo-deb (push) Successful in 5m49s
/ multitest-bookworm-lxc (push) Has been cancelled
/ multitest-bullseye-docker (push) Successful in 29s
/ multitest-buster-docker (push) Has been cancelled
/ publish (push) Successful in 22s

This commit is contained in:
Alex Janka 2025-01-13 15:24:31 +11:00
parent 3ed9644c60
commit bcaec4cb84
4 changed files with 331 additions and 346 deletions

View file

@ -1,323 +1,324 @@
#!/bin/sh #!/bin/sh
CI_VERIFY_API="https://codeberg.org" # Query the Forgejo API at this URL to check upstream CI status 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_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_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 CI_VERIFY_RETRY_COUNT=30 # How many times to retry before giving up if the pipeline is pending
case "$1" in case "$1" in
"submodule-build") "submodule-build")
cd "$2" cd "$2"
LDFLAGS="$LDFLAGS -X \"code.gitea.io/gitea/modules/setting.StaticRootPath=/usr/share/forgejo\"" LDFLAGS="$LDFLAGS -X \"code.gitea.io/gitea/modules/setting.StaticRootPath=/usr/share/forgejo\""
LDFLAGS="$LDFLAGS -X \"code.gitea.io/gitea/modules/setting.AppWorkPath=/var/lib/forgejo\"" LDFLAGS="$LDFLAGS -X \"code.gitea.io/gitea/modules/setting.AppWorkPath=/var/lib/forgejo\""
LDFLAGS="$LDFLAGS -X \"code.gitea.io/gitea/modules/setting.CustomConf=/etc/forgejo/app.ini\"" LDFLAGS="$LDFLAGS -X \"code.gitea.io/gitea/modules/setting.CustomConf=/etc/forgejo/app.ini\""
export LDFLAGS export LDFLAGS
make build make build
EXIT_STATUS=$? EXIT_STATUS=$?
mv gitea ../"$3" mv gitea ../"$3"
exit $EXIT_STATUS exit $EXIT_STATUS
;;
"submodule-make")
cd "$2"
shift
shift
make "$@"
exit $?
;;
"actions-prep")
case "$2" in
"build-forgejo-deb")
APREP_APT_EXTRAS="debhelper devscripts sudo retry"
;; ;;
"submodule-make") "installtest")
cd "$2" APREP_APT_EXTRAS="sudo"
shift;shift if [ ! "$TEST_DEBIAN_BUSTER" ]; then
make "$@" APREP_APT_EXTRAS="$APREP_APT_EXTRAS retry"
exit $? fi
;; ;;
"actions-prep") "")
case "$2" in APREP_APT_EXTRAS=
"build-forgejo-deb") ;;
APREP_APT_EXTRAS="debhelper devscripts sudo retry" *)
;; echo "Invalid argument: $2"
"installtest") exit 98
APREP_APT_EXTRAS="sudo" ;;
if [ ! "$TEST_DEBIAN_BUSTER" ] ; then esac
APREP_APT_EXTRAS="$APREP_APT_EXTRAS retry" EXIT_TOTAL=0
fi apt update
;; EXIT_TOTAL=$(($EXIT_TOTAL + $?))
"") apt upgrade -y
APREP_APT_EXTRAS= EXIT_TOTAL=$(($EXIT_TOTAL + $?))
;; if [ "$APREP_APT_EXTRAS" ]; then
*) apt install $APREP_APT_EXTRAS -y
echo "Invalid argument: $2" EXIT_TOTAL=$(($EXIT_TOTAL + $?))
exit 98 fi
;; ACTIONS_FORGEJOSHA="$(git rev-parse --short=10 HEAD)"
if [ "$GITHUB_REF_TYPE" = "tag" ]; then
echo "::set-output name=artifactlabel::$GITHUB_REF_NAME-$ACTIONS_FORGEJOSHA"
else
echo "::set-output name=artifactlabel::$ACTIONS_FORGEJOSHA"
fi
echo "::set-output name=forgejosha::$ACTIONS_FORGEJOSHA"
exit $EXIT_TOTAL
;;
"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"')
echo "CI pipeline still pending, checking again in $CI_VERIFY_RETRY_TIME seconds..."
sleep $CI_VERIFY_RETRY_TIME
;;
*)
echo "ERROR: Bad pipeline status $CI_VERIFY"
exit 1
;;
esac esac
EXIT_TOTAL=0 done
apt update exit 255
EXIT_TOTAL=$(($EXIT_TOTAL+$?)) ;;
apt upgrade -y "download-binary")
EXIT_TOTAL=$(($EXIT_TOTAL+$?)) if [ "$GITHUB_BASE_REF" ]; then
if [ "$APREP_APT_EXTRAS" ] ; then echo "forgejo actions pull request mode"
apt install $APREP_APT_EXTRAS -y echo "making sure you didn't break binary builds..."
EXIT_TOTAL=$(($EXIT_TOTAL+$?)) PR_MODE=true
fi fi
ACTIONS_FORGEJOSHA="$(git rev-parse --short=10 HEAD)" if [ "$GITHUB_REF_TYPE" = "tag" ]; then
if [ "$GITHUB_REF_TYPE" = "tag" ] ; then echo "INFO: Forgejo Actions mode!"
echo "::set-output name=artifactlabel::$GITHUB_REF_NAME-$ACTIONS_FORGEJOSHA" CI_COMMIT_TAG="$GITHUB_REF_NAME"
else elif [ "$GITHUB_REF_TYPE" = "branch" ] || [ $PR_MODE ]; then
echo "::set-output name=artifactlabel::$ACTIONS_FORGEJOSHA" echo "WARNING: Not building a tag! Simulating it..."
fi echo "(forgejo actions mode)"
echo "::set-output name=forgejosha::$ACTIONS_FORGEJOSHA" echo "(this will test the binary packaging without cutting a tag in the package)"
exit $EXIT_TOTAL echo "Resolving tag..."
;; cd forgejo
"ci-verify") CI_COMMIT_TAG_RESOLVE=$(git tag --points-at HEAD)
RETRY_LOOPS=0 if [ ! $CI_COMMIT_TAG_RESOLVE ]; then
while [ $RETRY_LOOPS -le $CI_VERIFY_RETRY_COUNT ] ; do echo "Failed to resolve exact tag! Getting as close as we can..."
RETRY_LOOPS=$(($RETRY_LOOPS + 1)) git describe --tags HEAD
CURRENT_COMMIT=$(git submodule status "$2/" | cut -d ' ' -f2) FORGEJO_CLOSEST_TAG=$(git describe --tags HEAD --abbrev=0)
CI_VERIFY=$(curl $CI_VERIFY_API/api/v1/repos/$CI_VERIFY_REPO/commits/$CURRENT_COMMIT/status | jq --jsonargs .state) echo "Looking for experimental tag..."
case "$CI_VERIFY" in EXPERIMENTAL_REPO="forgejo-experimental/forgejo"
'"success"') git remote add experimental $CI_VERIFY_API/$EXPERIMENTAL_REPO
echo "CI pipeline passed!" git fetch experimental --tags
exit 0
;;
'"pending"')
echo "CI pipeline still pending, checking again in $CI_VERIFY_RETRY_TIME seconds..."
sleep $CI_VERIFY_RETRY_TIME
;;
*)
echo "ERROR: Bad pipeline status $CI_VERIFY"
exit 1
;;
esac
done
exit 255
;;
"download-binary")
if [ "$GITHUB_BASE_REF" ] ; then
echo "forgejo actions pull request mode"
echo "making sure you didn't break binary builds..."
PR_MODE=true
fi
if [ "$GITHUB_REF_TYPE" = "tag" ] ; then
echo "INFO: Forgejo Actions mode!"
CI_COMMIT_TAG="$GITHUB_REF_NAME"
elif [ "$GITHUB_REF_TYPE" = "branch" ] || [ $PR_MODE ] ; then
echo "WARNING: Not building a tag! Simulating it..."
echo "(forgejo actions mode)"
echo "(this will test the binary packaging without cutting a tag in the package)"
echo "Resolving tag..."
cd forgejo
CI_COMMIT_TAG_RESOLVE=$(git tag --points-at HEAD) CI_COMMIT_TAG_RESOLVE=$(git tag --points-at HEAD)
if [ ! $CI_COMMIT_TAG_RESOLVE ] ; then if [ $CI_COMMIT_TAG_RESOLVE ]; then
echo "Failed to resolve exact tag! Getting as close as we can..." CI_VERIFY_REPO=$EXPERIMENTAL_REPO
git describe --tags HEAD FORGEJO_CLOSEST_TAG=$CI_COMMIT_TAG_RESOLVE
FORGEJO_CLOSEST_TAG=$(git describe --tags HEAD --abbrev=0) echo "Found it! Using experimental tag and downloading binary from $CI_VERIFY_REPO"
echo "Looking for experimental tag..."
EXPERIMENTAL_REPO="forgejo-experimental/forgejo"
git remote add experimental $CI_VERIFY_API/$EXPERIMENTAL_REPO
git fetch experimental --tags
CI_COMMIT_TAG_RESOLVE=$(git tag --points-at HEAD)
if [ $CI_COMMIT_TAG_RESOLVE ] ; then
CI_VERIFY_REPO=$EXPERIMENTAL_REPO
FORGEJO_CLOSEST_TAG=$CI_COMMIT_TAG_RESOLVE
echo "Found it! Using experimental tag and downloading binary from $CI_VERIFY_REPO"
fi
CI_COMMIT_TAG_RESOLVE=$FORGEJO_CLOSEST_TAG
echo "Closest existing tag: $CI_COMMIT_TAG_RESOLVE"
if [ "$CI_COMMIT_TAG_RESOLVE" != "${CI_COMMIT_TAG_RESOLVE%"-dev"}" ] || [ ! "$CI_COMMIT_TAG_RESOLVE" ] ; then
if [ $PR_MODE ] ; then
echo "I can't figure out which release version of Forgejo to build your PR against."
echo "Whatever you're trying to do is not yet implemented."
exit 97
fi
echo "err! unable to resolve tag or building dev version- skipping binary dl"
CI_COMMIT_TAG_RESOLVE=
fi
fi fi
cd .. CI_COMMIT_TAG_RESOLVE=$FORGEJO_CLOSEST_TAG
echo "Proceeding with resolved tag: $CI_COMMIT_TAG_RESOLVE" echo "Closest existing tag: $CI_COMMIT_TAG_RESOLVE"
CI_COMMIT_TAG="$CI_COMMIT_TAG_RESOLVE" if [ "$CI_COMMIT_TAG_RESOLVE" != "${CI_COMMIT_TAG_RESOLVE%"-dev"}" ] || [ ! "$CI_COMMIT_TAG_RESOLVE" ]; then
fi if [ $PR_MODE ]; then
if [ $CI_COMMIT_TAG ] ; then echo "I can't figure out which release version of Forgejo to build your PR against."
CI_RELEASE_ASSETS=$(curl $CI_VERIFY_API/api/v1/repos/$CI_VERIFY_REPO/releases/tags/$CI_COMMIT_TAG | jq -c '.assets[]' | grep linux-amd64) echo "Whatever you're trying to do is not yet implemented."
CI_RELEASE_BINARY_URL=$(echo "$CI_RELEASE_ASSETS" | grep linux-amd64\" | jq -r --jsonargs .browser_download_url) exit 97
CI_RELEASE_SHA256=$(curl $(echo "$CI_RELEASE_ASSETS" | grep linux-amd64.sha256\" | jq -r --jsonargs .browser_download_url) | cut -d ' ' -f1) fi
wget -nv --content-disposition $CI_RELEASE_BINARY_URL echo "err! unable to resolve tag or building dev version- skipping binary dl"
DOWNLOAD_SHA256=$(sha256sum forgejo-*-linux-amd64 | cut -d ' ' -f1) CI_COMMIT_TAG_RESOLVE=
if [ $CI_RELEASE_SHA256 != $DOWNLOAD_SHA256 ] ; then
echo "ERROR: Downloaded file didn't match expected SHA256 sum"
exit 1
fi fi
mv forgejo-*-linux-amd64 $2
chmod +x $2
exit 0
else
echo "not a tag, skipping download"
exit 0
fi fi
;; cd ..
"package-prep") echo "Proceeding with resolved tag: $CI_COMMIT_TAG_RESOLVE"
mkdir deb/forgejo-bin CI_COMMIT_TAG="$CI_COMMIT_TAG_RESOLVE"
mkdir deb/forgejo-sqlite-bin fi
mv forgejo-bin deb/forgejo-bin/forgejo if [ $CI_COMMIT_TAG ]; then
mv forgejo-sqlite-bin deb/forgejo-sqlite-bin/forgejo CI_RELEASE_ASSETS=$(curl $CI_VERIFY_API/api/v1/repos/$CI_VERIFY_REPO/releases/tags/$CI_COMMIT_TAG | jq -c '.assets[]' | grep linux-arm64)
cp -r forgejo/public deb/public CI_RELEASE_BINARY_URL=$(echo "$CI_RELEASE_ASSETS" | grep linux-arm64\" | jq -r --jsonargs .browser_download_url)
cp -r forgejo/templates deb/templates CI_RELEASE_SHA256=$(curl $(echo "$CI_RELEASE_ASSETS" | grep linux-arm64.sha256\" | jq -r --jsonargs .browser_download_url) | cut -d ' ' -f1)
cp -r forgejo/options deb/options wget -nv --content-disposition $CI_RELEASE_BINARY_URL
if [ -x forgejo-bin-dl ] ; then DOWNLOAD_SHA256=$(sha256sum forgejo-*-linux-arm64 | cut -d ' ' -f1)
mkdir deb/forgejo-bin-dl if [ $CI_RELEASE_SHA256 != $DOWNLOAD_SHA256 ]; then
mv forgejo-bin-dl deb/forgejo-bin-dl/forgejo echo "ERROR: Downloaded file didn't match expected SHA256 sum"
mv deb/.forgejo-bin.install deb/debian/forgejo-bin.install exit 1
ln -s forgejo-common.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 fi
;; mv forgejo-*-linux-arm64 $2
"package-build-deps") chmod +x $2
cd deb
mk-build-deps --install --tool "apt-get -o Debug::pkgProblemResolver=yes --no-install-recommends -y" --remove
exit $?
;;
"package-build")
cd deb
if [ "$2" = "actions" ] ; then
PACKAGE_BUILD_EXTRA_ARGS="--no-sign"
fi
dpkg-buildpackage -b $PACKAGE_BUILD_EXTRA_ARGS
exit $?
;;
"package-clean")
rm *dbgsym*.deb || true
exit 0 exit 0
;; else
"pkg-gen-sha256") echo "not a tag, skipping download"
for deb in *.deb ; do exit 0
sha256sum $deb > $deb.sha256 fi
done ;;
;; "package-prep")
"preview-sha256") mkdir deb/forgejo-bin
for p in *.sha256 ; do mkdir deb/forgejo-sqlite-bin
echo $p mv forgejo-bin deb/forgejo-bin/forgejo
cat $p mv forgejo-sqlite-bin deb/forgejo-sqlite-bin/forgejo
done cp -r forgejo/public deb/public
;; cp -r forgejo/templates deb/templates
"test-userinst-prep") cp -r forgejo/options deb/options
cp ./etc/default/forgejo /etc/default/forgejo if [ -x forgejo-bin-dl ]; then
mkdir -p /etc/systemd/system/forgejo.service.d mkdir deb/forgejo-bin-dl
cp ./etc/systemd/system/forgejo.service.d/override.conf /etc/systemd/system/forgejo.service.d/override.conf mv forgejo-bin-dl deb/forgejo-bin-dl/forgejo
;; mv deb/.forgejo-bin.install deb/debian/forgejo-bin.install
"install-run-test") ln -s forgejo-common.preinst deb/debian/forgejo-bin.preinst
export DEBIAN_FRONTEND=noninteractive ln -s forgejo.postinst deb/debian/forgejo-bin.postinst
apt update ln -s forgejo.prerm deb/debian/forgejo-bin.prerm
if [ "$2" = "${2#"./forgejo-bin_"}" ] ; then echo >>deb/debian/control
APT_FORGEJO_COMMON_RESOLVE="$(ls -1 ./forgejo-common_*_all.deb)" cat deb/.forgejo-bin.control >>deb/debian/control
if [ -f "$APT_FORGEJO_COMMON_RESOLVE" ] ; then fi
APT_FORGEJO_COMMON="./$APT_FORGEJO_COMMON_RESOLVE" ;;
else "package-build-deps")
echo "ERR! Unable to find the necessary forgejo-common package!" cd deb
exit 96 mk-build-deps --install --tool "apt-get -o Debug::pkgProblemResolver=yes --no-install-recommends -y" --remove
fi exit $?
fi ;;
apt install -y $APT_FORGEJO_COMMON ./"$2" "package-build")
if [ -f "/.dockerenv" ] ; then cd deb
if [ -f "/etc/default/forgejo" ] || [ "$2" != "${2#"./forgejo-bin_"}" ] ; then if [ "$2" = "actions" ]; then
[ -f "/etc/default/forgejo" ] && . /etc/default/forgejo PACKAGE_BUILD_EXTRA_ARGS="--no-sign"
[ -z "$FORGEJO_HOME" ] && FORGEJO_HOME=/var/lib/forgejo fi
[ -z "$FORGEJO_USER" ] && FORGEJO_USER=forgejo dpkg-buildpackage -b $PACKAGE_BUILD_EXTRA_ARGS
sudo -u $FORGEJO_USER USER=$FORGEJO_USER \ exit $?
HOME=$FORGEJO_HOME FORGEJO_WORK_DIR=$FORGEJO_HOME \ ;;
forgejo web -q --config /etc/forgejo/app.ini & "package-clean")
else rm *dbgsym*.deb || true
echo "No env setup! Run testing defaults using hardcoded vars..." exit 0
sudo -u forgejo USER=forgejo forgejo web -q & ;;
fi "pkg-gen-sha256")
sleep 1 for deb in *.deb; do
fi sha256sum $deb >$deb.sha256
if [ "$TEST_DEBIAN_BUSTER" ] ; then done
curl http://localhost:3000/ | grep -A 4 "Powered by Forgejo" ;;
if [ "$?" != "0" ] ; then "preview-sha256")
sleep 3 for p in *.sha256; do
curl http://localhost:3000/ | grep -A 4 "Powered by Forgejo" echo $p
fi 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")
export DEBIAN_FRONTEND=noninteractive
apt update
if [ "$2" = "${2#"./forgejo-bin_"}" ]; then
APT_FORGEJO_COMMON_RESOLVE="$(ls -1 ./forgejo-common_*_all.deb)"
if [ -f "$APT_FORGEJO_COMMON_RESOLVE" ]; then
APT_FORGEJO_COMMON="./$APT_FORGEJO_COMMON_RESOLVE"
else else
retry -d 2 -t 2 curl http://localhost:3000/ | grep -A 4 "Powered by Forgejo" echo "ERR! Unable to find the necessary forgejo-common package!"
exit 96
fi fi
exit $? fi
;; apt install -y $APT_FORGEJO_COMMON ./"$2"
"install-repo-test") if [ -f "/.dockerenv" ]; then
if [ -f "/etc/default/forgejo" ] || [ "$2" != "${2#"./forgejo-bin_"}" ]; then
[ -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 FORGEJO_WORK_DIR=$FORGEJO_HOME \
forgejo web -q --config /etc/forgejo/app.ini &
else
echo "No env setup! Run testing defaults using hardcoded vars..."
sudo -u forgejo USER=forgejo forgejo web -q &
fi
sleep 1
fi
if [ "$TEST_DEBIAN_BUSTER" ]; then
curl http://localhost:3000/ | grep -A 4 "Powered by Forgejo"
if [ "$?" != "0" ]; then
sleep 3
curl http://localhost:3000/ | grep -A 4 "Powered by Forgejo"
fi
else
retry -d 2 -t 2 curl http://localhost:3000/ | grep -A 4 "Powered by Forgejo"
fi
exit $?
;;
"install-repo-test")
export DEBIAN_FRONTEND=noninteractive
apt update -qq
apt install -y apt-utils apt-listchanges
apt install -y ./"$2"
apt update -qq
apt upgrade -y
apt update -qq
apt install -y "$3"
if [ -f "/.dockerenv" ]; then
sudo -u forgejo USER=forgejo \
HOME=/var/lib/forgejo FORGEJO_WORK_DIR=/var/lib/forgejo \
forgejo web -q --config /etc/fogejo/app.ini &
sleep 1
fi
retry -d 2 -t 2 curl http://localhost:3000/ | grep -A 4 "Powered by Forgejo"
exit $?
;;
"verify-data-dir-chmod")
DATA_DIR_CHMOD="$(stat -c %a /var/lib/forgejo)"
if [ "$DATA_DIR_CHMOD" = "750" ]; then
exit 0
else
exit 100
fi
;;
"force-clean-forgejo")
export DEBIAN_FRONTEND=noninteractive
apt install -y psmisc
killall forgejo
exit $?
;;
"forgejo-test-deps")
echo "deb http://deb.debian.org/debian/ bookworm-backports main contrib" >/etc/apt/sources.list.d/backports.list
export DEBIAN_FRONTEND=noninteractive
apt update -qq
apt install -qq --no-install-recommends -y git-lfs
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
adduser --quiet --comment forgejo --disabled-password forgejo
chown -R forgejo:forgejo .
if [ "$DEP_GOLANG_NODEB_REV" ]; then
su forgejo -c "./.ci-make.sh forgejo-test-deps_upgrade-go $DEP_GOLANG_VER $DEP_GOLANG_NODEB_REV"
fi
;;
"forgejo-test-deps_upgrade-go")
go install golang.org/dl/go$2.$3@latest
ln -s ~/go/bin/go$2.$3 ~/go/bin/go
export PATH="$HOME/go/bin:$PATH"
go download
go version
;;
"complex-test")
shift
case "$1" in
"split-deb-upgrade")
shift
rm forgejo-deb-repo_0-0_all.deb
wget --content-disposition https://code.forgejo.org/forgejo-contrib/-/packages/debian/forgejo-deb-repo/0-0/files/2890
export DEBIAN_FRONTEND=noninteractive export DEBIAN_FRONTEND=noninteractive
apt update -qq apt install -y ./forgejo-deb-repo_0-0_all.deb
apt install -y apt-utils apt-listchanges
apt install -y ./"$2"
apt update -qq apt update -qq
apt upgrade -y apt upgrade -y
apt update -qq apt install forgejo$1
apt install -y "$3" cp test-res/app.ini.modified /etc/forgejo/app.ini
if [ -f "/.dockerenv" ] ; then apt install ./forgejo$1_*_arm64.deb ./forgejo-common_*_all.deb
sudo -u forgejo USER=forgejo \ cat /etc/forgejo/app.ini
HOME=/var/lib/forgejo FORGEJO_WORK_DIR=/var/lib/forgejo \
forgejo web -q --config /etc/fogejo/app.ini &
sleep 1
fi
retry -d 2 -t 2 curl http://localhost:3000/ | grep -A 4 "Powered by Forgejo"
exit $?
;;
"verify-data-dir-chmod")
DATA_DIR_CHMOD="$(stat -c %a /var/lib/forgejo)"
if [ "$DATA_DIR_CHMOD" = "750" ]; then
exit 0
else
exit 100
fi
;;
"force-clean-forgejo")
export DEBIAN_FRONTEND=noninteractive
apt install -y psmisc
killall forgejo
exit $?
;;
"forgejo-test-deps")
echo "deb http://deb.debian.org/debian/ bookworm-backports main contrib" > /etc/apt/sources.list.d/backports.list
export DEBIAN_FRONTEND=noninteractive
apt update -qq
apt install -qq --no-install-recommends -y git-lfs
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
adduser --quiet --comment forgejo --disabled-password forgejo
chown -R forgejo:forgejo .
if [ "$DEP_GOLANG_NODEB_REV" ];then
su forgejo -c "./.ci-make.sh forgejo-test-deps_upgrade-go $DEP_GOLANG_VER $DEP_GOLANG_NODEB_REV"
fi
;;
"forgejo-test-deps_upgrade-go")
go install golang.org/dl/go$2.$3@latest
ln -s ~/go/bin/go$2.$3 ~/go/bin/go
export PATH="$HOME/go/bin:$PATH"
go download
go version
;;
"complex-test")
shift
case "$1" in
"split-deb-upgrade")
shift
rm forgejo-deb-repo_0-0_all.deb
wget --content-disposition https://code.forgejo.org/forgejo-contrib/-/packages/debian/forgejo-deb-repo/0-0/files/2890
export DEBIAN_FRONTEND=noninteractive
apt install -y ./forgejo-deb-repo_0-0_all.deb
apt update -qq
apt upgrade -y
apt install forgejo$1
cp test-res/app.ini.modified /etc/forgejo/app.ini
apt install ./forgejo$1_*_amd64.deb ./forgejo-common_*_all.deb
cat /etc/forgejo/app.ini
;;
esac
;;
"full-instance-clean")
export DEBIAN_FRONTEND=noninteractive
apt purge -y forgejo forgejo-sqlite forgejo-common forgejo-bin
rm -rf /var/lib/forgejo
rm -rf /etc/forgejo /etc/default/forgejo /etc/systemd/system/forgejo.service.d
if [ "$2" = "userinst" ] ; then
sudo deluser git
else
sudo deluser forgejo
fi
apt purge -y forgejo-deb-repo forgejo-deb-repokey
exit 0
;; ;;
esac
;;
"full-instance-clean")
export DEBIAN_FRONTEND=noninteractive
apt purge -y forgejo forgejo-sqlite forgejo-common forgejo-bin
rm -rf /var/lib/forgejo
rm -rf /etc/forgejo /etc/default/forgejo /etc/systemd/system/forgejo.service.d
if [ "$2" = "userinst" ]; then
sudo deluser git
else
sudo deluser forgejo
fi
apt purge -y forgejo-deb-repo forgejo-deb-repokey
exit 0
;;
esac esac

View file

@ -48,19 +48,19 @@ jobs:
cd forgejo cd forgejo
git update-ref refs/heads/tag_test $(git rev-parse --verify HEAD) git update-ref refs/heads/tag_test $(git rev-parse --verify HEAD)
- run: ./.ci-make.sh submodule-make forgejo security-check # - run: ./.ci-make.sh submodule-make forgejo security-check
- run: ./.ci-make.sh submodule-make forgejo frontend - run: ./.ci-make.sh submodule-make forgejo frontend
- run: ./.ci-make.sh submodule-make forgejo checks-backend # - run: ./.ci-make.sh submodule-make forgejo checks-backend
- name: Download Forgejo binary - name: Download Forgejo binary
run: ./.ci-make.sh download-binary forgejo-bin-dl run: ./.ci-make.sh download-binary forgejo-bin-dl
- name: Build Forgejo for amd64 - name: Build Forgejo for arm64
run: ./.ci-make.sh submodule-build forgejo forgejo-bin run: ./.ci-make.sh submodule-build forgejo forgejo-bin
- name: Build Forgejo (with SQLite) for amd64 - name: Build Forgejo (with SQLite) for arm64
run: ./.ci-make.sh submodule-build forgejo forgejo-sqlite-bin run: ./.ci-make.sh submodule-build forgejo forgejo-sqlite-bin
env: env:
TAGS: sqlite sqlite_unlock_notify TAGS: sqlite sqlite_unlock_notify
@ -82,7 +82,7 @@ jobs:
./.ci-make.sh pkg-gen-sha256 ./.ci-make.sh pkg-gen-sha256
./.ci-make.sh preview-sha256 ./.ci-make.sh preview-sha256
- run: ./.ci-make.sh install-run-test ./forgejo-sqlite_*_amd64.deb - run: ./.ci-make.sh install-run-test ./forgejo-sqlite_*_arm64.deb
- uses: actions/upload-artifact@v3 - uses: actions/upload-artifact@v3
with: with:
@ -106,31 +106,31 @@ jobs:
with: with:
name: forgejo-deb-${{ steps.ciprep.outputs.artifactlabel }} name: forgejo-deb-${{ steps.ciprep.outputs.artifactlabel }}
- run: ./.ci-make.sh install-run-test ./forgejo-sqlite_*_amd64.deb - run: ./.ci-make.sh install-run-test ./forgejo-sqlite_*_arm64.deb
- run: ./.ci-make.sh full-instance-clean - run: ./.ci-make.sh full-instance-clean
- run: ./.ci-make.sh install-run-test ./forgejo_*_amd64.deb - run: ./.ci-make.sh install-run-test ./forgejo_*_arm64.deb
- run: ./.ci-make.sh full-instance-clean - run: ./.ci-make.sh full-instance-clean
- run: ./.ci-make.sh install-run-test ./forgejo-bin_*_amd64.deb - run: ./.ci-make.sh install-run-test ./forgejo-bin_*_arm64.deb
- run: ./.ci-make.sh full-instance-clean - run: ./.ci-make.sh full-instance-clean
- run: ./.ci-make.sh test-userinst-prep - run: ./.ci-make.sh test-userinst-prep
- run: ./.ci-make.sh install-run-test ./forgejo-sqlite_*_amd64.deb - run: ./.ci-make.sh install-run-test ./forgejo-sqlite_*_arm64.deb
- run: ./.ci-make.sh full-instance-clean userinst - run: ./.ci-make.sh full-instance-clean userinst
- run: ./.ci-make.sh test-userinst-prep - run: ./.ci-make.sh test-userinst-prep
- run: ./.ci-make.sh install-run-test ./forgejo_*_amd64.deb - run: ./.ci-make.sh install-run-test ./forgejo_*_arm64.deb
- run: ./.ci-make.sh full-instance-clean userinst - run: ./.ci-make.sh full-instance-clean userinst
- run: ./.ci-make.sh test-userinst-prep - run: ./.ci-make.sh test-userinst-prep
- run: ./.ci-make.sh install-run-test ./forgejo-bin_*_amd64.deb - run: ./.ci-make.sh install-run-test ./forgejo-bin_*_arm64.deb
- run: ./.ci-make.sh full-instance-clean userinst - run: ./.ci-make.sh full-instance-clean userinst
- run: ./.ci-make.sh install-repo-test ./repo-deb/forgejo-deb-repo_0-0_all.deb forgejo-sqlite - run: ./.ci-make.sh install-repo-test ./repo-deb/forgejo-deb-repo_0-0_all.deb forgejo-sqlite
- run: ./.ci-make.sh install-run-test ./forgejo-sqlite_*_amd64.deb - run: ./.ci-make.sh install-run-test ./forgejo-sqlite_*_arm64.deb
- run: ./.ci-make.sh verify-data-dir-chmod - run: ./.ci-make.sh verify-data-dir-chmod
- run: ./.ci-make.sh full-instance-clean - run: ./.ci-make.sh full-instance-clean
- run: ./.ci-make.sh install-repo-test ./repo-deb/forgejo-deb-repo_0-0_all.deb forgejo - run: ./.ci-make.sh install-repo-test ./repo-deb/forgejo-deb-repo_0-0_all.deb forgejo
- run: ./.ci-make.sh install-run-test ./forgejo_*_amd64.deb - run: ./.ci-make.sh install-run-test ./forgejo_*_arm64.deb
- run: ./.ci-make.sh verify-data-dir-chmod - run: ./.ci-make.sh verify-data-dir-chmod
- run: ./.ci-make.sh full-instance-clean - run: ./.ci-make.sh full-instance-clean
- run: ./.ci-make.sh install-repo-test ./repo-deb/forgejo-deb-repo_0-0_all.deb forgejo-bin - run: ./.ci-make.sh install-repo-test ./repo-deb/forgejo-deb-repo_0-0_all.deb forgejo-bin
- run: ./.ci-make.sh install-run-test ./forgejo-bin_*_amd64.deb - run: ./.ci-make.sh install-run-test ./forgejo-bin_*_arm64.deb
- run: ./.ci-make.sh verify-data-dir-chmod - run: ./.ci-make.sh verify-data-dir-chmod
- run: ./.ci-make.sh full-instance-clean - run: ./.ci-make.sh full-instance-clean
- run: ./.ci-make.sh complex-test split-deb-upgrade -sqlite - run: ./.ci-make.sh complex-test split-deb-upgrade -sqlite
@ -152,13 +152,13 @@ jobs:
with: with:
name: forgejo-deb-${{steps.ciprep.outputs.artifactlabel }} name: forgejo-deb-${{steps.ciprep.outputs.artifactlabel }}
- run: ./.ci-make.sh install-run-test ./forgejo-sqlite_*_amd64.deb - run: ./.ci-make.sh install-run-test ./forgejo-sqlite_*_arm64.deb
- run: ./.ci-make.sh force-clean-forgejo - run: ./.ci-make.sh force-clean-forgejo
- run: ./.ci-make.sh full-instance-clean - run: ./.ci-make.sh full-instance-clean
- run: ./.ci-make.sh install-run-test ./forgejo_*_amd64.deb - run: ./.ci-make.sh install-run-test ./forgejo_*_arm64.deb
- run: ./.ci-make.sh force-clean-forgejo - run: ./.ci-make.sh force-clean-forgejo
- run: ./.ci-make.sh full-instance-clean - run: ./.ci-make.sh full-instance-clean
- run: ./.ci-make.sh install-run-test ./forgejo-bin_*_amd64.deb - run: ./.ci-make.sh install-run-test ./forgejo-bin_*_arm64.deb
- run: ./.ci-make.sh force-clean-forgejo - run: ./.ci-make.sh force-clean-forgejo
- run: ./.ci-make.sh full-instance-clean - run: ./.ci-make.sh full-instance-clean
@ -179,20 +179,18 @@ jobs:
with: with:
name: forgejo-deb-${{steps.ciprep.outputs.artifactlabel }} name: forgejo-deb-${{steps.ciprep.outputs.artifactlabel }}
- run: ./.ci-make.sh install-run-test ./forgejo-sqlite_*_amd64.deb - run: ./.ci-make.sh install-run-test ./forgejo-sqlite_*_arm64.deb
- run: ./.ci-make.sh force-clean-forgejo - run: ./.ci-make.sh force-clean-forgejo
- run: ./.ci-make.sh full-instance-clean - run: ./.ci-make.sh full-instance-clean
- run: ./.ci-make.sh install-run-test ./forgejo_*_amd64.deb - run: ./.ci-make.sh install-run-test ./forgejo_*_arm64.deb
- run: ./.ci-make.sh force-clean-forgejo - run: ./.ci-make.sh force-clean-forgejo
- run: ./.ci-make.sh full-instance-clean - run: ./.ci-make.sh full-instance-clean
- run: ./.ci-make.sh install-run-test ./forgejo-bin_*_amd64.deb - run: ./.ci-make.sh install-run-test ./forgejo-bin_*_arm64.deb
- run: ./.ci-make.sh force-clean-forgejo - run: ./.ci-make.sh force-clean-forgejo
- run: ./.ci-make.sh full-instance-clean - run: ./.ci-make.sh full-instance-clean
publish-release-repo: publish:
runs-on: bookworm runs-on: bookworm
needs: [multitest-bookworm-lxc, multitest-bullseye-docker, multitest-buster-docker]
if: github.event_name == 'push' && contains(github.ref, 'refs/tags/') && github.repository == 'forgejo-contrib/forgejo-deb'
steps: steps:
- uses: actions/checkout@v4 - uses: actions/checkout@v4
@ -207,27 +205,13 @@ jobs:
- uses: crystal/install-jq-action@v2.1.0 - uses: crystal/install-jq-action@v2.1.0
- run: mkdir forgejo-release - run: mkdir forgejo-release
- run: mv *.deb *.deb.sha256 forgejo-release/ - run: mv *.deb *.deb.sha256 forgejo-release/
- uses: actions/forgejo-release@v1
with:
direction: upload
url: https://codeberg.org
token: ${{ secrets.codeberg_api_key }}
release-dir: forgejo-release
- uses: actions/forgejo-release@v1
with:
direction: upload
url: https://code.forgejo.org
token: ${{ secrets.cfo_api_key }}
release-dir: forgejo-release
- name: Debian package registry publish - name: Debian package registry publish
env: env:
FORGEJO_SITE: https://code.forgejo.org FORGEJO_SITE: https://git.alexjanka.com
FORGEJO_OWNER: forgejo-contrib FORGEJO_OWNER: alex
DEBIAN_DIST: bullseye DEBIAN_DIST: testing
DEBIAN_COMPONENT: forgejo-lts DEBIAN_COMPONENT: main
FORGEJO_KEY: ${{ secrets.cfo_api_key }} FORGEJO_KEY: ${{ secrets.cfo_api_key }}
run: | run: |
cd forgejo-release cd forgejo-release

View file

@ -1,5 +1,5 @@
Package: forgejo-bin Package: forgejo-bin
Architecture: amd64 Architecture: arm64
Priority: optional Priority: optional
Provides: forgejo, gitea Provides: forgejo, gitea
Depends: adduser (>= 3.11), git Depends: adduser (>= 3.11), git

View file

@ -5,7 +5,7 @@ Maintainer: crystal <crystal@noreply.codeberg.org>
Build-Depends: debhelper (>= 10) Build-Depends: debhelper (>= 10)
Package: forgejo Package: forgejo
Architecture: amd64 Architecture: arm64
Priority: optional Priority: optional
Provides: gitea Provides: gitea
Depends: forgejo-common (= ${source:Version}), adduser (>= 3.11), git Depends: forgejo-common (= ${source:Version}), adduser (>= 3.11), git
@ -14,7 +14,7 @@ Description: Forgejo: Beyond Coding. We Forge.
Forgejo with bindata ONLY - Use this package for MySQL or PostgreSQL setup Forgejo with bindata ONLY - Use this package for MySQL or PostgreSQL setup
Package: forgejo-sqlite Package: forgejo-sqlite
Architecture: amd64 Architecture: arm64
Priority: optional Priority: optional
Provides: forgejo, gitea Provides: forgejo, gitea
Depends: forgejo-common (= ${source:Version}), adduser (>= 3.11), git Depends: forgejo-common (= ${source:Version}), adduser (>= 3.11), git