diff --git a/.ci-make.sh b/.ci-make.sh index 52d48df..a1dfce0 100755 --- a/.ci-make.sh +++ b/.ci-make.sh @@ -8,6 +8,10 @@ CI_VERIFY_RETRY_COUNT=30 # How many times to retry before giving up if the pipel 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" @@ -19,6 +23,40 @@ case "$1" in make "$@" exit $? ;; + "actions-prep") + case "$2" in + "build-forgejo-deb") + APREP_APT_EXTRAS="debhelper devscripts sudo" + ;; + "installtest") + APREP_APT_EXTRAS="sudo" + ;; + "") + 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 @@ -43,6 +81,51 @@ case "$1" in 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 + 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 + 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) @@ -66,20 +149,31 @@ case "$1" in 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.preinst deb/debian/forgejo-bin.preinst + 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 - dpkg-buildpackage -b + if [ "$2" = "actions" ] ; then + PACKAGE_BUILD_EXTRA_ARGS="--no-sign" + fi + dpkg-buildpackage -b $PACKAGE_BUILD_EXTRA_ARGS exit $? ;; "package-clean") @@ -105,13 +199,27 @@ case "$1" in "install-run-test") export DEBIAN_FRONTEND=noninteractive apt update - apt install -y ./"$2" - [ -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 \ - forgejo web -q --config /etc/forgejo/app.ini & + 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 "/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 10 curl http://localhost:3000/ | grep -A 4 "Powered by Forgejo" exit $? @@ -124,9 +232,9 @@ case "$1" in apt update -qq apt upgrade -y apt update -qq - apt install "$3" + apt install -y "$3" sudo -u forgejo USER=forgejo \ - HOME=/var/lib/forgejo GITEA_WORK_DIR=/var/lib/forgejo \ + HOME=/var/lib/forgejo FORGEJO_WORK_DIR=/var/lib/forgejo \ forgejo web -q --config /etc/fogejo/app.ini & sleep 10 curl http://localhost:3000/ | grep -A 4 "Powered by Forgejo" @@ -155,6 +263,16 @@ case "$1" in 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 ;; esac diff --git a/.crystalintegration.yml b/.crystalintegration.yml deleted file mode 100644 index 8a6a9c8..0000000 --- a/.crystalintegration.yml +++ /dev/null @@ -1,349 +0,0 @@ -labels: - platform: linux/amd64 - -when: - event: [ push, tag ] - -variables: - - &ci_verify_image 'sc.cryxtal.org/ci-img/git-curl-jq:latest' - - &golang_image 'golang:1.21-bullseye' - - &forgejo_test_image 'docker.io/node:20-bookworm' - - &nodejs_image 'docker.io/node:20-bookworm' - - &bin_dl_image 'sc.cryxtal.org/ci-img/bin-dl:latest' - - &deb_build_image 'sc.cryxtal.org/ci-img/dh:bullseye' - - &deb_test_image_bullseye 'sc.cryxtal.org/ci-img/deb-test:bullseye' - - &deb_test_image_bookworm 'sc.cryxtal.org/ci-img/deb-test:bookworm' - - &deb_test_image_buster 'sc.cryxtal.org/ci-img/deb-test:buster' - - &deb_test_image_sid 'sc.cryxtal.org/ci-img/deb-test:sid' - - &deb_test_image_jammy 'sc.cryxtal.org/ci-img/deb-test-ubuntu:jammy' - - &deb_test_image_focal 'sc.cryxtal.org/ci-img/deb-test-ubuntu:focal' - - &deb_test_image_mantic 'sc.cryxtal.org/ci-img/deb-test-ubuntu:mantic' - - &deb_test_image_lunar 'sc.cryxtal.org/ci-img/deb-test-ubuntu:lunar' - - &forgejo_test_golang_ver '1.21' - - &build_submodule 'forgejo' - - &goproxy_override '' - - &goproxy_setup |- - if [ -n "$${GOPROXY_OVERRIDE:-}" ]; then - export GOPROXY="$${GOPROXY_OVERRIDE}"; - echo "Using goproxy from goproxy_override \"$${GOPROXY}\""; - elif [ -n "$${GOPROXY_DEFAULT:-}" ]; then - export GOPROXY="$${GOPROXY_DEFAULT}"; - echo "Using goproxy from goproxy_default (secret) not displaying"; - else - export GOPROXY="https://proxy.golang.org,direct"; - echo "No goproxy overrides or defaults given, using \"$${GOPROXY}\""; - fi - -workspace: - base: /go - path: src/cryxtal/forgejo-deb - -clone: - git: - image: woodpeckerci/plugin-git - settings: - recursive: true - -steps: - fetch-tags: - image: *ci_verify_image - pull: true - commands: - - git config --add safe.directory '*' - - git fetch --tags --force - - git submodule foreach 'git fetch --tags --force' - - ci-verify: - image: *ci_verify_image - group: deps - environment: - BUILD_SUBMODULE: *build_submodule - commands: - - ./.ci-make.sh ci-verify "$BUILD_SUBMODULE" - - deps-frontend: - image: *nodejs_image - group: deps - environment: - BUILD_SUBMODULE: *build_submodule - commands: - - ./.ci-make.sh submodule-make "$BUILD_SUBMODULE" deps-frontend - - deps-backend: - image: *golang_image - group: deps - environment: - BUILD_SUBMODULE: *build_submodule - GOPROXY_OVERRIDE: *goproxy_override - commands: - - *goproxy_setup - - ./.ci-make.sh submodule-make "$BUILD_SUBMODULE" deps-backend - - tag-pre-condition: - image: *ci_verify_image - environment: - BUILD_SUBMODULE: *build_submodule - commands: - - cd "$BUILD_SUBMODULE" - - git update-ref refs/heads/tag_test $(git rev-parse --verify HEAD) - - security-check: - image: *golang_image - group: checks - environment: - BUILD_SUBMODULE: *build_submodule - GOPROXY_OVERRIDE: *goproxy_override - commands: - - *goproxy_setup - - ./.ci-make.sh submodule-make "$BUILD_SUBMODULE" security-check - - checks-backend: - image: *forgejo_test_image - group: checks - environment: - GOPROXY_OVERRIDE: *goproxy_override - DEP_GOLANG_VER: *forgejo_test_golang_ver - commands: - - *goproxy_setup - - ./.ci-make.sh forgejo-test-deps - - su forgejo -c './.ci-make.sh submodule-make forgejo checks-backend' - - chown -R root:root . - - build-frontend: - image: *nodejs_image - group: pre-build - environment: - BUILD_SUBMODULE: *build_submodule - commands: - - ./.ci-make.sh submodule-make "$BUILD_SUBMODULE" frontend - - download-bin-amd64: - image: *bin_dl_image - group: build-main - commands: - - ./.ci-make.sh download-binary forgejo-bin-dl - when: - event: [ tag ] - - build-forgejo-amd64: - image: *golang_image - group: build-main - environment: - BUILD_SUBMODULE: *build_submodule - GOSUMDB: sum.golang.org - TAGS: bindata - GOPROXY_OVERRIDE: *goproxy_override - commands: - - *goproxy_setup - - ./.ci-make.sh submodule-build "$BUILD_SUBMODULE" forgejo-bin - - build-forgejo-sqlite-amd64: - image: *golang_image - environment: - BUILD_SUBMODULE: *build_submodule - GOSUMDB: sum.golang.org - TAGS: bindata sqlite sqlite_unlock_notify - GOPROXY_OVERRIDE: *goproxy_override - commands: - - *goproxy_setup - - ./.ci-make.sh submodule-build "$BUILD_SUBMODULE" forgejo-sqlite-bin - - package-bullseye: - image: *deb_build_image - group: package - commands: - - ./.ci-make.sh package-prep - - ./.ci-make.sh package-build - - ./.ci-make.sh package-clean - - package-repo: - image: *deb_build_image - group: package - commands: - - cd repo-deb - - ./build.sh - - gen-sha256: - image: *ci_verify_image - commands: - - ./.ci-make.sh pkg-gen-sha256 - - ./.ci-make.sh preview-sha256 - - test-inst-bookworm: - image: *deb_test_image_bookworm - group: pkg-test-1 - commands: - - ./.ci-make.sh install-run-test ./forgejo_*_amd64.deb - - test-inst-bookworm-user: - image: *deb_test_image_bookworm - group: pkg-test-1 - commands: - - ./.ci-make.sh test-userinst-prep - - ./.ci-make.sh install-run-test ./forgejo_*_amd64.deb - - test-inst-bullseye-sqlite: - image: *deb_test_image_bullseye - group: pkg-test-1 - commands: - - ./.ci-make.sh install-run-test ./forgejo-sqlite_*_amd64.deb - - test-inst-bookworm-sqlite: - image: *deb_test_image_bookworm - group: pkg-test-1 - commands: - - ./.ci-make.sh install-run-test ./forgejo-sqlite_*_amd64.deb - - test-inst-buster-sqlite: - image: *deb_test_image_buster - group: pkg-test-2 - commands: - - ./.ci-make.sh install-run-test ./forgejo-sqlite_*_amd64.deb - - test-inst-sid-sqlite: - image: *deb_test_image_sid - group: pkg-test-2 - commands: - - ./.ci-make.sh install-run-test ./forgejo-sqlite_*_amd64.deb - - test-inst-jammy-sqlite: - image: *deb_test_image_jammy - group: pkg-test-2 - commands: - - ./.ci-make.sh install-run-test ./forgejo-sqlite_*_amd64.deb - - test-inst-focal-sqlite: - image: *deb_test_image_focal - group: pkg-test-2 - commands: - - ./.ci-make.sh install-run-test ./forgejo-sqlite_*_amd64.deb - - test-inst-mantic-sqlite: - image: *deb_test_image_mantic - group: pkg-test-3 - commands: - - ./.ci-make.sh install-run-test ./forgejo-sqlite_*_amd64.deb - - test-inst-lunar-sqlite: - image: *deb_test_image_lunar - group: pkg-test-3 - commands: - - ./.ci-make.sh install-run-test ./forgejo-sqlite_*_amd64.deb - - test-inst-bullseye-bin: - image: *deb_test_image_bullseye - group: pkg-test-3 - commands: - - ./.ci-make.sh install-run-test ./forgejo-bin_*_amd64.deb - when: - event: [ tag ] - - test-inst-bookworm-bin: - image: *deb_test_image_bookworm - group: pkg-test-3 - commands: - - ./.ci-make.sh install-run-test ./forgejo-bin_*_amd64.deb - when: - event: [ tag ] - - test-inst-buster-bin: - image: *deb_test_image_buster - group: pkg-test-4 - commands: - - ./.ci-make.sh install-run-test ./forgejo-bin_*_amd64.deb - when: - event: [ tag ] - - test-inst-sid-bin: - image: *deb_test_image_sid - group: pkg-test-4 - commands: - - ./.ci-make.sh install-run-test ./forgejo-bin_*_amd64.deb - when: - event: [ tag ] - - test-inst-jammy-bin: - image: *deb_test_image_jammy - group: pkg-test-4 - commands: - - ./.ci-make.sh install-run-test ./forgejo-bin_*_amd64.deb - when: - event: [ tag ] - - test-inst-focal-bin: - image: *deb_test_image_focal - group: pkg-test-4 - commands: - - ./.ci-make.sh install-run-test ./forgejo-bin_*_amd64.deb - when: - event: [ tag ] - - test-inst-mantic-bin: - image: *deb_test_image_mantic - group: pkg-test-5 - commands: - - ./.ci-make.sh install-run-test ./forgejo-bin_*_amd64.deb - when: - event: [ tag ] - - test-inst-lunar-bin: - image: *deb_test_image_lunar - group: pkg-test-5 - commands: - - ./.ci-make.sh install-run-test ./forgejo-bin_*_amd64.deb - when: - event: [ tag ] - - test-repo-bookworm-sqlite: - image: *deb_test_image_bookworm - group: pkg-test-5 - commands: - - ./.ci-make.sh install-repo-test ./repo-deb/forgejo-deb-repo_0-0_all.deb forgejo-sqlite - - ./.ci-make.sh force-clean-forgejo - - ./.ci-make.sh install-run-test ./forgejo-sqlite_*_amd64.deb - - ./.ci-make.sh verify-data-dir-chmod - - upload-crystalcommit: - image: woodpeckerci/plugin-gitea-release - group: upload - settings: - base_url: https://sc.cryxtal.org - files: - - "*.deb" - - "*.deb.sha256" - api_key: - from_secret: sc_api_key - prerelease: false - skip_verify: true - when: - event: [ tag ] - - upload-codeberg: - image: woodpeckerci/plugin-gitea-release - group: upload - settings: - base_url: https://codeberg.org - files: - - "*.deb" - - "*.deb.sha256" - api_key: - from_secret: cb_api_key - prerelease: false - skip_verify: true - when: - event: [ tag ] - - publish-apt-repo: - image: *ci_verify_image - group: upload - environment: - FORGEJO_SITE: https://code.forgejo.org - FORGEJO_OWNER: forgejo-contrib - DEBIAN_DIST: bullseye - DEBIAN_COMPONENT: forgejo - secrets: [ cfo_api_key ] - commands: - - export FORGEJO_KEY=$CFO_API_KEY - - ./.ci-forgejo-apt.sh *.deb - when: - event: [ tag ] diff --git a/.forgejo/workflows/forgejo-deb.yml b/.forgejo/workflows/forgejo-deb.yml new file mode 100644 index 0000000..99dce7e --- /dev/null +++ b/.forgejo/workflows/forgejo-deb.yml @@ -0,0 +1,223 @@ +on: [push, pull_request] +jobs: + build-forgejo-deb: + runs-on: bullseye + steps: + - uses: actions/checkout@v4 + with: + submodules: true + fetch-depth: 0 + fetch-tags: true + filter: tree:0 + + - uses: actions/setup-node@v3 + with: + node-version: 20 + + - uses: actions/setup-go@v4 + with: + go-version: "1.24" + check-latest: true + + - name: "actions prep: build-forgejo-deb" + id: ciprep + run: ./.ci-make.sh actions-prep build-forgejo-deb + + - uses: crystal/install-jq-action@v2.1.0 + - run: ./.ci-make.sh ci-verify forgejo + + - run: ./.ci-make.sh submodule-make forgejo deps-frontend + - run: ./.ci-make.sh submodule-make forgejo deps-backend + + - name: tag pre-condition + run: | + 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 frontend + + - 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 + run: ./.ci-make.sh submodule-build forgejo forgejo-bin + + - name: Build Forgejo (with SQLite) for amd64 + run: ./.ci-make.sh submodule-build forgejo forgejo-sqlite-bin + env: + TAGS: sqlite sqlite_unlock_notify + + - run: ./.ci-make.sh package-prep + - run: ./.ci-make.sh package-build-deps + + - run: ./.ci-make.sh package-build actions + + - run: ./.ci-make.sh package-clean + + - name: build repo package + run: | + cd repo-deb + ./build.sh actions + + - name: generate sha256 + run: | + ./.ci-make.sh pkg-gen-sha256 + ./.ci-make.sh preview-sha256 + + - run: ./.ci-make.sh install-run-test ./forgejo-sqlite_*_amd64.deb + + - uses: actions/upload-artifact@v3 + with: + name: forgejo-deb-${{ steps.ciprep.outputs.artifactlabel }} + path: | + *.deb + *.deb.sha256 + repo-deb/*.deb + + installtest-bookworm-sqlite: + runs-on: bookworm + needs: + - build-forgejo-deb + steps: + - uses: actions/checkout@v4 + + - name: "actions prep: installtest" + id: ciprep + run: ./.ci-make.sh actions-prep installtest + + - uses: actions/download-artifact@v3 + with: + name: forgejo-deb-${{ steps.ciprep.outputs.artifactlabel }} + + - run: ./.ci-make.sh install-run-test ./forgejo-sqlite_*_amd64.deb + + installtest-bullseye-sqlite: + runs-on: bullseye + needs: + - build-forgejo-deb + steps: + - uses: actions/checkout@v4 + + - name: "actions prep: installtest" + id: ciprep + run: ./.ci-make.sh actions-prep installtest + + - uses: actions/download-artifact@v3 + with: + name: forgejo-deb-${{ steps.ciprep.outputs.artifactlabel }} + + - run: ./.ci-make.sh install-run-test ./forgejo-sqlite_*_amd64.deb + + installtest-buster-sqlite: + runs-on: buster + needs: + - build-forgejo-deb + steps: + - uses: actions/checkout@v4 + + - name: "actions prep: installtest" + id: ciprep + run: ./.ci-make.sh actions-prep installtest + + - uses: actions/download-artifact@v3 + with: + name: forgejo-deb-${{ steps.ciprep.outputs.artifactlabel }} + + - run: ./.ci-make.sh install-run-test ./forgejo-sqlite_*_amd64.deb + + installtest-bookworm-user: + runs-on: bookworm + needs: + - build-forgejo-deb + steps: + - uses: actions/checkout@v4 + + - name: "actions prep: installtest" + id: ciprep + run: ./.ci-make.sh actions-prep installtest + + - uses: actions/download-artifact@v3 + with: + name: forgejo-deb-${{ steps.ciprep.outputs.artifactlabel }} + + - run: ./.ci-make.sh test-userinst-prep + - run: ./.ci-make.sh install-run-test ./forgejo_*_amd64.deb + + testsuite-repo-upgrade-sqlite: + runs-on: bookworm + needs: + - build-forgejo-deb + steps: + - uses: actions/checkout@v4 + + - name: "actions prep: installtest" + id: ciprep + run: ./.ci-make.sh actions-prep installtest + + - uses: actions/download-artifact@v3 + with: + name: forgejo-deb-${{ steps.ciprep.outputs.artifactlabel }} + + - run: ./.ci-make.sh install-repo-test ./repo-deb/forgejo-deb-repo_0-0_all.deb forgejo-sqlite + - run: ./.ci-make.sh force-clean-forgejo + - run: ./.ci-make.sh install-run-test ./forgejo-sqlite_*_amd64.deb + - run: ./.ci-make.sh verify-data-dir-chmod + + installtest-buster-bin: + runs-on: buster + needs: + - build-forgejo-deb + steps: + - uses: actions/checkout@v4 + + - name: "actions prep: installtest" + id: ciprep + run: ./.ci-make.sh actions-prep installtest + + - uses: actions/download-artifact@v3 + with: + name: forgejo-deb-${{ steps.ciprep.outputs.artifactlabel }} + + - run: ./.ci-make.sh install-run-test ./forgejo-bin_*_amd64.deb + + publish-release-repo: + runs-on: bookworm + needs: + - build-forgejo-deb + steps: + - uses: actions/checkout@v4 + + - name: actions prep + id: ciprep + run: ./.ci-make.sh actions-prep + + - uses: actions/download-artifact@v3 + with: + name: forgejo-deb-${{ steps.ciprep.outputs.artifactlabel }} + + - 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://forgejo.glicid.fr +# token: ${{ secrets.CFO_API_KEY }} +# release-dir: forgejo-release + + - name: Debian package registry publish + env: + FORGEJO_SITE: https://forgejo.glicid.fr + FORGEJO_OWNER: GLiCID + DEBIAN_DIST: bookworm + DEBIAN_COMPONENT: forgejo + FORGEJO_KEY: ${{ secrets.CFO_API_KEY }} + run: | + cd forgejo-release + ../.ci-forgejo-apt.sh *.deb + cd .. diff --git a/.gitmodules b/.gitmodules index 67768c7..5abb796 100644 --- a/.gitmodules +++ b/.gitmodules @@ -1,3 +1,3 @@ [submodule "forgejo"] path = forgejo - url = https://sc.cryxtal.org/forgejo/forgejo + url = https://codeberg.org/forgejo/forgejo diff --git a/README.md b/README.md index 1079963..cabed1d 100644 --- a/README.md +++ b/README.md @@ -1,8 +1,6 @@ # Debian Packages for Forgejo Hello! If you want to run Forgejo on Debian/Ubuntu and you're looking for packages to install it to your system, you've come to the right place! -### Build test: [![ci-status](https://ci.cryxtal.org/api/badges/forgejo-contrib/forgejo-deb/status.svg)](https://ci.cryxtal.org/forgejo-contrib/forgejo-deb) - ## Download info You can find the latest release downloads in [the releases tab](https://codeberg.org/forgejo-contrib/forgejo-deb/releases). There are currently 3 packages built by this script. - `forgejo`: A basic production-ready Forgejo build without SQLite support diff --git a/deb/.forgejo-bin.control b/deb/.forgejo-bin.control index 3f2de6f..ead2966 100644 --- a/deb/.forgejo-bin.control +++ b/deb/.forgejo-bin.control @@ -1,8 +1,8 @@ Package: forgejo-bin Architecture: amd64 Priority: optional -Provides: forgejo,gitea -Depends: adduser (>= 3.11) -Conflicts: forgejo,forgejo-bin +Provides: forgejo, gitea +Depends: adduser (>= 3.11), git +Conflicts: forgejo, forgejo-sqlite, forgejo-common Description: Forgejo: Beyond Coding. We Forge. (binary) The official Forgejo release binary in a Debian package diff --git a/deb/debian/NEWS b/deb/debian/NEWS index b213eec..e24bf94 100644 --- a/deb/debian/NEWS +++ b/deb/debian/NEWS @@ -1,3 +1,18 @@ +forgejo (7.0.1-2) unstable; urgency=medium + + WARNING: Forgejo will be upgraded to v7.0.1 LTS + + Please read the Forgejo v7.0 release announcement and the release notes + for all v7.0.x versions and make any necessary adjustments to your + configuration before proceeding with the upgrade. + + You may need to manually restart Forgejo after the upgrade is complete. + + https://forgejo.org/2024-04-release-v7-0/ + https://codeberg.org/forgejo/forgejo/src/branch/forgejo/RELEASE-NOTES.md#7-0-1 + + -- crystal Sat, 27 Apr 2024 15:42:00 +0000 + forgejo (1.21.4.0-2) unstable; urgency=medium WARNING: Forgejo will be upgraded to v1.21.4-0 diff --git a/deb/debian/changelog b/deb/debian/changelog index 92c8066..562ada8 100644 --- a/deb/debian/changelog +++ b/deb/debian/changelog @@ -1,3 +1,151 @@ +forgejo (11.0.0-1) unstable; urgency=medium + + * Forgejo version 11.0.0 + * See https://codeberg.org/forgejo/forgejo/src/branch/forgejo/RELEASE-NOTES.md#11.0.0 + * Split `forgejo-common` package for extra data + + -- crystal Wed, 30 Apr 2025 00:55:00 +0000 + +forgejo (10.0.3-1) unstable; urgency=medium + + * Forgejo version 10.0.3 + * See https://codeberg.org/forgejo/forgejo/src/branch/forgejo/RELEASE-NOTES.md#10.0.3 + * Split `forgejo-common` package for extra data + + -- crystal Sat, 29 Mar 2025 00:55:00 +0000 + +forgejo (10.0.2-1) unstable; urgency=medium + + * Forgejo version 10.0.2 + * See https://codeberg.org/forgejo/forgejo/src/branch/forgejo/RELEASE-NOTES.md#10.0.2 + * Split `forgejo-common` package for extra data + + -- crystal Sat, 29 Mar 2025 00:55:00 +0000 + +forgejo (10.0.1-1) unstable; urgency=medium + + * Forgejo version 10.0.1 + * See https://codeberg.org/forgejo/forgejo/src/branch/forgejo/RELEASE-NOTES.md#10.0.1 + * Split `forgejo-common` package for extra data + + -- crystal Mon, 17 Feb 2025 00:55:00 +0000 + +forgejo (10.0.0-1) unstable; urgency=medium + + * Forgejo version 10.0.0 + * See https://codeberg.org/forgejo/forgejo/src/branch/forgejo/RELEASE-NOTES.md#10.0.0 + * Split `forgejo-common` package for extra data + + -- crystal Sun, 19 Dec 2025 00:55:00 +0000 + +forgejo (9.0.3-1) unstable; urgency=medium + + * Forgejo version 9.0.3 + * See https://codeberg.org/forgejo/forgejo/src/branch/forgejo/RELEASE-NOTES.md#9.0.3 + * Split `forgejo-common` package for extra data + + -- crystal Sat, 14 Dec 2024 00:55:00 +0000 + +forgejo (9.0.2-1) unstable; urgency=medium + + * Forgejo version 9.0.2 + * See https://codeberg.org/forgejo/forgejo/src/branch/forgejo/RELEASE-NOTES.md#9.0.2 + * Split `forgejo-common` package for extra data + + -- crystal Sat, 14 Dec 2024 00:55:00 +0000 + +forgejo (9.0.1-1) unstable; urgency=medium + + * Forgejo version 9.0.1 + * See https://codeberg.org/forgejo/forgejo/src/branch/forgejo/RELEASE-NOTES.md#9.0.1 + * Split `forgejo-common` package for extra data + + -- crystal Mon, 28 Oct 2024 00:55:00 +0000 + +forgejo (8.0.3-1) unstable; urgency=medium + + * Forgejo version 8.0.3 + * See https://codeberg.org/forgejo/forgejo/src/branch/forgejo/RELEASE-NOTES.md#8.0.3 + * Split `forgejo-common` package for extra data + + -- crystal Sun, 15 Sep 2024 00:55:00 +0000 + +forgejo (8.0.2-1) unstable; urgency=medium + + * Forgejo version 8.0.2 + * See https://codeberg.org/forgejo/forgejo/src/branch/forgejo/RELEASE-NOTES.md#8.0.2 + * Split `forgejo-common` package for extra data + + -- crystal Sun, 01 Sep 2024 00:55:00 +0000 + +forgejo (8.0.1-1) unstable; urgency=medium + + * Forgejo version 8.0.1 + * See https://codeberg.org/forgejo/forgejo/src/branch/forgejo/RELEASE-NOTES.md#8.0.1 + * Split `forgejo-common` package for extra data + + -- crystal Tue, 27 Aug 2024 00:55:00 +0000 + +forgejo (7.0.7-1) unstable; urgency=medium + + * Forgejo version 7.0.7 + * See https://codeberg.org/forgejo/forgejo/src/branch/forgejo/RELEASE-NOTES.md#7-0-7 + * Split `forgejo-common` package for extra data + + -- crystal Mon, 26 Aug 2024 00:55:00 +0000 + +forgejo (7.0.5-1) unstable; urgency=medium + + * Forgejo version 7.0.5 + * See https://codeberg.org/forgejo/forgejo/src/branch/forgejo/RELEASE-NOTES.md#7-0-5 + * Split `forgejo-common` package for extra data + + -- crystal Sun, 07 July 2024 17:22:00 +0000 + +forgejo (7.0.1-1) unstable; urgency=medium + + * Forgejo version 7.0.1 + * See https://codeberg.org/forgejo/forgejo/src/branch/forgejo/RELEASE-NOTES.md#7-0-1 + * Forgejo Actions based build process + + -- crystal Sat, 27 Apr 2024 15:35:00 +0000 + +forgejo (1.21.11.1-1) unstable; urgency=medium + + * Forgejo version 1.21.11-1 + * See https://codeberg.org/forgejo/forgejo/src/branch/forgejo/RELEASE-NOTES.md#1-21-11-1 + + -- crystal Fri, 19 Apr 2024 15:46:00 +0000 + +forgejo (1.21.11.0-1) unstable; urgency=medium + + * Forgejo version 1.21.11-0 + * See https://codeberg.org/forgejo/forgejo/src/branch/forgejo/RELEASE-NOTES.md#1-21-11-0 + + -- crystal Thu, 18 Apr 2024 23:36:00 +0000 + +forgejo (1.21.10.0-1) unstable; urgency=medium + + * Forgejo version 1.21.10-0 + * See https://codeberg.org/forgejo/forgejo/src/branch/forgejo/RELEASE-NOTES.md#1-21-10-0 + + -- crystal Tue, 9 Apr 2024 11:27:00 +0000 + +forgejo (1.21.8.0-1) unstable; urgency=medium + + * Forgejo version 1.21.8-0 + * See https://codeberg.org/forgejo/forgejo/src/branch/forgejo/RELEASE-NOTES.md#1-21-8-0 + + -- crystal Sat, 23 Mar 2024 18:15:00 +0000 + +forgejo (1.21.7.0-2) unstable; urgency=medium + + * Forgejo version 1.21.7-0 + * Add git dependency + * See https://codeberg.org/forgejo/forgejo/src/branch/forgejo/RELEASE-NOTES.md#1-21-7-0 + + -- crystal Fri, 22 Mar 2024 21:35:00 +0000 + forgejo (1.21.6.0-1) unstable; urgency=medium * Forgejo version 1.21.6-0 diff --git a/deb/debian/control b/deb/debian/control index d77bbe4..ae16460 100644 --- a/deb/debian/control +++ b/deb/debian/control @@ -8,16 +8,24 @@ Package: forgejo Architecture: amd64 Priority: optional Provides: gitea -Depends: adduser (>= 3.11) -Conflicts: forgejo-sqlite,forgejo-bin +Depends: forgejo-common (= ${source:Version}), adduser (>= 3.11), git +Conflicts: forgejo-sqlite, forgejo-bin Description: Forgejo: Beyond Coding. We Forge. Forgejo with bindata ONLY - Use this package for MySQL or PostgreSQL setup Package: forgejo-sqlite Architecture: amd64 Priority: optional -Provides: forgejo,gitea -Depends: adduser (>= 3.11) -Conflicts: forgejo,forgejo-bin +Provides: forgejo, gitea +Depends: forgejo-common (= ${source:Version}), adduser (>= 3.11), git +Conflicts: forgejo, forgejo-bin Description: Forgejo: Beyond Coding. We Forge. (SQLite) Forgejo with bindata and SQLite support - Use this package to get started immediately + +Package: forgejo-common +Architecture: all +Priority: optional +Depends: forgejo | forgejo-sqlite (= ${source:Version}) +Conflicts: forgejo-bin +Description: Common files for Forgejo + Common data used for all Forgejo packages and architectures. diff --git a/deb/debian/forgejo-common.install b/deb/debian/forgejo-common.install new file mode 100644 index 0000000..5904930 --- /dev/null +++ b/deb/debian/forgejo-common.install @@ -0,0 +1,5 @@ +public/ /usr/share/forgejo +templates/ /usr/share/forgejo +options/ /usr/share/forgejo +forgejo.service /usr/lib/systemd/system +app.ini /etc/forgejo diff --git a/deb/debian/forgejo.preinst b/deb/debian/forgejo-common.preinst similarity index 100% rename from deb/debian/forgejo.preinst rename to deb/debian/forgejo-common.preinst diff --git a/deb/debian/forgejo-sqlite.install b/deb/debian/forgejo-sqlite.install index 7a55675..106c3c8 100644 --- a/deb/debian/forgejo-sqlite.install +++ b/deb/debian/forgejo-sqlite.install @@ -1,3 +1 @@ forgejo-sqlite-bin/forgejo /usr/bin -forgejo.service /usr/lib/systemd/system -app.ini /etc/forgejo diff --git a/deb/debian/forgejo-sqlite.preinst b/deb/debian/forgejo-sqlite.preinst deleted file mode 120000 index c9dce9a..0000000 --- a/deb/debian/forgejo-sqlite.preinst +++ /dev/null @@ -1 +0,0 @@ -forgejo.preinst \ No newline at end of file diff --git a/deb/debian/forgejo.install b/deb/debian/forgejo.install index 6440cb3..db18dc4 100644 --- a/deb/debian/forgejo.install +++ b/deb/debian/forgejo.install @@ -1,3 +1 @@ forgejo-bin/forgejo /usr/bin -forgejo.service /usr/lib/systemd/system -app.ini /etc/forgejo diff --git a/deb/forgejo.service b/deb/forgejo.service index 008d93e..c5f3bc8 100644 --- a/deb/forgejo.service +++ b/deb/forgejo.service @@ -61,7 +61,7 @@ WorkingDirectory=~ #RuntimeDirectory=forgejo ExecStart=/usr/bin/forgejo web --config /etc/forgejo/app.ini Restart=always -Environment=USER=forgejo HOME=/var/lib/forgejo GITEA_WORK_DIR=/var/lib/forgejo +Environment=USER=forgejo HOME=/var/lib/forgejo FORGEJO_WORK_DIR=/var/lib/forgejo # If you install Git to directory prefix other than default PATH (which happens # for example if you install other versions of Git side-to-side with # distribution version), uncomment below line and add that prefix to PATH diff --git a/etc/systemd/system/forgejo.service.d/override.conf b/etc/systemd/system/forgejo.service.d/override.conf index f626df8..02635f5 100644 --- a/etc/systemd/system/forgejo.service.d/override.conf +++ b/etc/systemd/system/forgejo.service.d/override.conf @@ -3,4 +3,4 @@ # LimitNOFILE=524288:524288 User=git Group=git -Environment=USER=git HOME=/var/lib/forgejo GITEA_WORK_DIR=/var/lib/forgejo +Environment=USER=git HOME=/var/lib/forgejo FORGEJO_WORK_DIR=/var/lib/forgejo diff --git a/forgejo b/forgejo index 031822b..308810c 160000 --- a/forgejo +++ b/forgejo @@ -1 +1 @@ -Subproject commit 031822b8fcf4a49efb15c7184115a5f30795e0d6 +Subproject commit 308810cdd17e3edf928d38c5d410acf2c7aa7618 diff --git a/repo-deb/build.sh b/repo-deb/build.sh index d9eed8c..bdb1ef2 100755 --- a/repo-deb/build.sh +++ b/repo-deb/build.sh @@ -4,10 +4,13 @@ cp code-forgejo-org-forgejo-contrib.asc stub/ cp code-forgejo-org-forgejo-contrib.asc main/ cp forgejo-deb.list stub/ cp forgejo-deb.list main/ +if [ "$1" = "actions" ] ; then + PACKAGE_BUILD_EXTRA_ARGS="--no-sign" +fi cd stub -dpkg-buildpackage -b +dpkg-buildpackage -b $PACKAGE_BUILD_EXTRA_ARGS cd .. cd main -dpkg-buildpackage -b +dpkg-buildpackage -b $PACKAGE_BUILD_EXTRA_ARGS cd .. exit 0 diff --git a/repo-deb/forgejo-deb.list b/repo-deb/forgejo-deb.list index 946a727..8a6def5 100644 --- a/repo-deb/forgejo-deb.list +++ b/repo-deb/forgejo-deb.list @@ -1 +1 @@ -deb https://code.forgejo.org/api/packages/forgejo-contrib/debian bullseye forgejo +deb https://code.forgejo.org/api/packages/forgejo-contrib/debian bullseye forgejo-lts diff --git a/repo-deb/main/debian/NEWS b/repo-deb/main/debian/NEWS new file mode 100644 index 0000000..d2ae9fc --- /dev/null +++ b/repo-deb/main/debian/NEWS @@ -0,0 +1,26 @@ +forgejo-deb-repo (2-4) unstable; urgency=medium + + WARNING: You are switching to the Forgejo LTS release channel! + + After this upgrade is complete, you must run `apt upgrade` again to upgrade + to Forgejo 7.0.x LTS. You will no longer recieve new major Forgejo versions + until the next LTS version is available. + + If you wish to switch to the standard release channel, use the following + commands to install the setup package. This package will be removed when the + release channel is successfully switched during the upgrade. + + sudo apt install forgejo-deb-repo-stable + sudo apt update + sudo apt full-upgrade + + More info: https://codeberg.org/forgejo-contrib/forgejo-deb/issues/35 + + Please read the Forgejo v7.0 release announcement and the release notes + for all v7.0.x versions and make any necessary adjustments to your + configuration before proceeding with the following upgrade. + + https://forgejo.org/2024-04-release-v7-0/ + https://codeberg.org/forgejo/forgejo/src/branch/forgejo/RELEASE-NOTES.md#7-0-1 + + -- crystal Sun, 28 Apr 2024 17:48:00 +0000 diff --git a/repo-deb/main/debian/changelog b/repo-deb/main/debian/changelog index 088aae2..6d67096 100644 --- a/repo-deb/main/debian/changelog +++ b/repo-deb/main/debian/changelog @@ -1,3 +1,15 @@ +forgejo-deb-repo (2-4) unstable; urgency=medium + + * Switch to forgejo-lts component (LTS release channel) + + -- crystal Sun, 28 Apr 2024 17:48:00 +0000 + +forgejo-deb-repo (2-2) unstable; urgency=medium + + * Add apt-listchanges dep for important upgrade notices + + -- crystal Sun, 28 Apr 2024 13:13:00 +0000 + forgejo-deb-repo (2-1) unstable; urgency=medium * Move to https://code.forgejo.org/forgejo-contrib/-/packages diff --git a/repo-deb/main/debian/control b/repo-deb/main/debian/control index 7a929c1..ff33adb 100644 --- a/repo-deb/main/debian/control +++ b/repo-deb/main/debian/control @@ -7,7 +7,8 @@ Build-Depends: debhelper (>= 10) Package: forgejo-deb-repo Architecture: all Priority: optional -Depends: forgejo-deb-repokey, apt-transport-https +Depends: forgejo-deb-repokey, apt-transport-https, apt-listchanges +Conflicts: forgejo-deb-repo-lts Description: APT Repository for forgejo-deb builds Forgejo will be updated via apt along with other software on your system diff --git a/repo-deb/stub/debian/changelog b/repo-deb/stub/debian/changelog index 84cc044..5dd821e 100644 --- a/repo-deb/stub/debian/changelog +++ b/repo-deb/stub/debian/changelog @@ -2,4 +2,4 @@ forgejo-deb-repo (0-0) unstable; urgency=medium * forgejo-deb APT repository stub - -- crystal Tue, 25 Jul 2023 10:50:00 +0000 + -- crystal Sun, 28 Jul 2024 18:25:00 +0000