From 552135dc7b8b05f3046a9b360d523e15add6101d Mon Sep 17 00:00:00 2001 From: crystal Date: Wed, 20 Nov 2024 04:21:37 -0700 Subject: [PATCH] [squash] [actions] combine test jobs and use LXC for systemd tests --- .ci-make.sh | 61 ++++++++----- .forgejo/workflows/forgejo-deb.yml | 135 ++++++++++++----------------- 2 files changed, 95 insertions(+), 101 deletions(-) diff --git a/.ci-make.sh b/.ci-make.sh index e4d37f9..4d5de56 100755 --- a/.ci-make.sh +++ b/.ci-make.sh @@ -26,13 +26,13 @@ case "$1" in "actions-prep") case "$2" in "build-forgejo-deb") - APREP_APT_EXTRAS="debhelper devscripts sudo" + APREP_APT_EXTRAS="debhelper devscripts sudo retry" ;; "installtest") APREP_APT_EXTRAS="sudo" - ;; - "complextest") - APREP_APT_EXTRAS="sudo wget" + if [ ! "$TEST_DEBIAN_BUSTER" ] ; then + APREP_APT_EXTRAS="$APREP_APT_EXTRAS retry" + fi ;; "") APREP_APT_EXTRAS= @@ -212,19 +212,29 @@ case "$1" in 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 & + 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 - sleep 10 - curl http://localhost:3000/ | grep -A 4 "Powered by Forgejo" exit $? ;; "install-repo-test") @@ -236,11 +246,13 @@ case "$1" in apt upgrade -y apt update -qq apt install -y "$3" - sudo -u forgejo USER=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" + 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") @@ -300,9 +312,12 @@ case "$1" in 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 - sudo deluser forgejo + 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 1c310e2..3662e9b 100644 --- a/.forgejo/workflows/forgejo-deb.yml +++ b/.forgejo/workflows/forgejo-deb.yml @@ -92,12 +92,12 @@ jobs: *.deb.sha256 repo-deb/*.deb - installtest-bookworm-sqlite: - runs-on: bookworm + multitest-bookworm-lxc: + runs-on: lxc-bookworm needs: [build-forgejo-deb] steps: - uses: actions/checkout@v4 - + - name: "actions prep: installtest" id: ciprep run: ./.ci-make.sh actions-prep installtest @@ -107,8 +107,38 @@ jobs: name: forgejo-deb-${{ steps.ciprep.outputs.artifactlabel }} - run: ./.ci-make.sh install-run-test ./forgejo-sqlite_*_amd64.deb + - run: ./.ci-make.sh full-instance-clean + - run: ./.ci-make.sh install-run-test ./forgejo_*_amd64.deb + - run: ./.ci-make.sh full-instance-clean + - run: ./.ci-make.sh install-run-test ./forgejo-bin_*_amd64.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 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 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 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 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 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 verify-data-dir-chmod + - run: ./.ci-make.sh full-instance-clean + - run: ./.ci-make.sh complex-test split-deb-upgrade -sqlite + - run: ./.ci-make.sh full-instance-clean + - run: ./.ci-make.sh complex-test split-deb-upgrade + - run: ./.ci-make.sh full-instance-clean - installtest-bullseye-sqlite: + multitest-bullseye-docker: runs-on: bullseye needs: [build-forgejo-deb] steps: @@ -117,68 +147,27 @@ jobs: - 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 }} + 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 + - run: ./.ci-make.sh full-instance-clean + - run: ./.ci-make.sh install-run-test ./forgejo_*_amd64.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 force-clean-forgejo + - run: ./.ci-make.sh full-instance-clean - installtest-buster-bin: + multitest-buster-docker: runs-on: buster needs: [build-forgejo-deb] + env: + TEST_DEBIAN_BUSTER: 1 + steps: - uses: actions/checkout@v4 @@ -188,31 +177,21 @@ jobs: - uses: actions/download-artifact@v3 with: - name: forgejo-deb-${{ steps.ciprep.outputs.artifactlabel }} + name: forgejo-deb-${{steps.ciprep.outputs.artifactlabel }} - - run: ./.ci-make.sh install-run-test ./forgejo-bin_*_amd64.deb - - complextest-split-deb-upgrade: - 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 complex-test split-deb-upgrade -sqlite + - run: ./.ci-make.sh install-run-test ./forgejo-sqlite_*_amd64.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 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 force-clean-forgejo - run: ./.ci-make.sh full-instance-clean - - run: ./.ci-make.sh complex-test split-deb-upgrade publish-release-repo: runs-on: bookworm - needs: [installtest-bookworm-sqlite, installtest-bullseye-sqlite, installtest-buster-sqlite, installtest-bookworm-user, testsuite-repo-upgrade-sqlite, installtest-buster-bin, complextest-split-deb-upgrade] + 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