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
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:
parent
3ed9644c60
commit
bcaec4cb84
4 changed files with 331 additions and 346 deletions
605
.ci-make.sh
605
.ci-make.sh
|
@ -1,323 +1,324 @@
|
|||
#!/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
|
||||
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"
|
||||
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.CustomConf=/etc/forgejo/app.ini\""
|
||||
export LDFLAGS
|
||||
make build
|
||||
EXIT_STATUS=$?
|
||||
mv gitea ../"$3"
|
||||
exit $EXIT_STATUS
|
||||
"submodule-build")
|
||||
cd "$2"
|
||||
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.CustomConf=/etc/forgejo/app.ini\""
|
||||
export LDFLAGS
|
||||
make build
|
||||
EXIT_STATUS=$?
|
||||
mv gitea ../"$3"
|
||||
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")
|
||||
cd "$2"
|
||||
shift;shift
|
||||
make "$@"
|
||||
exit $?
|
||||
"installtest")
|
||||
APREP_APT_EXTRAS="sudo"
|
||||
if [ ! "$TEST_DEBIAN_BUSTER" ]; then
|
||||
APREP_APT_EXTRAS="$APREP_APT_EXTRAS retry"
|
||||
fi
|
||||
;;
|
||||
"actions-prep")
|
||||
case "$2" in
|
||||
"build-forgejo-deb")
|
||||
APREP_APT_EXTRAS="debhelper devscripts sudo retry"
|
||||
;;
|
||||
"installtest")
|
||||
APREP_APT_EXTRAS="sudo"
|
||||
if [ ! "$TEST_DEBIAN_BUSTER" ] ; then
|
||||
APREP_APT_EXTRAS="$APREP_APT_EXTRAS retry"
|
||||
fi
|
||||
;;
|
||||
"")
|
||||
APREP_APT_EXTRAS=
|
||||
;;
|
||||
*)
|
||||
echo "Invalid argument: $2"
|
||||
exit 98
|
||||
;;
|
||||
"")
|
||||
APREP_APT_EXTRAS=
|
||||
;;
|
||||
*)
|
||||
echo "Invalid argument: $2"
|
||||
exit 98
|
||||
;;
|
||||
esac
|
||||
EXIT_TOTAL=0
|
||||
apt update
|
||||
EXIT_TOTAL=$(($EXIT_TOTAL + $?))
|
||||
apt upgrade -y
|
||||
EXIT_TOTAL=$(($EXIT_TOTAL + $?))
|
||||
if [ "$APREP_APT_EXTRAS" ]; then
|
||||
apt install $APREP_APT_EXTRAS -y
|
||||
EXIT_TOTAL=$(($EXIT_TOTAL + $?))
|
||||
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
|
||||
EXIT_TOTAL=0
|
||||
apt update
|
||||
EXIT_TOTAL=$(($EXIT_TOTAL+$?))
|
||||
apt upgrade -y
|
||||
EXIT_TOTAL=$(($EXIT_TOTAL+$?))
|
||||
if [ "$APREP_APT_EXTRAS" ] ; then
|
||||
apt install $APREP_APT_EXTRAS -y
|
||||
EXIT_TOTAL=$(($EXIT_TOTAL+$?))
|
||||
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
|
||||
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
|
||||
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)
|
||||
if [ ! $CI_COMMIT_TAG_RESOLVE ]; then
|
||||
echo "Failed to resolve exact tag! Getting as close as we can..."
|
||||
git describe --tags HEAD
|
||||
FORGEJO_CLOSEST_TAG=$(git describe --tags HEAD --abbrev=0)
|
||||
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
|
||||
echo "Failed to resolve exact tag! Getting as close as we can..."
|
||||
git describe --tags HEAD
|
||||
FORGEJO_CLOSEST_TAG=$(git describe --tags HEAD --abbrev=0)
|
||||
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
|
||||
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
|
||||
cd ..
|
||||
echo "Proceeding with resolved tag: $CI_COMMIT_TAG_RESOLVE"
|
||||
CI_COMMIT_TAG="$CI_COMMIT_TAG_RESOLVE"
|
||||
fi
|
||||
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)
|
||||
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)
|
||||
wget -nv --content-disposition $CI_RELEASE_BINARY_URL
|
||||
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
|
||||
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
|
||||
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
|
||||
cp -r forgejo/public deb/public
|
||||
cp -r forgejo/templates deb/templates
|
||||
cp -r forgejo/options deb/options
|
||||
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-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
|
||||
cd ..
|
||||
echo "Proceeding with resolved tag: $CI_COMMIT_TAG_RESOLVE"
|
||||
CI_COMMIT_TAG="$CI_COMMIT_TAG_RESOLVE"
|
||||
fi
|
||||
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-arm64)
|
||||
CI_RELEASE_BINARY_URL=$(echo "$CI_RELEASE_ASSETS" | grep linux-arm64\" | jq -r --jsonargs .browser_download_url)
|
||||
CI_RELEASE_SHA256=$(curl $(echo "$CI_RELEASE_ASSETS" | grep linux-arm64.sha256\" | jq -r --jsonargs .browser_download_url) | cut -d ' ' -f1)
|
||||
wget -nv --content-disposition $CI_RELEASE_BINARY_URL
|
||||
DOWNLOAD_SHA256=$(sha256sum forgejo-*-linux-arm64 | cut -d ' ' -f1)
|
||||
if [ $CI_RELEASE_SHA256 != $DOWNLOAD_SHA256 ]; then
|
||||
echo "ERROR: Downloaded file didn't match expected SHA256 sum"
|
||||
exit 1
|
||||
fi
|
||||
;;
|
||||
"package-build-deps")
|
||||
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
|
||||
mv forgejo-*-linux-arm64 $2
|
||||
chmod +x $2
|
||||
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")
|
||||
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
|
||||
echo "ERR! Unable to find the necessary forgejo-common package!"
|
||||
exit 96
|
||||
fi
|
||||
fi
|
||||
apt install -y $APT_FORGEJO_COMMON ./"$2"
|
||||
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
|
||||
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
|
||||
cp -r forgejo/public deb/public
|
||||
cp -r forgejo/templates deb/templates
|
||||
cp -r forgejo/options deb/options
|
||||
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-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
|
||||
;;
|
||||
"package-build-deps")
|
||||
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
|
||||
;;
|
||||
"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")
|
||||
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
|
||||
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
|
||||
exit $?
|
||||
;;
|
||||
"install-repo-test")
|
||||
fi
|
||||
apt install -y $APT_FORGEJO_COMMON ./"$2"
|
||||
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
|
||||
apt update -qq
|
||||
apt install -y apt-utils apt-listchanges
|
||||
apt install -y ./"$2"
|
||||
apt install -y ./forgejo-deb-repo_0-0_all.deb
|
||||
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
|
||||
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
|
||||
apt install forgejo$1
|
||||
cp test-res/app.ini.modified /etc/forgejo/app.ini
|
||||
apt install ./forgejo$1_*_arm64.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
|
||||
|
|
|
@ -48,19 +48,19 @@ jobs:
|
|||
cd forgejo
|
||||
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 checks-backend
|
||||
# - run: ./.ci-make.sh submodule-make forgejo checks-backend
|
||||
|
||||
- name: Download Forgejo binary
|
||||
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
|
||||
|
||||
- name: Build Forgejo (with SQLite) for amd64
|
||||
- name: Build Forgejo (with SQLite) for arm64
|
||||
run: ./.ci-make.sh submodule-build forgejo forgejo-sqlite-bin
|
||||
env:
|
||||
TAGS: sqlite sqlite_unlock_notify
|
||||
|
@ -82,7 +82,7 @@ jobs:
|
|||
./.ci-make.sh pkg-gen-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
|
||||
with:
|
||||
|
@ -106,31 +106,31 @@ jobs:
|
|||
with:
|
||||
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 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 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 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 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 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 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 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-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 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-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 full-instance-clean
|
||||
- run: ./.ci-make.sh complex-test split-deb-upgrade -sqlite
|
||||
|
@ -152,13 +152,13 @@ jobs:
|
|||
with:
|
||||
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 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 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 full-instance-clean
|
||||
|
||||
|
@ -179,20 +179,18 @@ jobs:
|
|||
with:
|
||||
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 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 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 full-instance-clean
|
||||
|
||||
publish-release-repo:
|
||||
publish:
|
||||
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:
|
||||
- uses: actions/checkout@v4
|
||||
|
||||
|
@ -208,26 +206,12 @@ jobs:
|
|||
- run: mkdir 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
|
||||
env:
|
||||
FORGEJO_SITE: https://code.forgejo.org
|
||||
FORGEJO_OWNER: forgejo-contrib
|
||||
DEBIAN_DIST: bullseye
|
||||
DEBIAN_COMPONENT: forgejo-lts
|
||||
FORGEJO_SITE: https://git.alexjanka.com
|
||||
FORGEJO_OWNER: alex
|
||||
DEBIAN_DIST: testing
|
||||
DEBIAN_COMPONENT: main
|
||||
FORGEJO_KEY: ${{ secrets.cfo_api_key }}
|
||||
run: |
|
||||
cd forgejo-release
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
Package: forgejo-bin
|
||||
Architecture: amd64
|
||||
Architecture: arm64
|
||||
Priority: optional
|
||||
Provides: forgejo, gitea
|
||||
Depends: adduser (>= 3.11), git
|
||||
|
|
|
@ -5,7 +5,7 @@ Maintainer: crystal <crystal@noreply.codeberg.org>
|
|||
Build-Depends: debhelper (>= 10)
|
||||
|
||||
Package: forgejo
|
||||
Architecture: amd64
|
||||
Architecture: arm64
|
||||
Priority: optional
|
||||
Provides: gitea
|
||||
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
|
||||
|
||||
Package: forgejo-sqlite
|
||||
Architecture: amd64
|
||||
Architecture: arm64
|
||||
Priority: optional
|
||||
Provides: forgejo, gitea
|
||||
Depends: forgejo-common (= ${source:Version}), adduser (>= 3.11), git
|
||||
|
|
Loading…
Add table
Reference in a new issue