From bcaec4cb84d7584fd73244f08cec61ff637544b5 Mon Sep 17 00:00:00 2001 From: Alex Janka Date: Mon, 13 Jan 2025 15:24:31 +1100 Subject: [PATCH] arm --- .ci-make.sh | 605 +++++++++++++++-------------- .forgejo/workflows/forgejo-deb.yml | 66 ++-- deb/.forgejo-bin.control | 2 +- deb/debian/control | 4 +- 4 files changed, 331 insertions(+), 346 deletions(-) diff --git a/.ci-make.sh b/.ci-make.sh index 4d5de56..efacde6 100755 --- a/.ci-make.sh +++ b/.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 diff --git a/.forgejo/workflows/forgejo-deb.yml b/.forgejo/workflows/forgejo-deb.yml index 3662e9b..04f488d 100644 --- a/.forgejo/workflows/forgejo-deb.yml +++ b/.forgejo/workflows/forgejo-deb.yml @@ -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 @@ -207,27 +205,13 @@ jobs: - uses: crystal/install-jq-action@v2.1.0 - 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 diff --git a/deb/.forgejo-bin.control b/deb/.forgejo-bin.control index ead2966..c8e52e4 100644 --- a/deb/.forgejo-bin.control +++ b/deb/.forgejo-bin.control @@ -1,5 +1,5 @@ Package: forgejo-bin -Architecture: amd64 +Architecture: arm64 Priority: optional Provides: forgejo, gitea Depends: adduser (>= 3.11), git diff --git a/deb/debian/control b/deb/debian/control index 4dd44a1..22b273a 100644 --- a/deb/debian/control +++ b/deb/debian/control @@ -5,7 +5,7 @@ Maintainer: crystal 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