From f8f9a1bbdace8c6917bbe45acdfe69f1a7ecd73f Mon Sep 17 00:00:00 2001 From: Earl Warren Date: Wed, 25 Jun 2025 07:39:14 +0200 Subject: [PATCH 01/86] chore(release): v13.0 exists --- forgejo/sources/13.0 | 1 + lib/lib.sh | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) create mode 100644 forgejo/sources/13.0 diff --git a/forgejo/sources/13.0 b/forgejo/sources/13.0 new file mode 100644 index 00000000..24bcca16 --- /dev/null +++ b/forgejo/sources/13.0 @@ -0,0 +1 @@ +https://codeberg.org/forgejo/forgejo forgejo 13.0.0 diff --git a/lib/lib.sh b/lib/lib.sh index 1130a5bd..22055dc5 100644 --- a/lib/lib.sh +++ b/lib/lib.sh @@ -26,7 +26,7 @@ IP=$(hostname -I | cut -f1 -d' ') # # Forgejo releases for which a branch exists (7.0/forgejo etc.) # -RELEASE_NUMBERS="7.0 11.0 12.0" +RELEASE_NUMBERS="11.0 12.0 13.0" PREFIX=============== export DIR=/tmp/forgejo-end-to-end From 3d5a218709a8ba76dc135fb74e3eb8259c89b317 Mon Sep 17 00:00:00 2001 From: Earl Warren Date: Mon, 30 Jun 2025 17:45:12 +0200 Subject: [PATCH 02/86] actions: add test for hashFiles() As of https://code.forgejo.org/forgejo/act/commit/7c7d80ebdd4aee01bb858a828ad864aa120b4a75 a step with hashFiles('...') will lookup the file from the container running the job. --- .../.forgejo/workflows/test.yml | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/actions/example-expression/.forgejo/workflows/test.yml b/actions/example-expression/.forgejo/workflows/test.yml index ab4bb646..e20a996a 100644 --- a/actions/example-expression/.forgejo/workflows/test.yml +++ b/actions/example-expression/.forgejo/workflows/test.yml @@ -98,10 +98,11 @@ jobs: set -x test "${{ fromJSON('["one","two"]')[0] }}" = 'one' - # As of act v1.13.0 this fails for real (before it pretended to work but did not) - # - name: hashFiles - # run: | - # set -x - # hash="bd52020371c038c4ad38a8d2df05dfa1a220d40fbe1ae83b63d6010cb527e531" - # test "${{ hashFiles('actions/example-expression/.forgejo/fileone.txt') }}" = $hash - # test "${{ hashFiles('actions/example-expression/.forgejo/fileone.*') }}" = $hash + - uses: actions/checkout@v4 + + - name: hashFiles + run: | + set -x + hash="aea6ca2329c852f5b480ec35e1fe09d39a6bd1b50f4f9cc38fbd4fef870dc107" + test "${{ hashFiles('.forgejo/fileone.txt') }}" = $hash + test "${{ hashFiles('.forgejo/fileone.*') }}" = $hash From 3bd75af38cb30c65763525901be23cf55b574362 Mon Sep 17 00:00:00 2001 From: Renovate Bot Date: Wed, 2 Jul 2025 00:01:02 +0000 Subject: [PATCH 03/86] Update https://data.forgejo.org/actions/setup-forgejo action to v2.0.12 --- .forgejo/prepare-end-to-end/action.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.forgejo/prepare-end-to-end/action.yml b/.forgejo/prepare-end-to-end/action.yml index a713112b..52e997a7 100644 --- a/.forgejo/prepare-end-to-end/action.yml +++ b/.forgejo/prepare-end-to-end/action.yml @@ -11,7 +11,7 @@ runs: /usr/local/bin/garage key: S3 - - uses: https://data.forgejo.org/actions/setup-forgejo@v2.0.11 + - uses: https://data.forgejo.org/actions/setup-forgejo@v2.0.12 with: install-only: true - run: forgejo-binary.sh ensure_user forgejo From dd31a59c1ebade99c1f12de42a9947c41bcbe1a6 Mon Sep 17 00:00:00 2001 From: Earl Warren Date: Wed, 2 Jul 2025 10:53:36 +0000 Subject: [PATCH 04/86] actions: config-options: test for envs and env-file (#722) Refs: forgejo/runner#287 Reviewed-on: https://code.forgejo.org/forgejo/end-to-end/pulls/722 Reviewed-by: Michael Kriese Co-authored-by: Earl Warren Co-committed-by: Earl Warren --- .../example-config-options/.forgejo/workflows/test.yml | 8 ++++++++ actions/example-config-options/env_file | 1 + actions/example-config-options/runner-config.yaml | 4 +++- actions/example-config-options/setup.sh | 5 ++++- 4 files changed, 16 insertions(+), 2 deletions(-) create mode 100644 actions/example-config-options/env_file diff --git a/actions/example-config-options/.forgejo/workflows/test.yml b/actions/example-config-options/.forgejo/workflows/test.yml index d9c03241..63bbc212 100644 --- a/actions/example-config-options/.forgejo/workflows/test.yml +++ b/actions/example-config-options/.forgejo/workflows/test.yml @@ -11,6 +11,14 @@ jobs: - run: | ! test -f /srv/example-config-options-volume-invalid - run: | + set -x test "$FROB" = "NITZ" - run: | + set -x + test "$VAR_FROM_ENV_FILE" = "VALUE_FROM_ENV_FILE" + - run: | + set -x + test "$VAR_FROM_ENV_IN_CONFIG" = "VALUE_FROM_ENV_IN_CONFIG" + - run: | + set -x test "$(cat /etc/hostname)" = customname diff --git a/actions/example-config-options/env_file b/actions/example-config-options/env_file new file mode 100644 index 00000000..c5b811ba --- /dev/null +++ b/actions/example-config-options/env_file @@ -0,0 +1 @@ +VAR_FROM_ENV_FILE=VALUE_FROM_ENV_FILE diff --git a/actions/example-config-options/runner-config.yaml b/actions/example-config-options/runner-config.yaml index 0daf906f..ec5d1c5d 100644 --- a/actions/example-config-options/runner-config.yaml +++ b/actions/example-config-options/runner-config.yaml @@ -6,7 +6,9 @@ log: runner: file: .runner capacity: 1 - env_file: .env + envs: + VAR_FROM_ENV_IN_CONFIG: VALUE_FROM_ENV_IN_CONFIG + env_file: env_file timeout: 3h insecure: true fetch_timeout: 5s diff --git a/actions/example-config-options/setup.sh b/actions/example-config-options/setup.sh index d9f6ea9c..1e62e683 100755 --- a/actions/example-config-options/setup.sh +++ b/actions/example-config-options/setup.sh @@ -1,3 +1,6 @@ >/srv/example-config-options-volume-valid >/srv/example-config-options-volume-invalid -FORGEJO_RUNNER_CONFIG=$EXAMPLE_DIR/runner-config.yaml forgejo-runner.sh reload +TMPDIR=$(mktemp -d) +cp $EXAMPLE_DIR/runner-config.yaml $EXAMPLE_DIR/env_file $TMPDIR +sed -i -e "s|env_file:.*|env_file: $TMPDIR/env_file|" $TMPDIR/runner-config.yaml +FORGEJO_RUNNER_CONFIG=$TMPDIR/runner-config.yaml forgejo-runner.sh reload From 07b9318ff7003e3646313c753cc04fd9eeb7207b Mon Sep 17 00:00:00 2001 From: Earl Warren Date: Wed, 2 Jul 2025 10:54:26 +0000 Subject: [PATCH 05/86] actions: config-options: mount read-only (#718) To illustrate (partially) [this feature request](https://code.forgejo.org/forgejo/runner/issues/79#issuecomment-43844) Reviewed-on: https://code.forgejo.org/forgejo/end-to-end/pulls/718 Reviewed-by: Michael Kriese Co-authored-by: Earl Warren Co-committed-by: Earl Warren --- actions/example-config-options/.forgejo/workflows/test.yml | 2 ++ actions/example-config-options/runner-config.yaml | 2 +- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/actions/example-config-options/.forgejo/workflows/test.yml b/actions/example-config-options/.forgejo/workflows/test.yml index 63bbc212..7845e441 100644 --- a/actions/example-config-options/.forgejo/workflows/test.yml +++ b/actions/example-config-options/.forgejo/workflows/test.yml @@ -8,6 +8,8 @@ jobs: steps: - run: | test -f /srv/example-config-options-volume-valid + - run: | + ! test -w /srv/example-config-options-volume-valid - run: | ! test -f /srv/example-config-options-volume-invalid - run: | diff --git a/actions/example-config-options/runner-config.yaml b/actions/example-config-options/runner-config.yaml index ec5d1c5d..37b7b0ae 100644 --- a/actions/example-config-options/runner-config.yaml +++ b/actions/example-config-options/runner-config.yaml @@ -24,7 +24,7 @@ cache: container: network: "" privileged: false - options: "--volume /srv/example-config-options-volume-valid:/srv/example-config-options-volume-valid --volume /srv/example-config-options-volume-invalid:/srv/example-config-options-volume-invalid --env FROB=NITZ" + options: "--volume /srv/example-config-options-volume-valid:/srv/example-config-options-volume-valid:ro --volume /srv/example-config-options-volume-invalid:/srv/example-config-options-volume-invalid --env FROB=NITZ" workdir_parent: valid_volumes: ["/srv/example-config-options-volume-valid"] docker_host: "" From cd1a0f5076c34ad203036c806c4c2d452e1487fa Mon Sep 17 00:00:00 2001 From: Earl Warren Date: Sun, 6 Jul 2025 12:15:38 +0000 Subject: [PATCH 06/86] chore: add assertions for the forge context and use it instead of github where relevant (#748) Refs forgejo/act#37 Reviewed-on: https://code.forgejo.org/forgejo/end-to-end/pulls/748 Reviewed-by: Michael Kriese Co-authored-by: Earl Warren Co-committed-by: Earl Warren --- .forgejo/workflows/end-to-end.yml | 4 ++-- .../example-context/.forgejo/workflows/test.yml | 17 +++++++++++++++++ .../action-for-context/action.yml | 2 ++ .../.forgejo/workflows/test.yml | 4 ++-- .../.forgejo/workflows/test.yml | 8 ++++---- 5 files changed, 27 insertions(+), 8 deletions(-) diff --git a/.forgejo/workflows/end-to-end.yml b/.forgejo/workflows/end-to-end.yml index 3ab7a47b..d535d37d 100644 --- a/.forgejo/workflows/end-to-end.yml +++ b/.forgejo/workflows/end-to-end.yml @@ -108,7 +108,7 @@ jobs: actions-docs: needs: [build] runs-on: lxc-bookworm - if: github.ref == 'refs/heads/main' + if: forge.ref == 'refs/heads/main' strategy: matrix: info: @@ -135,7 +135,7 @@ jobs: uses: https://data.forgejo.org/actions/cascading-pr@v2.1 with: origin-url: ${{ env.GITHUB_SERVER_URL }} - origin-repo: ${{ github.repository }} + origin-repo: ${{ forge.repository }} origin-token: ${{ secrets.CASCADE_DOCS_ORIGIN_TOKEN }} origin-ref: refs/heads/main destination-url: https://codeberg.org diff --git a/actions/example-context/.forgejo/workflows/test.yml b/actions/example-context/.forgejo/workflows/test.yml index a894bfd2..0f9db31b 100644 --- a/actions/example-context/.forgejo/workflows/test.yml +++ b/actions/example-context/.forgejo/workflows/test.yml @@ -21,6 +21,7 @@ jobs: echo "$GITHUB_ACTION" | grep -E '^[0-9]+$' test "$GITHUB_ACTION" = "${{ env.GITHUB_ACTION }}" test "$GITHUB_ACTION" = "${{ github.ACTION }}" + test "$GITHUB_ACTION" = "${{ forge.ACTION }}" # See also actions/example-local-action/.forgejo/local-action/action.yml - name: GITHUB_ACTION_PATH @@ -29,6 +30,7 @@ jobs: test -z "$GITHUB_ACTION_PATH" test "$GITHUB_ACTION_PATH" = "${{ env.GITHUB_ACTION_PATH }}" test "$GITHUB_ACTION_PATH" = "${{ github.ACTION_PATH }}" + test "$GITHUB_ACTION_PATH" = "${{ forge.ACTION_PATH }}" - name: when running an action if: ${{ env.GITHUB_ACTIONS }} @@ -54,6 +56,7 @@ jobs: test "$GITHUB_ACTOR" test "$GITHUB_ACTOR" = "${{ env.GITHUB_ACTOR }}" test "$GITHUB_ACTOR" = "${{ github.ACTOR }}" + test "$GITHUB_ACTOR" = "${{ forge.ACTOR }}" - name: GITHUB_API_URL shell: bash @@ -62,6 +65,7 @@ jobs: [[ "$GITHUB_API_URL" =~ /api/v1$ ]] test "$GITHUB_API_URL" = "${{ env.GITHUB_API_URL }}" test "$GITHUB_API_URL" = "${{ github.API_URL }}" + test "$GITHUB_API_URL" = "${{ forge.API_URL }}" # See also actions/example-pull-request/.forgejo/workflows/test.yml - name: GITHUB_BASE_REF @@ -70,6 +74,7 @@ jobs: test -z "$GITHUB_BASE_REF" test "$GITHUB_BASE_REF" = "${{ env.GITHUB_BASE_REF }}" test "$GITHUB_BASE_REF" = "${{ github.BASE_REF }}" + test "$GITHUB_BASE_REF" = "${{ forge.BASE_REF }}" # See also actions/example-pull-request/.forgejo/workflows/test.yml - name: GITHUB_HEAD_REF @@ -78,6 +83,7 @@ jobs: test -z "$GITHUB_HEAD_REF" test "$GITHUB_HEAD_REF" = "${{ env.GITHUB_HEAD_REF }}" test "$GITHUB_HEAD_REF" = "${{ github.HEAD_REF }}" + test "$GITHUB_HEAD_REF" = "${{ forge.HEAD_REF }}" - name: GITHUB_ENV run: | @@ -91,6 +97,7 @@ jobs: test "$GITHUB_EVENT_NAME" = push test "$GITHUB_EVENT_NAME" = "${{ env.GITHUB_EVENT_NAME }}" test "$GITHUB_EVENT_NAME" = "${{ github.EVENT_NAME }}" + test "$GITHUB_EVENT_NAME" = "${{ forge.EVENT_NAME }}" - name: GITHUB_JOB run: | @@ -98,6 +105,7 @@ jobs: test "$GITHUB_JOB" = test test "$GITHUB_JOB" = "${{ env.GITHUB_JOB }}" test "$GITHUB_JOB" = "${{ github.JOB }}" + test "$GITHUB_JOB" = "${{ forge.JOB }}" - name: GITHUB_OUTPUT run: | @@ -118,6 +126,7 @@ jobs: [[ "$GITHUB_REF" =~ ^refs/ ]] test "$GITHUB_REF" = "${{ env.GITHUB_REF }}" test "$GITHUB_REF" = "${{ github.REF }}" + test "$GITHUB_REF" = "${{ forge.REF }}" - name: GITHUB_REF_NAME shell: bash @@ -126,6 +135,7 @@ jobs: ! [[ "$GITHUB_REF_NAME" =~ ^refs/ ]] test "$GITHUB_REF_NAME" = "${{ env.GITHUB_REF_NAME }}" test "$GITHUB_REF_NAME" = "${{ github.REF_NAME }}" + test "$GITHUB_REF_NAME" = "${{ forge.REF_NAME }}" - name: GITHUB_REPOSITORY run: | @@ -133,6 +143,7 @@ jobs: test "$GITHUB_REPOSITORY" = root/example-context test "$GITHUB_REPOSITORY" = "${{ env.GITHUB_REPOSITORY }}" test "$GITHUB_REPOSITORY" = "${{ github.REPOSITORY }}" + test "$GITHUB_REPOSITORY" = "${{ forge.REPOSITORY }}" - name: GITHUB_REPOSITORY_OWNER run: | @@ -140,6 +151,7 @@ jobs: test "$GITHUB_REPOSITORY_OWNER" = root test "$GITHUB_REPOSITORY_OWNER" = "${{ env.GITHUB_REPOSITORY_OWNER }}" test "$GITHUB_REPOSITORY_OWNER" = "${{ github.REPOSITORY_OWNER }}" + test "$GITHUB_REPOSITORY_OWNER" = "${{ forge.REPOSITORY_OWNER }}" - name: GITHUB_RUN_NUMBER run: | @@ -147,6 +159,7 @@ jobs: echo "$GITHUB_RUN_NUMBER" | grep -E '^[0-9]+$' test "$GITHUB_RUN_NUMBER" = "${{ env.GITHUB_RUN_NUMBER }}" test "$GITHUB_RUN_NUMBER" = "${{ github.RUN_NUMBER }}" + test "$GITHUB_RUN_NUMBER" = "${{ forge.RUN_NUMBER }}" - name: GITHUB_SERVER_URL shell: bash @@ -155,6 +168,7 @@ jobs: [[ "$GITHUB_SERVER_URL" =~ ^http ]] test "$GITHUB_SERVER_URL" = "${{ env.GITHUB_SERVER_URL }}" test "$GITHUB_SERVER_URL" = "${{ github.SERVER_URL }}" + test "$GITHUB_SERVER_URL" = "${{ forge.SERVER_URL }}" - name: GITHUB_SHA run: | @@ -162,6 +176,7 @@ jobs: test "$GITHUB_SHA" test "$GITHUB_SHA" = "${{ env.GITHUB_SHA }}" test "$GITHUB_SHA" = "${{ github.SHA }}" + test "$GITHUB_SHA" = "${{ forge.SHA }}" - name: GITHUB_STEP_SUMMARY run: | @@ -176,6 +191,7 @@ jobs: test "$GITHUB_TOKEN" test "$GITHUB_TOKEN" = "${{ env.GITHUB_TOKEN }}" test "$GITHUB_TOKEN" = "${{ github.TOKEN }}" + test "$GITHUB_TOKEN" = "${{ forge.TOKEN }}" - name: GITHUB_WORKSPACE run: | @@ -183,6 +199,7 @@ jobs: test -d "$GITHUB_WORKSPACE" test "$GITHUB_WORKSPACE" = "${{ env.GITHUB_WORKSPACE }}" test "$GITHUB_WORKSPACE" = "${{ github.WORKSPACE }}" + test "$GITHUB_WORKSPACE" = "${{ forge.WORKSPACE }}" - name: RUNNER_ARCH run: | diff --git a/actions/example-context/action-for-context/action.yml b/actions/example-context/action-for-context/action.yml index dcb8f2b7..c1c33843 100644 --- a/actions/example-context/action-for-context/action.yml +++ b/actions/example-context/action-for-context/action.yml @@ -12,6 +12,7 @@ runs: test "$GITHUB_ACTION_REPOSITORY" = root/action-for-context test "$GITHUB_ACTION_REPOSITORY" = "${{ env.GITHUB_ACTION_REPOSITORY }}" test "$GITHUB_ACTION_REPOSITORY" = "${{ github.ACTION_REPOSITORY }}" + test "$GITHUB_ACTION_REPOSITORY" = "${{ forge.ACTION_REPOSITORY }}" touch /srv/example/example-context/GITHUB_ACTION_REPOSITORY - name: GITHUB_ACTION_PATH @@ -20,4 +21,5 @@ runs: set -x [[ "$GITHUB_ACTION_PATH" =~ action-for-context@main$ ]] test "$GITHUB_ACTION_PATH" = "${{ github.ACTION_PATH }}" + test "$GITHUB_ACTION_PATH" = "${{ forge.ACTION_PATH }}" touch /srv/example/example-context/GITHUB_ACTION_PATH diff --git a/actions/example-docker-action/.forgejo/workflows/test.yml b/actions/example-docker-action/.forgejo/workflows/test.yml index 6bc63c6d..cec2c9db 100644 --- a/actions/example-docker-action/.forgejo/workflows/test.yml +++ b/actions/example-docker-action/.forgejo/workflows/test.yml @@ -9,11 +9,11 @@ jobs: # - uses: https://data.forgejo.org/forgejo/test-setup-forgejo-docker@main with: - args: ${{ github.workspace }}/SOMEFILE + args: ${{ forge.workspace }}/SOMEFILE # # ... which then also exists in the job workspace # because both docker containers are automatically # sharing the volume that contains it. # - run: | - test -f ${{ github.workspace }}/SOMEFILE + test -f ${{ forge.workspace }}/SOMEFILE diff --git a/actions/example-pull-request/.forgejo/workflows/test.yml b/actions/example-pull-request/.forgejo/workflows/test.yml index 829d9221..2b864cb6 100644 --- a/actions/example-pull-request/.forgejo/workflows/test.yml +++ b/actions/example-pull-request/.forgejo/workflows/test.yml @@ -18,7 +18,7 @@ jobs: run: | set -x test $GITHUB_TOKEN = ${{ env.GITHUB_TOKEN }} - test $GITHUB_TOKEN = ${{ github.token }} + test $GITHUB_TOKEN = ${{ forge.token }} export DEBIAN_FRONTEND=noninteractive ; apt-get -qq update ; apt-get install -y -qq curl git >& /dev/null curl -sS -o /usr/local/bin/forgejo-curl.sh https://code.forgejo.org/forgejo/forgejo-curl/raw/branch/main/forgejo-curl.sh && chmod +x /usr/local/bin/forgejo-curl.sh forgejo-curl.sh --token "$GITHUB_TOKEN" login $GITHUB_SERVER_URL @@ -27,7 +27,7 @@ jobs: - name: determine if the PR is from a fork id: forked run: | - if test ${{ github.event.pull_request.base.repo.full_name }} = ${{ github.event.pull_request.head.repo.full_name }} ; then + if test ${{ forge.event.pull_request.base.repo.full_name }} = ${{ forge.event.pull_request.head.repo.full_name }} ; then echo value=false >> $GITHUB_OUTPUT else echo value=true >> $GITHUB_OUTPUT @@ -95,7 +95,7 @@ jobs: # # create an issue # - base_repo=${{ github.event.pull_request.base.repo.full_name }} + base_repo=${{ forge.event.pull_request.base.repo.full_name }} forgejo-curl.sh api_json --data-raw '{"title":"ISSUE"}' $GITHUB_SERVER_URL/api/v1/repos/$base_repo/issues url=$(echo $GITHUB_SERVER_URL | sed -e "s|://|://$GITHUB_TOKEN@|") git clone $url/$base_repo base @@ -133,7 +133,7 @@ jobs: - name: save event run: | - d=/srv/example/pull-request/contexts/${{ github.event.pull_request.head.repo.owner.username }}/$GITHUB_EVENT_NAME + d=/srv/example/pull-request/contexts/${{ forge.event.pull_request.head.repo.owner.username }}/$GITHUB_EVENT_NAME mkdir -p $d cat > $d/github <<'EOF' ${{ toJSON(github) }} From 0965ce216b9eda0962555b972c7f0e21ffadebb3 Mon Sep 17 00:00:00 2001 From: Renovate Bot Date: Mon, 7 Jul 2025 05:10:47 +0000 Subject: [PATCH 07/86] Update https://data.forgejo.org/actions/setup-forgejo action to v2.0.13 (#759) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [https://data.forgejo.org/actions/setup-forgejo](https://code.forgejo.org/actions/setup-forgejo) | action | patch | `v2.0.12` -> `v2.0.13` | --- ### Release Notes
actions/setup-forgejo (https://data.forgejo.org/actions/setup-forgejo) ### [`v2.0.13`](https://code.forgejo.org/actions/setup-forgejo/compare/v2.0.12...v2.0.13) [Compare Source](https://code.forgejo.org/actions/setup-forgejo/compare/v2.0.12...v2.0.13)
--- ### Configuration 📅 **Schedule**: Branch creation - Between 12:00 AM and 03:59 AM ( * 0-3 * * * ) (UTC), Automerge - Between 12:00 AM and 03:59 AM ( * 0-3 * * * ) (UTC). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Renovate Bot](https://github.com/renovatebot/renovate). Reviewed-on: https://code.forgejo.org/forgejo/end-to-end/pulls/759 Reviewed-by: earl-warren Co-authored-by: Renovate Bot Co-committed-by: Renovate Bot --- .forgejo/prepare-end-to-end/action.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.forgejo/prepare-end-to-end/action.yml b/.forgejo/prepare-end-to-end/action.yml index 52e997a7..782fe9eb 100644 --- a/.forgejo/prepare-end-to-end/action.yml +++ b/.forgejo/prepare-end-to-end/action.yml @@ -11,7 +11,7 @@ runs: /usr/local/bin/garage key: S3 - - uses: https://data.forgejo.org/actions/setup-forgejo@v2.0.12 + - uses: https://data.forgejo.org/actions/setup-forgejo@v2.0.13 with: install-only: true - run: forgejo-binary.sh ensure_user forgejo From 5988f7cde5021e293a690f3f1371004d3e45b698 Mon Sep 17 00:00:00 2001 From: Renovate Bot Date: Mon, 7 Jul 2025 08:48:17 +0000 Subject: [PATCH 08/86] Update https://data.forgejo.org/actions/setup-forgejo action to v3 (#763) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [https://data.forgejo.org/actions/setup-forgejo](https://code.forgejo.org/actions/setup-forgejo) | action | major | `v2.0.13` -> `v3.0.0` | --- ### Release Notes
actions/setup-forgejo (https://data.forgejo.org/actions/setup-forgejo) ### [`v3.0.0`](https://code.forgejo.org/actions/setup-forgejo/compare/v2.0.13...v3.0.0) [Compare Source](https://code.forgejo.org/actions/setup-forgejo/compare/v2.0.13...v3.0.0)
--- ### Configuration 📅 **Schedule**: Branch creation - Between 12:00 AM and 03:59 AM ( * 0-3 * * * ) (UTC), Automerge - Between 12:00 AM and 03:59 AM ( * 0-3 * * * ) (UTC). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Renovate Bot](https://github.com/renovatebot/renovate). Reviewed-on: https://code.forgejo.org/forgejo/end-to-end/pulls/763 Reviewed-by: earl-warren Co-authored-by: Renovate Bot Co-committed-by: Renovate Bot --- .forgejo/prepare-end-to-end/action.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.forgejo/prepare-end-to-end/action.yml b/.forgejo/prepare-end-to-end/action.yml index 782fe9eb..5b147db5 100644 --- a/.forgejo/prepare-end-to-end/action.yml +++ b/.forgejo/prepare-end-to-end/action.yml @@ -11,7 +11,7 @@ runs: /usr/local/bin/garage key: S3 - - uses: https://data.forgejo.org/actions/setup-forgejo@v2.0.13 + - uses: https://data.forgejo.org/actions/setup-forgejo@v3.0.0 with: install-only: true - run: forgejo-binary.sh ensure_user forgejo From f0eadf960bc426afad9d026378a75b56c8556af6 Mon Sep 17 00:00:00 2001 From: Renovate Bot Date: Mon, 7 Jul 2025 19:35:28 +0000 Subject: [PATCH 09/86] Update https://data.forgejo.org/actions/setup-forgejo action to v3.0.1 (#772) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [https://data.forgejo.org/actions/setup-forgejo](https://code.forgejo.org/actions/setup-forgejo) | action | patch | `v3.0.0` -> `v3.0.1` | --- ### Release Notes
actions/setup-forgejo (https://data.forgejo.org/actions/setup-forgejo) ### [`v3.0.1`](https://code.forgejo.org/actions/setup-forgejo/compare/v3.0.0...v3.0.1) [Compare Source](https://code.forgejo.org/actions/setup-forgejo/compare/v3.0.0...v3.0.1)
--- ### Configuration 📅 **Schedule**: Branch creation - Between 12:00 AM and 03:59 AM ( * 0-3 * * * ) (UTC), Automerge - Between 12:00 AM and 03:59 AM ( * 0-3 * * * ) (UTC). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Renovate Bot](https://github.com/renovatebot/renovate). Reviewed-on: https://code.forgejo.org/forgejo/end-to-end/pulls/772 Reviewed-by: earl-warren Co-authored-by: Renovate Bot Co-committed-by: Renovate Bot --- .forgejo/prepare-end-to-end/action.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.forgejo/prepare-end-to-end/action.yml b/.forgejo/prepare-end-to-end/action.yml index 5b147db5..472c0938 100644 --- a/.forgejo/prepare-end-to-end/action.yml +++ b/.forgejo/prepare-end-to-end/action.yml @@ -11,7 +11,7 @@ runs: /usr/local/bin/garage key: S3 - - uses: https://data.forgejo.org/actions/setup-forgejo@v3.0.0 + - uses: https://data.forgejo.org/actions/setup-forgejo@v3.0.1 with: install-only: true - run: forgejo-binary.sh ensure_user forgejo From 49c2072cbe3c9b8270ac6dff2bc08ebaf7a2749e Mon Sep 17 00:00:00 2001 From: Earl Warren Date: Tue, 8 Jul 2025 04:51:37 +0000 Subject: [PATCH 10/86] actions: use FORGEJO_* instead of GITHUB_* and test backward compatibility (#758) Refs forgejo/act#171 Refs actions/setup-forgejo#461 Reviewed-on: https://code.forgejo.org/forgejo/end-to-end/pulls/758 Reviewed-by: Michael Kriese Co-authored-by: Earl Warren Co-committed-by: Earl Warren --- .../.forgejo/workflows/test.yml | 232 ++++++++++-------- .../action-for-context/action.yml | 24 +- 2 files changed, 140 insertions(+), 116 deletions(-) diff --git a/actions/example-context/.forgejo/workflows/test.yml b/actions/example-context/.forgejo/workflows/test.yml index 0f9db31b..1a092cd9 100644 --- a/actions/example-context/.forgejo/workflows/test.yml +++ b/actions/example-context/.forgejo/workflows/test.yml @@ -15,191 +15,213 @@ jobs: test "$CI" = true test "$CI" = "${{ env.CI }}" - - name: GITHUB_ACTION + - name: FORGEJO_ACTION run: | set -x - echo "$GITHUB_ACTION" | grep -E '^[0-9]+$' - test "$GITHUB_ACTION" = "${{ env.GITHUB_ACTION }}" - test "$GITHUB_ACTION" = "${{ github.ACTION }}" - test "$GITHUB_ACTION" = "${{ forge.ACTION }}" + echo "$FORGEJO_ACTION" | grep -E '^[0-9]+$' + test "$FORGEJO_ACTION" = "${{ env.FORGEJO_ACTION }}" + test "$FORGEJO_ACTION" = "${{ github.ACTION }}" + test "$FORGEJO_ACTION" = "${{ forge.ACTION }}" + test "$FORGEJO_ACTION" = "$GITHUB_ACTION" # See also actions/example-local-action/.forgejo/local-action/action.yml - - name: GITHUB_ACTION_PATH + - name: FORGEJO_ACTION_PATH run: | set -x - test -z "$GITHUB_ACTION_PATH" - test "$GITHUB_ACTION_PATH" = "${{ env.GITHUB_ACTION_PATH }}" - test "$GITHUB_ACTION_PATH" = "${{ github.ACTION_PATH }}" - test "$GITHUB_ACTION_PATH" = "${{ forge.ACTION_PATH }}" + test -z "$FORGEJO_ACTION_PATH" + test "$FORGEJO_ACTION_PATH" = "${{ env.FORGEJO_ACTION_PATH }}" + test "$FORGEJO_ACTION_PATH" = "${{ github.ACTION_PATH }}" + test "$FORGEJO_ACTION_PATH" = "${{ forge.ACTION_PATH }}" + test "$FORGEJO_ACTION_PATH" = "$GITHUB_ACTION_PATH" - name: when running an action - if: ${{ env.GITHUB_ACTIONS }} + if: ${{ env.FORGEJO_ACTIONS }} uses: SELF@main with: input-one: "otherone" - - name: GITHUB_ACTION_REPOSITORY - run: test -f /srv/example/example-context/GITHUB_ACTION_REPOSITORY + - name: FORGEJO_ACTION_REPOSITORY + run: test -f /srv/example/example-context/FORGEJO_ACTION_REPOSITORY - - name: GITHUB_ACTION_PATH - run: test -f /srv/example/example-context/GITHUB_ACTION_PATH + - name: FORGEJO_ACTION_PATH + run: test -f /srv/example/example-context/FORGEJO_ACTION_PATH - - name: GITHUB_ACTIONS + - name: FORGEJO_ACTIONS run: | set -x - test "$GITHUB_ACTIONS" = true - test "$GITHUB_ACTIONS" = "${{ env.GITHUB_ACTIONS }}" + test "$FORGEJO_ACTIONS" = true + test "$FORGEJO_ACTIONS" = "${{ env.FORGEJO_ACTIONS }}" + test "$FORGEJO_ACTIONS" = "$GITHUB_ACTIONS" - - name: GITHUB_ACTOR + - name: FORGEJO_ACTOR run: | set -x - test "$GITHUB_ACTOR" - test "$GITHUB_ACTOR" = "${{ env.GITHUB_ACTOR }}" - test "$GITHUB_ACTOR" = "${{ github.ACTOR }}" - test "$GITHUB_ACTOR" = "${{ forge.ACTOR }}" + test "$FORGEJO_ACTOR" + test "$FORGEJO_ACTOR" = "${{ env.FORGEJO_ACTOR }}" + test "$FORGEJO_ACTOR" = "${{ github.ACTOR }}" + test "$FORGEJO_ACTOR" = "${{ forge.ACTOR }}" + test "$FORGEJO_ACTOR" = "$GITHUB_ACTOR" - - name: GITHUB_API_URL + - name: FORGEJO_API_URL shell: bash run: | set -x - [[ "$GITHUB_API_URL" =~ /api/v1$ ]] - test "$GITHUB_API_URL" = "${{ env.GITHUB_API_URL }}" - test "$GITHUB_API_URL" = "${{ github.API_URL }}" - test "$GITHUB_API_URL" = "${{ forge.API_URL }}" + [[ "$FORGEJO_API_URL" =~ /api/v1$ ]] + test "$FORGEJO_API_URL" = "${{ env.FORGEJO_API_URL }}" + test "$FORGEJO_API_URL" = "${{ github.API_URL }}" + test "$FORGEJO_API_URL" = "${{ forge.API_URL }}" + test "$FORGEJO_API_URL" = "$GITHUB_API_URL" # See also actions/example-pull-request/.forgejo/workflows/test.yml - - name: GITHUB_BASE_REF + - name: FORGEJO_BASE_REF run: | set -x - test -z "$GITHUB_BASE_REF" - test "$GITHUB_BASE_REF" = "${{ env.GITHUB_BASE_REF }}" - test "$GITHUB_BASE_REF" = "${{ github.BASE_REF }}" - test "$GITHUB_BASE_REF" = "${{ forge.BASE_REF }}" + test -z "$FORGEJO_BASE_REF" + test "$FORGEJO_BASE_REF" = "${{ env.FORGEJO_BASE_REF }}" + test "$FORGEJO_BASE_REF" = "${{ github.BASE_REF }}" + test "$FORGEJO_BASE_REF" = "${{ forge.BASE_REF }}" + test "$FORGEJO_BASE_REF" = "$GITHUB_BASE_REF" # See also actions/example-pull-request/.forgejo/workflows/test.yml - - name: GITHUB_HEAD_REF + - name: FORGEJO_HEAD_REF run: | set -x - test -z "$GITHUB_HEAD_REF" - test "$GITHUB_HEAD_REF" = "${{ env.GITHUB_HEAD_REF }}" - test "$GITHUB_HEAD_REF" = "${{ github.HEAD_REF }}" - test "$GITHUB_HEAD_REF" = "${{ forge.HEAD_REF }}" + test -z "$FORGEJO_HEAD_REF" + test "$FORGEJO_HEAD_REF" = "${{ env.FORGEJO_HEAD_REF }}" + test "$FORGEJO_HEAD_REF" = "${{ github.HEAD_REF }}" + test "$FORGEJO_HEAD_REF" = "${{ forge.HEAD_REF }}" + test "$FORGEJO_HEAD_REF" = "$GITHUB_HEAD_REF" - - name: GITHUB_ENV + - name: FORGEJO_ENV run: | set -x - test -f "$GITHUB_ENV" - test "$GITHUB_ENV" = "${{ env.GITHUB_ENV }}" + test -f "$FORGEJO_ENV" + test "$FORGEJO_ENV" = "${{ env.FORGEJO_ENV }}" + test "$FORGEJO_ENV" = "$GITHUB_ENV" - - name: GITHUB_EVENT_NAME + - name: FORGEJO_EVENT_NAME run: | set -x - test "$GITHUB_EVENT_NAME" = push - test "$GITHUB_EVENT_NAME" = "${{ env.GITHUB_EVENT_NAME }}" - test "$GITHUB_EVENT_NAME" = "${{ github.EVENT_NAME }}" - test "$GITHUB_EVENT_NAME" = "${{ forge.EVENT_NAME }}" + test "$FORGEJO_EVENT_NAME" = push + test "$FORGEJO_EVENT_NAME" = "${{ env.FORGEJO_EVENT_NAME }}" + test "$FORGEJO_EVENT_NAME" = "${{ github.EVENT_NAME }}" + test "$FORGEJO_EVENT_NAME" = "${{ forge.EVENT_NAME }}" + test "$FORGEJO_EVENT_NAME" = "$GITHUB_EVENT_NAME" - - name: GITHUB_JOB + - name: FORGEJO_JOB run: | set -x - test "$GITHUB_JOB" = test - test "$GITHUB_JOB" = "${{ env.GITHUB_JOB }}" - test "$GITHUB_JOB" = "${{ github.JOB }}" - test "$GITHUB_JOB" = "${{ forge.JOB }}" + test "$FORGEJO_JOB" = test + test "$FORGEJO_JOB" = "${{ env.FORGEJO_JOB }}" + test "$FORGEJO_JOB" = "${{ github.JOB }}" + test "$FORGEJO_JOB" = "${{ forge.JOB }}" + test "$FORGEJO_JOB" = "$GITHUB_JOB" - - name: GITHUB_OUTPUT + - name: FORGEJO_OUTPUT run: | set -x - test -f "$GITHUB_OUTPUT" - test "$GITHUB_OUTPUT" = "${{ env.GITHUB_OUTPUT }}" + test -f "$FORGEJO_OUTPUT" + test "$FORGEJO_OUTPUT" = "${{ env.FORGEJO_OUTPUT }}" + test "$FORGEJO_OUTPUT" = "$GITHUB_OUTPUT" - - name: GITHUB_PATH + - name: FORGEJO_PATH run: | set -x - test -f "$GITHUB_PATH" - test "$GITHUB_PATH" = "${{ env.GITHUB_PATH }}" + test -f "$FORGEJO_PATH" + test "$FORGEJO_PATH" = "${{ env.FORGEJO_PATH }}" + test "$FORGEJO_PATH" = "$GITHUB_PATH" - - name: GITHUB_REF + - name: FORGEJO_REF shell: bash run: | set -x - [[ "$GITHUB_REF" =~ ^refs/ ]] - test "$GITHUB_REF" = "${{ env.GITHUB_REF }}" - test "$GITHUB_REF" = "${{ github.REF }}" - test "$GITHUB_REF" = "${{ forge.REF }}" + [[ "$FORGEJO_REF" =~ ^refs/ ]] + test "$FORGEJO_REF" = "${{ env.FORGEJO_REF }}" + test "$FORGEJO_REF" = "${{ github.REF }}" + test "$FORGEJO_REF" = "${{ forge.REF }}" + test "$FORGEJO_REF" = "$GITHUB_REF" - - name: GITHUB_REF_NAME + - name: FORGEJO_REF_NAME shell: bash run: | set -x - ! [[ "$GITHUB_REF_NAME" =~ ^refs/ ]] - test "$GITHUB_REF_NAME" = "${{ env.GITHUB_REF_NAME }}" - test "$GITHUB_REF_NAME" = "${{ github.REF_NAME }}" - test "$GITHUB_REF_NAME" = "${{ forge.REF_NAME }}" + ! [[ "$FORGEJO_REF_NAME" =~ ^refs/ ]] + test "$FORGEJO_REF_NAME" = "${{ env.FORGEJO_REF_NAME }}" + test "$FORGEJO_REF_NAME" = "${{ github.REF_NAME }}" + test "$FORGEJO_REF_NAME" = "${{ forge.REF_NAME }}" + test "$FORGEJO_REF_NAME" = "$GITHUB_REF_NAME" - - name: GITHUB_REPOSITORY + - name: FORGEJO_REPOSITORY run: | set -x - test "$GITHUB_REPOSITORY" = root/example-context - test "$GITHUB_REPOSITORY" = "${{ env.GITHUB_REPOSITORY }}" - test "$GITHUB_REPOSITORY" = "${{ github.REPOSITORY }}" - test "$GITHUB_REPOSITORY" = "${{ forge.REPOSITORY }}" + test "$FORGEJO_REPOSITORY" = root/example-context + test "$FORGEJO_REPOSITORY" = "${{ env.FORGEJO_REPOSITORY }}" + test "$FORGEJO_REPOSITORY" = "${{ github.REPOSITORY }}" + test "$FORGEJO_REPOSITORY" = "${{ forge.REPOSITORY }}" + test "$FORGEJO_REPOSITORY" = "$GITHUB_REPOSITORY" - - name: GITHUB_REPOSITORY_OWNER + - name: FORGEJO_REPOSITORY_OWNER run: | set -x - test "$GITHUB_REPOSITORY_OWNER" = root - test "$GITHUB_REPOSITORY_OWNER" = "${{ env.GITHUB_REPOSITORY_OWNER }}" - test "$GITHUB_REPOSITORY_OWNER" = "${{ github.REPOSITORY_OWNER }}" - test "$GITHUB_REPOSITORY_OWNER" = "${{ forge.REPOSITORY_OWNER }}" + test "$FORGEJO_REPOSITORY_OWNER" = root + test "$FORGEJO_REPOSITORY_OWNER" = "${{ env.FORGEJO_REPOSITORY_OWNER }}" + test "$FORGEJO_REPOSITORY_OWNER" = "${{ github.REPOSITORY_OWNER }}" + test "$FORGEJO_REPOSITORY_OWNER" = "${{ forge.REPOSITORY_OWNER }}" + test "$FORGEJO_REPOSITORY_OWNER" = "$GITHUB_REPOSITORY_OWNER" - - name: GITHUB_RUN_NUMBER + - name: FORGEJO_RUN_NUMBER run: | set -x - echo "$GITHUB_RUN_NUMBER" | grep -E '^[0-9]+$' - test "$GITHUB_RUN_NUMBER" = "${{ env.GITHUB_RUN_NUMBER }}" - test "$GITHUB_RUN_NUMBER" = "${{ github.RUN_NUMBER }}" - test "$GITHUB_RUN_NUMBER" = "${{ forge.RUN_NUMBER }}" + echo "$FORGEJO_RUN_NUMBER" | grep -E '^[0-9]+$' + test "$FORGEJO_RUN_NUMBER" = "${{ env.FORGEJO_RUN_NUMBER }}" + test "$FORGEJO_RUN_NUMBER" = "${{ github.RUN_NUMBER }}" + test "$FORGEJO_RUN_NUMBER" = "${{ forge.RUN_NUMBER }}" + test "$FORGEJO_RUN_NUMBER" = "$GITHUB_RUN_NUMBER" - - name: GITHUB_SERVER_URL + - name: FORGEJO_SERVER_URL shell: bash run: | set -x - [[ "$GITHUB_SERVER_URL" =~ ^http ]] - test "$GITHUB_SERVER_URL" = "${{ env.GITHUB_SERVER_URL }}" - test "$GITHUB_SERVER_URL" = "${{ github.SERVER_URL }}" - test "$GITHUB_SERVER_URL" = "${{ forge.SERVER_URL }}" + [[ "$FORGEJO_SERVER_URL" =~ ^http ]] + test "$FORGEJO_SERVER_URL" = "${{ env.FORGEJO_SERVER_URL }}" + test "$FORGEJO_SERVER_URL" = "${{ github.SERVER_URL }}" + test "$FORGEJO_SERVER_URL" = "${{ forge.SERVER_URL }}" + test "$FORGEJO_SERVER_URL" = "$GITHUB_SERVER_URL" - - name: GITHUB_SHA + - name: FORGEJO_SHA run: | set -x - test "$GITHUB_SHA" - test "$GITHUB_SHA" = "${{ env.GITHUB_SHA }}" - test "$GITHUB_SHA" = "${{ github.SHA }}" - test "$GITHUB_SHA" = "${{ forge.SHA }}" + test "$FORGEJO_SHA" + test "$FORGEJO_SHA" = "${{ env.FORGEJO_SHA }}" + test "$FORGEJO_SHA" = "${{ github.SHA }}" + test "$FORGEJO_SHA" = "${{ forge.SHA }}" + test "$FORGEJO_SHA" = "$GITHUB_SHA" - - name: GITHUB_STEP_SUMMARY + - name: FORGEJO_STEP_SUMMARY run: | set -x - test -f "$GITHUB_STEP_SUMMARY" - test "$GITHUB_STEP_SUMMARY" = "${{ env.GITHUB_STEP_SUMMARY }}" + test -f "$FORGEJO_STEP_SUMMARY" + test "$FORGEJO_STEP_SUMMARY" = "${{ env.FORGEJO_STEP_SUMMARY }}" + test "$FORGEJO_STEP_SUMMARY" = "$GITHUB_STEP_SUMMARY" # See also actions/example-pull-request/.forgejo/workflows/test.yml - - name: GITHUB_TOKEN + - name: FORGEJO_TOKEN run: | set -x - test "$GITHUB_TOKEN" - test "$GITHUB_TOKEN" = "${{ env.GITHUB_TOKEN }}" - test "$GITHUB_TOKEN" = "${{ github.TOKEN }}" - test "$GITHUB_TOKEN" = "${{ forge.TOKEN }}" + test "$FORGEJO_TOKEN" + test "$FORGEJO_TOKEN" = "${{ env.FORGEJO_TOKEN }}" + test "$FORGEJO_TOKEN" = "${{ github.TOKEN }}" + test "$FORGEJO_TOKEN" = "${{ forge.TOKEN }}" + test "$FORGEJO_TOKEN" = "$GITHUB_TOKEN" - - name: GITHUB_WORKSPACE + - name: FORGEJO_WORKSPACE run: | set -x - test -d "$GITHUB_WORKSPACE" - test "$GITHUB_WORKSPACE" = "${{ env.GITHUB_WORKSPACE }}" - test "$GITHUB_WORKSPACE" = "${{ github.WORKSPACE }}" - test "$GITHUB_WORKSPACE" = "${{ forge.WORKSPACE }}" + test -d "$FORGEJO_WORKSPACE" + test "$FORGEJO_WORKSPACE" = "${{ env.FORGEJO_WORKSPACE }}" + test "$FORGEJO_WORKSPACE" = "${{ github.WORKSPACE }}" + test "$FORGEJO_WORKSPACE" = "${{ forge.WORKSPACE }}" + test "$FORGEJO_WORKSPACE" = "$GITHUB_WORKSPACE" - name: RUNNER_ARCH run: | diff --git a/actions/example-context/action-for-context/action.yml b/actions/example-context/action-for-context/action.yml index c1c33843..e8e81c39 100644 --- a/actions/example-context/action-for-context/action.yml +++ b/actions/example-context/action-for-context/action.yml @@ -6,20 +6,22 @@ inputs: runs: using: "composite" steps: - - name: GITHUB_ACTION_REPOSITORY + - name: FORGEJO_ACTION_REPOSITORY run: | set -x - test "$GITHUB_ACTION_REPOSITORY" = root/action-for-context - test "$GITHUB_ACTION_REPOSITORY" = "${{ env.GITHUB_ACTION_REPOSITORY }}" - test "$GITHUB_ACTION_REPOSITORY" = "${{ github.ACTION_REPOSITORY }}" - test "$GITHUB_ACTION_REPOSITORY" = "${{ forge.ACTION_REPOSITORY }}" - touch /srv/example/example-context/GITHUB_ACTION_REPOSITORY + test "$FORGEJO_ACTION_REPOSITORY" = root/action-for-context + test "$FORGEJO_ACTION_REPOSITORY" = "${{ env.FORGEJO_ACTION_REPOSITORY }}" + test "$FORGEJO_ACTION_REPOSITORY" = "${{ github.ACTION_REPOSITORY }}" + test "$FORGEJO_ACTION_REPOSITORY" = "${{ forge.ACTION_REPOSITORY }}" + test "$FORGEJO_ACTION_REPOSITORY" = "$GITHUB_ACTION_REPOSITORY" + touch /srv/example/example-context/FORGEJO_ACTION_REPOSITORY - - name: GITHUB_ACTION_PATH + - name: FORGEJO_ACTION_PATH shell: bash run: | set -x - [[ "$GITHUB_ACTION_PATH" =~ action-for-context@main$ ]] - test "$GITHUB_ACTION_PATH" = "${{ github.ACTION_PATH }}" - test "$GITHUB_ACTION_PATH" = "${{ forge.ACTION_PATH }}" - touch /srv/example/example-context/GITHUB_ACTION_PATH + [[ "$FORGEJO_ACTION_PATH" =~ action-for-context@main$ ]] + test "$FORGEJO_ACTION_PATH" = "${{ github.ACTION_PATH }}" + test "$FORGEJO_ACTION_PATH" = "${{ forge.ACTION_PATH }}" + test "$FORGEJO_ACTION_PATH" = "$GITHUB_ACTION_PATH" + touch /srv/example/example-context/FORGEJO_ACTION_PATH From b67f9e1a70c4d230be37cc367ed19029bcd87e8b Mon Sep 17 00:00:00 2001 From: Earl Warren Date: Wed, 9 Jul 2025 14:09:48 +0000 Subject: [PATCH 11/86] chore: s/GITHUB_*/FORGEJO_*/ & s/github./forge./ (#776) Reviewed-on: https://code.forgejo.org/forgejo/end-to-end/pulls/776 Reviewed-by: Michael Kriese Co-authored-by: Earl Warren Co-committed-by: Earl Warren --- .forgejo/workflows/end-to-end.yml | 6 +-- .../example-cron/.forgejo/workflows/test.yml | 2 +- .../.forgejo/workflows/test.yml | 2 +- .../example-if/.forgejo/workflows/test.yml | 2 +- .../.forgejo/local-action/action.yml | 8 +-- .../.forgejo/workflows/test.yml | 2 +- .../.forgejo/workflows/test.yml | 50 +++++++++---------- .../example-push/.forgejo/workflows/test.yml | 2 +- .../example-tag/.forgejo/workflows/test.yml | 2 +- .../.forgejo/workflows/test.yml | 2 +- 10 files changed, 39 insertions(+), 39 deletions(-) diff --git a/.forgejo/workflows/end-to-end.yml b/.forgejo/workflows/end-to-end.yml index d535d37d..28b9cd49 100644 --- a/.forgejo/workflows/end-to-end.yml +++ b/.forgejo/workflows/end-to-end.yml @@ -128,13 +128,13 @@ jobs: run: | set -x full_version=$(./end-to-end.sh full_version ${{ matrix.info.version }} ${{ matrix.info.owner }}) - echo value="$full_version" >> $GITHUB_OUTPUT + echo value="$full_version" >> $FORGEJO_OUTPUT - run: ./end-to-end.sh prepare_dockerd - run: su forgejo -c "./end-to-end.sh test_actions ${{ matrix.info.version }}" - name: update documentation uses: https://data.forgejo.org/actions/cascading-pr@v2.1 with: - origin-url: ${{ env.GITHUB_SERVER_URL }} + origin-url: ${{ env.FORGEJO_SERVER_URL }} origin-repo: ${{ forge.repository }} origin-token: ${{ secrets.CASCADE_DOCS_ORIGIN_TOKEN }} origin-ref: refs/heads/main @@ -143,7 +143,7 @@ jobs: destination-repo: forgejo/docs destination-branch: ${{ matrix.info.branch || format('v{0}', matrix.info.version) }} destination-token: ${{ secrets.CASCADE_DOCS_DESTINATION_TOKEN }} - prefix: ${{ env.GITHUB_REPOSITORY }}-${{ matrix.info.version }} + prefix: ${{ env.FORGEJO_REPOSITORY }}-${{ matrix.info.version }} update: .forgejo/cascading-docs env: FORCE_VERSION: "${{ vars.CASCADE_DOCS_FORCE_VERSION }}" diff --git a/actions/example-cron/.forgejo/workflows/test.yml b/actions/example-cron/.forgejo/workflows/test.yml index e2748f8a..054ddad6 100644 --- a/actions/example-cron/.forgejo/workflows/test.yml +++ b/actions/example-cron/.forgejo/workflows/test.yml @@ -12,7 +12,7 @@ jobs: steps: - name: save context run: | - d=/srv/example/cron/contexts/$GITHUB_EVENT_NAME + d=/srv/example/cron/contexts/$FORGEJO_EVENT_NAME mkdir -p $d cat > $d/github <<'EOF' ${{ toJSON(github) }} diff --git a/actions/example-expression/.forgejo/workflows/test.yml b/actions/example-expression/.forgejo/workflows/test.yml index e20a996a..ba37759e 100644 --- a/actions/example-expression/.forgejo/workflows/test.yml +++ b/actions/example-expression/.forgejo/workflows/test.yml @@ -23,7 +23,7 @@ jobs: if: ${{ env.KEY1 == 'nogood' }} - name: if does not skip id: conditional - run: echo 'check=good' >> $GITHUB_OUTPUT + run: echo 'check=good' >> $FORGEJO_OUTPUT if: env.KEY1 == 'value1' - name: verify if did not skip run: test ${{ steps.conditional.outputs.check }} = good diff --git a/actions/example-if/.forgejo/workflows/test.yml b/actions/example-if/.forgejo/workflows/test.yml index cc9401ce..355d9f20 100644 --- a/actions/example-if/.forgejo/workflows/test.yml +++ b/actions/example-if/.forgejo/workflows/test.yml @@ -8,7 +8,7 @@ jobs: - name: if true if: true id: if_true - run: echo 'check=good' >> $GITHUB_OUTPUT + run: echo 'check=good' >> $FORGEJO_OUTPUT - name: verify if true was run run: test ${{ steps.if_true.outputs.check }} = good diff --git a/actions/example-local-action/.forgejo/local-action/action.yml b/actions/example-local-action/.forgejo/local-action/action.yml index 79637578..6f5df8e1 100644 --- a/actions/example-local-action/.forgejo/local-action/action.yml +++ b/actions/example-local-action/.forgejo/local-action/action.yml @@ -13,10 +13,10 @@ outputs: runs: using: "composite" steps: - - name: GITHUB_ACTION_PATH + - name: FORGEJO_ACTION_PATH run: | set -x - test "$(basename $GITHUB_ACTION_PATH)" = local-action - test "$GITHUB_ACTION_PATH" = "${{ env.GITHUB_ACTION_PATH }}" + test "$(basename $FORGEJO_ACTION_PATH)" = local-action + test "$FORGEJO_ACTION_PATH" = "${{ env.FORGEJO_ACTION_PATH }}" - - run: echo key=${{ inputs.input-two-required }} >> $GITHUB_OUTPUT + - run: echo key=${{ inputs.input-two-required }} >> $FORGEJO_OUTPUT diff --git a/actions/example-post-7-0-schedule/.forgejo/workflows/test.yml b/actions/example-post-7-0-schedule/.forgejo/workflows/test.yml index 135364aa..73e9b404 100644 --- a/actions/example-post-7-0-schedule/.forgejo/workflows/test.yml +++ b/actions/example-post-7-0-schedule/.forgejo/workflows/test.yml @@ -12,7 +12,7 @@ jobs: steps: - name: save context run: | - d=/srv/example/post-7-0-schedule/contexts/$GITHUB_EVENT_NAME + d=/srv/example/post-7-0-schedule/contexts/$FORGEJO_EVENT_NAME mkdir -p $d cat > $d/github <<'EOF' ${{ toJSON(github) }} diff --git a/actions/example-pull-request/.forgejo/workflows/test.yml b/actions/example-pull-request/.forgejo/workflows/test.yml index 2b864cb6..320d0a86 100644 --- a/actions/example-pull-request/.forgejo/workflows/test.yml +++ b/actions/example-pull-request/.forgejo/workflows/test.yml @@ -17,45 +17,45 @@ jobs: shell: bash run: | set -x - test $GITHUB_TOKEN = ${{ env.GITHUB_TOKEN }} - test $GITHUB_TOKEN = ${{ forge.token }} + test $FORGEJO_TOKEN = ${{ env.FORGEJO_TOKEN }} + test $FORGEJO_TOKEN = ${{ forge.token }} export DEBIAN_FRONTEND=noninteractive ; apt-get -qq update ; apt-get install -y -qq curl git >& /dev/null curl -sS -o /usr/local/bin/forgejo-curl.sh https://code.forgejo.org/forgejo/forgejo-curl/raw/branch/main/forgejo-curl.sh && chmod +x /usr/local/bin/forgejo-curl.sh - forgejo-curl.sh --token "$GITHUB_TOKEN" login $GITHUB_SERVER_URL - forgejo-curl.sh api_json $GITHUB_SERVER_URL/api/v1/user + forgejo-curl.sh --token "$FORGEJO_TOKEN" login $FORGEJO_SERVER_URL + forgejo-curl.sh api_json $FORGEJO_SERVER_URL/api/v1/user - name: determine if the PR is from a fork id: forked run: | if test ${{ forge.event.pull_request.base.repo.full_name }} = ${{ forge.event.pull_request.head.repo.full_name }} ; then - echo value=false >> $GITHUB_OUTPUT + echo value=false >> $FORGEJO_OUTPUT else - echo value=true >> $GITHUB_OUTPUT + echo value=true >> $FORGEJO_OUTPUT fi # See also actions/example-context/.forgejo/workflows/test.yml - - name: env.GITHUB_BASE_REF + - name: env.FORGEJO_BASE_REF run: | set -x - test "$GITHUB_BASE_REF" = main - test "$GITHUB_BASE_REF" = "${{ env.GITHUB_BASE_REF }}" + test "$FORGEJO_BASE_REF" = main + test "$FORGEJO_BASE_REF" = "${{ env.FORGEJO_BASE_REF }}" # See also actions/example-context/.forgejo/workflows/test.yml - - name: env.GITHUB_HEAD_REF + - name: env.FORGEJO_HEAD_REF run: | set -x if ${{ steps.forked.outputs.value }} ; then - test "$GITHUB_HEAD_REF" = main + test "$FORGEJO_HEAD_REF" = main else - test "$GITHUB_HEAD_REF" = other + test "$FORGEJO_HEAD_REF" = other fi - test "$GITHUB_HEAD_REF" = "${{ env.GITHUB_HEAD_REF }}" + test "$FORGEJO_HEAD_REF" = "${{ env.FORGEJO_HEAD_REF }}" - name: secrets shell: bash run: | set -x - case $GITHUB_EVENT_NAME in + case $FORGEJO_EVENT_NAME in pull_request_target) # # all PRs: secrets @@ -76,7 +76,7 @@ jobs: fi ;; *) - echo unexpected event $GITHUB_EVENT_NAME + echo unexpected event $FORGEJO_EVENT_NAME false ;; esac @@ -96,8 +96,8 @@ jobs: # create an issue # base_repo=${{ forge.event.pull_request.base.repo.full_name }} - forgejo-curl.sh api_json --data-raw '{"title":"ISSUE"}' $GITHUB_SERVER_URL/api/v1/repos/$base_repo/issues - url=$(echo $GITHUB_SERVER_URL | sed -e "s|://|://$GITHUB_TOKEN@|") + forgejo-curl.sh api_json --data-raw '{"title":"ISSUE"}' $FORGEJO_SERVER_URL/api/v1/repos/$base_repo/issues + url=$(echo $FORGEJO_SERVER_URL | sed -e "s|://|://$FORGEJO_TOKEN@|") git clone $url/$base_repo base branch=B$RANDOM ( @@ -108,7 +108,7 @@ jobs: echo CHANGE >> README git add . git commit -m 'change' - case $GITHUB_EVENT_NAME in + case $FORGEJO_EVENT_NAME in pull_request_target|pull_request) # # repository write scope via http git passthrough @@ -117,15 +117,15 @@ jobs: # # repository write scope via the API # - assert_fail_if_forked forgejo-curl.sh api_json --data-raw '{"title":"PR","base":"main","head":"'$branch'"}' $GITHUB_SERVER_URL/api/v1/repos/$base_repo/pulls - assert_fail_if_forked forgejo-curl.sh api_json --data-raw '{"color":"#ffffff","name":"labelname"}' $GITHUB_SERVER_URL/api/v1/repos/$base_repo/labels + assert_fail_if_forked forgejo-curl.sh api_json --data-raw '{"title":"PR","base":"main","head":"'$branch'"}' $FORGEJO_SERVER_URL/api/v1/repos/$base_repo/pulls + assert_fail_if_forked forgejo-curl.sh api_json --data-raw '{"color":"#ffffff","name":"labelname"}' $FORGEJO_SERVER_URL/api/v1/repos/$base_repo/labels # # See https://codeberg.org/forgejo/forgejo/issues/1525 # - ! forgejo-curl.sh api_json --data-raw '{"new_branch_name":"B'$RANDOM'"}' $GITHUB_SERVER_URL/api/v1/repos/$base_repo/branches + ! forgejo-curl.sh api_json --data-raw '{"new_branch_name":"B'$RANDOM'"}' $FORGEJO_SERVER_URL/api/v1/repos/$base_repo/branches ;; *) - echo unexpected event $GITHUB_EVENT_NAME + echo unexpected event $FORGEJO_EVENT_NAME false ;; esac @@ -133,7 +133,7 @@ jobs: - name: save event run: | - d=/srv/example/pull-request/contexts/${{ forge.event.pull_request.head.repo.owner.username }}/$GITHUB_EVENT_NAME + d=/srv/example/pull-request/contexts/${{ forge.event.pull_request.head.repo.owner.username }}/$FORGEJO_EVENT_NAME mkdir -p $d cat > $d/github <<'EOF' ${{ toJSON(github) }} @@ -143,7 +143,7 @@ jobs: - name: checkout the default branch if pull_request_target run: | set -x - case $GITHUB_EVENT_NAME in + case $FORGEJO_EVENT_NAME in pull_request_target) ! test -f file-unique-to-the-pr-branch ;; @@ -151,7 +151,7 @@ jobs: test -f file-unique-to-the-pr-branch ;; *) - echo unexpected event $GITHUB_EVENT_NAME + echo unexpected event $FORGEJO_EVENT_NAME false ;; esac diff --git a/actions/example-push/.forgejo/workflows/test.yml b/actions/example-push/.forgejo/workflows/test.yml index 89763f29..6075b1a2 100644 --- a/actions/example-push/.forgejo/workflows/test.yml +++ b/actions/example-push/.forgejo/workflows/test.yml @@ -16,7 +16,7 @@ jobs: - name: save event run: | - d=/srv/example/push/contexts/$GITHUB_EVENT_NAME + d=/srv/example/push/contexts/$FORGEJO_EVENT_NAME mkdir -p $d cat > $d/github <<'EOF' ${{ toJSON(github) }} diff --git a/actions/example-tag/.forgejo/workflows/test.yml b/actions/example-tag/.forgejo/workflows/test.yml index c7e13570..ddc673e0 100644 --- a/actions/example-tag/.forgejo/workflows/test.yml +++ b/actions/example-tag/.forgejo/workflows/test.yml @@ -14,7 +14,7 @@ jobs: - name: save event run: | - d=/srv/example/tag/contexts/$GITHUB_EVENT_NAME + d=/srv/example/tag/contexts/$FORGEJO_EVENT_NAME mkdir -p $d cat > $d/github <<'EOF' ${{ toJSON(github) }} diff --git a/actions/example-workflow-dispatch/.forgejo/workflows/test.yml b/actions/example-workflow-dispatch/.forgejo/workflows/test.yml index 186fe563..c2dcea6d 100644 --- a/actions/example-workflow-dispatch/.forgejo/workflows/test.yml +++ b/actions/example-workflow-dispatch/.forgejo/workflows/test.yml @@ -50,7 +50,7 @@ jobs: steps: - name: save and display context run: | - d=/srv/example/workflow-dispatch/contexts/$GITHUB_EVENT_NAME + d=/srv/example/workflow-dispatch/contexts/$FORGEJO_EVENT_NAME mkdir -p $d tee $d/github <<'EOF' ${{ toJSON(github) }} From b2d99f4c4aeee43106bffe2210ea8a28e7a5c481 Mon Sep 17 00:00:00 2001 From: Earl Warren Date: Sat, 12 Jul 2025 08:08:25 +0000 Subject: [PATCH 12/86] actions: shell: assert shell behavior (#788) Refs https://code.forgejo.org/forgejo/runner/issues/150 Reviewed-on: https://code.forgejo.org/forgejo/end-to-end/pulls/788 Co-authored-by: Earl Warren Co-committed-by: Earl Warren --- actions/actions.sh | 2 +- .../example-shell/.forgejo/workflows/test.yml | 78 +++++++++++++++++++ actions/example-shell/runner-config.yaml | 32 ++++++++ actions/example-shell/setup.sh | 1 + actions/example-shell/teardown.sh | 1 + 5 files changed, 113 insertions(+), 1 deletion(-) create mode 100644 actions/example-shell/.forgejo/workflows/test.yml create mode 100644 actions/example-shell/runner-config.yaml create mode 100755 actions/example-shell/setup.sh create mode 100755 actions/example-shell/teardown.sh diff --git a/actions/actions.sh b/actions/actions.sh index bb21e8a1..b1e6bd8a 100755 --- a/actions/actions.sh +++ b/actions/actions.sh @@ -143,7 +143,7 @@ function test_actions() { done fi - for example in echo lxc config-options cache checkout service container expression local-action docker-action if if-fail push tag push-cancel artifacts pull-request context; do + for example in shell echo lxc config-options cache checkout service container expression local-action docker-action if if-fail push tag push-cancel artifacts pull-request context; do run actions_verify_example $example done diff --git a/actions/example-shell/.forgejo/workflows/test.yml b/actions/example-shell/.forgejo/workflows/test.yml new file mode 100644 index 00000000..38a2a6cd --- /dev/null +++ b/actions/example-shell/.forgejo/workflows/test.yml @@ -0,0 +1,78 @@ +on: [push] + +env: + ASSERT_SHELL: 'set -x ; readlink /proc/$$/exe ; readlink /proc/$$/exe | grep ' + +jobs: + default: + # docker:docker://code.forgejo.org/oci/node:22-bookworm + runs-on: docker + steps: + - name: default is bash + run: | + ${{ env.ASSERT_SHELL }} /bash + + defaults-run: + needs: [default] + # alpine:docker://code.forgejo.org/oci/alpine:latest + runs-on: alpine + defaults: + run: + shell: sh + steps: + - name: default is sh which is an alias for busybox in alpine + run: | + ${{ env.ASSERT_SHELL }} /busybox + + alpine: + needs: [defaults-run] + runs-on: docker + container: + image: code.forgejo.org/oci/alpine:latest + steps: + - name: default is sh which is an alias for busybox in alpine + run: | + ${{ env.ASSERT_SHELL }} /busybox + + python: + needs: [alpine] + runs-on: docker + container: + image: code.forgejo.org/oci/python:slim + steps: + - name: python => python {0} + shell: python + run: | + print("something") + + other: + needs: [python] + runs-on: docker + container: + image: code.forgejo.org/oci/node:22-bookworm + steps: + - name: default is sh which is an alias for dash in bookworm + run: | + ${{ env.ASSERT_SHELL }} /dash + + - name: bash => bash --noprofile --norc -e -o pipefail {0} + shell: bash + run: | + ${{ env.ASSERT_SHELL }} /bash + shopt -o + shopt -o | grep --quiet 'pipefail.*on' + + - name: sh => sh -e {0} + shell: sh + run: | + ${{ env.ASSERT_SHELL }} /dash + + - name: node => node {0} + shell: node + run: | + console.log("something") + + - name: dash -e {0} + shell: dash -e {0} + run: | + ${{ env.ASSERT_SHELL }} /dash diff --git a/actions/example-shell/runner-config.yaml b/actions/example-shell/runner-config.yaml new file mode 100644 index 00000000..4e4974d2 --- /dev/null +++ b/actions/example-shell/runner-config.yaml @@ -0,0 +1,32 @@ + +log: + level: debug + +runner: + file: .runner + capacity: 1 + env_file: .env + timeout: 3h + insecure: false + fetch_timeout: 5s + fetch_interval: 2s + labels: + - docker:docker://code.forgejo.org/oci/node:22-bookworm + - alpine:docker://code.forgejo.org/oci/alpine:latest + +cache: + enabled: false + dir: "" + host: "" + port: 0 + +container: + network: "" + privileged: false + options: + workdir_parent: + valid_volumes: [] + docker_host: "" + +host: + workdir_parent: diff --git a/actions/example-shell/setup.sh b/actions/example-shell/setup.sh new file mode 100755 index 00000000..9c1f5adf --- /dev/null +++ b/actions/example-shell/setup.sh @@ -0,0 +1 @@ +FORGEJO_RUNNER_CONFIG=$EXAMPLE_DIR/runner-config.yaml forgejo-runner.sh reload diff --git a/actions/example-shell/teardown.sh b/actions/example-shell/teardown.sh new file mode 100755 index 00000000..b410c513 --- /dev/null +++ b/actions/example-shell/teardown.sh @@ -0,0 +1 @@ +forgejo-runner.sh reload From 0b826217a94ae3bd692c1fd0fe2bb32beef4c1db Mon Sep 17 00:00:00 2001 From: Earl Warren Date: Sat, 12 Jul 2025 09:59:00 +0000 Subject: [PATCH 13/86] actions: shell: assert sh fallback (#790) Refs forgejo/runner#150 Local testing [following instructions](https://code.forgejo.org/forgejo/end-to-end/src/branch/main/README.md#running-from-locally-built-binary) and [the matching ACT PR](https://code.forgejo.org/forgejo/act/pulls/177). Once merged this will be a noop and actually remove coverage for shell test that was added earlier today. It will reactivate once the runner v8.0.0 is published. Reviewed-on: https://code.forgejo.org/forgejo/end-to-end/pulls/790 Co-authored-by: Earl Warren Co-committed-by: Earl Warren --- actions/actions.sh | 6 +++- .../example-shell/.forgejo/workflows/test.yml | 35 ++++++++++++------- 2 files changed, 27 insertions(+), 14 deletions(-) diff --git a/actions/actions.sh b/actions/actions.sh index b1e6bd8a..aa2401e8 100755 --- a/actions/actions.sh +++ b/actions/actions.sh @@ -143,7 +143,7 @@ function test_actions() { done fi - for example in shell echo lxc config-options cache checkout service container expression local-action docker-action if if-fail push tag push-cancel artifacts pull-request context; do + for example in echo lxc config-options cache checkout service container expression local-action docker-action if if-fail push tag push-cancel artifacts pull-request context; do run actions_verify_example $example done @@ -151,6 +151,10 @@ function test_actions() { run actions_verify_example cache-proxy fi + if dpkg --compare-versions $runner_version ge 8.0.0; then + run actions_verify_example shell + fi + if dpkg --compare-versions $version lt 7.1; then for example in cron; do run actions_verify_example $example diff --git a/actions/example-shell/.forgejo/workflows/test.yml b/actions/example-shell/.forgejo/workflows/test.yml index 38a2a6cd..67c9f989 100644 --- a/actions/example-shell/.forgejo/workflows/test.yml +++ b/actions/example-shell/.forgejo/workflows/test.yml @@ -12,10 +12,29 @@ jobs: run: | ${{ env.ASSERT_SHELL }} /bash - defaults-run: + sh-fallback: needs: [default] # alpine:docker://code.forgejo.org/oci/alpine:latest runs-on: alpine + steps: + - name: default is bash but with a fallback to sh in case it does not exist + run: | + ${{ env.ASSERT_SHELL }} /busybox + + sh-fallback-with-container: + needs: [sh-fallback] + runs-on: docker + container: + image: code.forgejo.org/oci/alpine:latest + steps: + - name: default is bash but with a fallback to sh in case it does not exist + run: | + ${{ env.ASSERT_SHELL }} /busybox + + defaults-run: + needs: [sh-fallback-with-container] + # alpine:docker://code.forgejo.org/oci/alpine:latest + runs-on: alpine defaults: run: shell: sh @@ -24,16 +43,6 @@ jobs: run: | ${{ env.ASSERT_SHELL }} /busybox - alpine: - needs: [defaults-run] - runs-on: docker - container: - image: code.forgejo.org/oci/alpine:latest - steps: - - name: default is sh which is an alias for busybox in alpine - run: | - ${{ env.ASSERT_SHELL }} /busybox - python: needs: [alpine] runs-on: docker @@ -51,9 +60,9 @@ jobs: container: image: code.forgejo.org/oci/node:22-bookworm steps: - - name: default is sh which is an alias for dash in bookworm + - name: default is bash run: | - ${{ env.ASSERT_SHELL }} /dash + ${{ env.ASSERT_SHELL }} /bash - name: bash => bash --noprofile --norc -e -o pipefail {0} shell: bash From 606c32a2bec3593888a17d2344d993ce3e13309b Mon Sep 17 00:00:00 2001 From: Earl Warren Date: Sun, 20 Jul 2025 04:25:19 +0000 Subject: [PATCH 14/86] fix: update the docs branches (#815) Reviewed-on: https://code.forgejo.org/forgejo/end-to-end/pulls/815 Reviewed-by: 0ko <0ko@noreply.code.forgejo.org> Co-authored-by: Earl Warren Co-committed-by: Earl Warren --- .forgejo/workflows/end-to-end.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.forgejo/workflows/end-to-end.yml b/.forgejo/workflows/end-to-end.yml index 28b9cd49..ca4a70af 100644 --- a/.forgejo/workflows/end-to-end.yml +++ b/.forgejo/workflows/end-to-end.yml @@ -112,11 +112,11 @@ jobs: strategy: matrix: info: - - version: "11.0" + - version: "12.0" branch: next forgejo: https://codeberg.org owner: forgejo-experimental - - version: "10.0" + - version: "11.0" forgejo: https://codeberg.org owner: forgejo steps: From 84b83250e3b8a0a7ac66333590684f9df381da30 Mon Sep 17 00:00:00 2001 From: Earl Warren Date: Sun, 20 Jul 2025 08:40:24 +0000 Subject: [PATCH 15/86] chore(renovate): use cascading-pr@v2.1.1 instead of cascading-pr@v2.1 (#817) because the branch is not maintained, only tags are used now Reviewed-on: https://code.forgejo.org/forgejo/end-to-end/pulls/817 Reviewed-by: Michael Kriese Co-authored-by: Earl Warren Co-committed-by: Earl Warren --- .forgejo/workflows/end-to-end.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.forgejo/workflows/end-to-end.yml b/.forgejo/workflows/end-to-end.yml index ca4a70af..c6ee4ef9 100644 --- a/.forgejo/workflows/end-to-end.yml +++ b/.forgejo/workflows/end-to-end.yml @@ -132,7 +132,7 @@ jobs: - run: ./end-to-end.sh prepare_dockerd - run: su forgejo -c "./end-to-end.sh test_actions ${{ matrix.info.version }}" - name: update documentation - uses: https://data.forgejo.org/actions/cascading-pr@v2.1 + uses: https://data.forgejo.org/actions/cascading-pr@v2.1.1 with: origin-url: ${{ env.FORGEJO_SERVER_URL }} origin-repo: ${{ forge.repository }} From 4e10e476898f03eca3ea2c55d7f65e311cdb21c3 Mon Sep 17 00:00:00 2001 From: Renovate Bot Date: Sun, 20 Jul 2025 15:22:23 +0000 Subject: [PATCH 16/86] Update https://data.forgejo.org/actions/cascading-pr action to v2.2.1 (#819) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [https://data.forgejo.org/actions/cascading-pr](https://code.forgejo.org/actions/cascading-pr) | action | minor | `v2.1.1` -> `v2.2.1` | --- ### Release Notes
actions/cascading-pr (https://data.forgejo.org/actions/cascading-pr) ### [`v2.2.1`](https://code.forgejo.org/actions/cascading-pr/compare/v2.2.0...v2.2.1) [Compare Source](https://code.forgejo.org/actions/cascading-pr/compare/v2.2.0...v2.2.1) ### [`v2.2.0`](https://code.forgejo.org/actions/cascading-pr/compare/v2.1.1...v2.2.0) [Compare Source](https://code.forgejo.org/actions/cascading-pr/compare/v2.1.1...v2.2.0)
--- ### Configuration 📅 **Schedule**: Branch creation - Between 12:00 AM and 03:59 AM ( * 0-3 * * * ) (UTC), Automerge - Between 12:00 AM and 03:59 AM ( * 0-3 * * * ) (UTC). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Renovate Bot](https://github.com/renovatebot/renovate). Reviewed-on: https://code.forgejo.org/forgejo/end-to-end/pulls/819 Reviewed-by: earl-warren Co-authored-by: Renovate Bot Co-committed-by: Renovate Bot --- .forgejo/workflows/end-to-end.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.forgejo/workflows/end-to-end.yml b/.forgejo/workflows/end-to-end.yml index c6ee4ef9..85afdae1 100644 --- a/.forgejo/workflows/end-to-end.yml +++ b/.forgejo/workflows/end-to-end.yml @@ -132,7 +132,7 @@ jobs: - run: ./end-to-end.sh prepare_dockerd - run: su forgejo -c "./end-to-end.sh test_actions ${{ matrix.info.version }}" - name: update documentation - uses: https://data.forgejo.org/actions/cascading-pr@v2.1.1 + uses: https://data.forgejo.org/actions/cascading-pr@v2.2.1 with: origin-url: ${{ env.FORGEJO_SERVER_URL }} origin-repo: ${{ forge.repository }} From 18b2dc2e85c8019f76dce57b06d3164ab946620f Mon Sep 17 00:00:00 2001 From: Earl Warren Date: Sun, 20 Jul 2025 18:50:38 +0000 Subject: [PATCH 17/86] chore(cosmetic): pretty names for docs generation matrix (#816) Reviewed-on: https://code.forgejo.org/forgejo/end-to-end/pulls/816 Co-authored-by: Earl Warren Co-committed-by: Earl Warren --- .forgejo/workflows/end-to-end.yml | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/.forgejo/workflows/end-to-end.yml b/.forgejo/workflows/end-to-end.yml index 85afdae1..bd461e2c 100644 --- a/.forgejo/workflows/end-to-end.yml +++ b/.forgejo/workflows/end-to-end.yml @@ -112,11 +112,13 @@ jobs: strategy: matrix: info: - - version: "12.0" + - name: latest + version: "12.0" branch: next forgejo: https://codeberg.org owner: forgejo-experimental - - version: "11.0" + - name: previous + version: "11.0" forgejo: https://codeberg.org owner: forgejo steps: From 841ca7c2c6038335691b0f0e67d09c8c6a8b7827 Mon Sep 17 00:00:00 2001 From: Earl Warren Date: Mon, 21 Jul 2025 20:31:52 +0000 Subject: [PATCH 18/86] actions: as of Forgejo runner v8.0.0 FORGEJO_ACTION_PATH is hash based (#823) Refs: https://code.forgejo.org/forgejo/act/pulls/186 Reviewed-on: https://code.forgejo.org/forgejo/end-to-end/pulls/823 Reviewed-by: Michael Kriese Co-authored-by: Earl Warren Co-committed-by: Earl Warren --- actions/example-context/action-for-context/action.yml | 5 ++++- .../example-local-action/.forgejo/local-action/action.yml | 2 +- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/actions/example-context/action-for-context/action.yml b/actions/example-context/action-for-context/action.yml index e8e81c39..301d7280 100644 --- a/actions/example-context/action-for-context/action.yml +++ b/actions/example-context/action-for-context/action.yml @@ -20,7 +20,10 @@ runs: shell: bash run: | set -x - [[ "$FORGEJO_ACTION_PATH" =~ action-for-context@main$ ]] + # prior to Forgejo runner 8.0.0 the action path is built out of the file path. + # with Forgejo runner 8.0.0 and above is it a 64 character hash string + # e.g. /var/run/act/actions/1b/5c1802fa47e35716c2a0977bc907049d31aef29191cba400011c0b38b52d12 + [[ "$FORGEJO_ACTION_PATH" =~ action-for-context@main$ ]] || [[ "$FORGEJO_ACTION_PATH" =~ /[0-9a-f]{2}/[0-9a-f]{62}$ ]] test "$FORGEJO_ACTION_PATH" = "${{ github.ACTION_PATH }}" test "$FORGEJO_ACTION_PATH" = "${{ forge.ACTION_PATH }}" test "$FORGEJO_ACTION_PATH" = "$GITHUB_ACTION_PATH" diff --git a/actions/example-local-action/.forgejo/local-action/action.yml b/actions/example-local-action/.forgejo/local-action/action.yml index 6f5df8e1..900bc1c1 100644 --- a/actions/example-local-action/.forgejo/local-action/action.yml +++ b/actions/example-local-action/.forgejo/local-action/action.yml @@ -16,7 +16,7 @@ runs: - name: FORGEJO_ACTION_PATH run: | set -x - test "$(basename $FORGEJO_ACTION_PATH)" = local-action + test -e "$FORGEJO_ACTION_PATH" test "$FORGEJO_ACTION_PATH" = "${{ env.FORGEJO_ACTION_PATH }}" - run: echo key=${{ inputs.input-two-required }} >> $FORGEJO_OUTPUT From 07654423c60f4fe1d54a1dc905511c7abca1deee Mon Sep 17 00:00:00 2001 From: Earl Warren Date: Wed, 23 Jul 2025 15:23:20 +0000 Subject: [PATCH 19/86] feat: enable Forgejo Actions email notifications (#707) Reviewed-on: https://code.forgejo.org/forgejo/end-to-end/pulls/707 Reviewed-by: Michael Kriese Co-authored-by: Earl Warren Co-committed-by: Earl Warren --- .forgejo/workflows/end-to-end.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.forgejo/workflows/end-to-end.yml b/.forgejo/workflows/end-to-end.yml index bd461e2c..a186cc63 100644 --- a/.forgejo/workflows/end-to-end.yml +++ b/.forgejo/workflows/end-to-end.yml @@ -19,6 +19,8 @@ on: branches: - 'main' +enable-email-notifications: true + jobs: build: runs-on: docker From 47f50d3257045e7d4d326363a643a9871c0b2bf9 Mon Sep 17 00:00:00 2001 From: Earl Warren Date: Sat, 26 Jul 2025 11:23:39 +0000 Subject: [PATCH 20/86] actions: add test for reusable workflows (#839) It is working although undocumented. It appears that Forgejo Actions users depend on it and breaking it would meet some non negligible push back. This test ensures that future Forgejo runner versions do not break what is working. This came to light because some fixes are necessary to the schema validation to allow for that to keep working (see https://code.forgejo.org/forgejo/act/pulls/194). Reviewed-on: https://code.forgejo.org/forgejo/end-to-end/pulls/839 Reviewed-by: Michael Kriese Co-authored-by: Earl Warren Co-committed-by: Earl Warren --- actions/actions.sh | 2 +- .../.forgejo/workflows/reusable.yml | 27 +++++++++++++++++++ .../.forgejo/workflows/test.yml | 11 ++++++++ 3 files changed, 39 insertions(+), 1 deletion(-) create mode 100644 actions/example-workflow-call/.forgejo/workflows/reusable.yml create mode 100644 actions/example-workflow-call/.forgejo/workflows/test.yml diff --git a/actions/actions.sh b/actions/actions.sh index aa2401e8..8030b0e1 100755 --- a/actions/actions.sh +++ b/actions/actions.sh @@ -143,7 +143,7 @@ function test_actions() { done fi - for example in echo lxc config-options cache checkout service container expression local-action docker-action if if-fail push tag push-cancel artifacts pull-request context; do + for example in echo workflow-call lxc config-options cache checkout service container expression local-action docker-action if if-fail push tag push-cancel artifacts pull-request context; do run actions_verify_example $example done diff --git a/actions/example-workflow-call/.forgejo/workflows/reusable.yml b/actions/example-workflow-call/.forgejo/workflows/reusable.yml new file mode 100644 index 00000000..87659501 --- /dev/null +++ b/actions/example-workflow-call/.forgejo/workflows/reusable.yml @@ -0,0 +1,27 @@ +on: + workflow_call: + inputs: + parameter1: + required: true + type: string + +jobs: + callee: + runs-on: docker + container: + image: code.forgejo.org/oci/node:22-bookworm + volumes: + - /srv/example:/srv/example + steps: + + - run: | + set -x + test "${{ inputs.parameter1 }}" = "value1" + + - name: save event + run: | + d=/srv/example/push/contexts/$FORGEJO_EVENT_NAME + mkdir -p $d + cat > $d/github <<'EOF' + ${{ toJSON(github) }} + EOF diff --git a/actions/example-workflow-call/.forgejo/workflows/test.yml b/actions/example-workflow-call/.forgejo/workflows/test.yml new file mode 100644 index 00000000..e009eeef --- /dev/null +++ b/actions/example-workflow-call/.forgejo/workflows/test.yml @@ -0,0 +1,11 @@ +on: + push: + +jobs: + caller: + runs-on: docker + container: + image: code.forgejo.org/oci/node:22-bookworm + uses: ./.forgejo/workflows/reusable.yml + with: + parameter1: value1 From 15cfe2f55c79651c0a6e52f7a9218de385955558 Mon Sep 17 00:00:00 2001 From: Earl Warren Date: Tue, 12 Aug 2025 07:48:14 +0000 Subject: [PATCH 21/86] actions: add trivial matrix example (#912) Reviewed-on: https://code.forgejo.org/forgejo/end-to-end/pulls/912 Reviewed-by: Gusted Co-authored-by: Earl Warren Co-committed-by: Earl Warren --- actions/actions.sh | 2 +- actions/example-matrix/.forgejo/workflows/test.yml | 12 ++++++++++++ 2 files changed, 13 insertions(+), 1 deletion(-) create mode 100644 actions/example-matrix/.forgejo/workflows/test.yml diff --git a/actions/actions.sh b/actions/actions.sh index 8030b0e1..ac3f5381 100755 --- a/actions/actions.sh +++ b/actions/actions.sh @@ -143,7 +143,7 @@ function test_actions() { done fi - for example in echo workflow-call lxc config-options cache checkout service container expression local-action docker-action if if-fail push tag push-cancel artifacts pull-request context; do + for example in echo matrix workflow-call lxc config-options cache checkout service container expression local-action docker-action if if-fail push tag push-cancel artifacts pull-request context; do run actions_verify_example $example done diff --git a/actions/example-matrix/.forgejo/workflows/test.yml b/actions/example-matrix/.forgejo/workflows/test.yml new file mode 100644 index 00000000..34de0a59 --- /dev/null +++ b/actions/example-matrix/.forgejo/workflows/test.yml @@ -0,0 +1,12 @@ +on: [push] +jobs: + test: + runs-on: docker + name: name-${{ matrix.version }} + strategy: + matrix: + version: [1.18, 1.19] + steps: + - run: | + set -x + test "${{ matrix.version }}" From 20f170d4a01e65f9cfc51e365ffd2d680f2908e5 Mon Sep 17 00:00:00 2001 From: Earl Warren Date: Tue, 12 Aug 2025 10:37:15 +0000 Subject: [PATCH 22/86] actions: add trivial needs output example (#915) Reviewed-on: https://code.forgejo.org/forgejo/end-to-end/pulls/915 Reviewed-by: Gusted Co-authored-by: Earl Warren Co-committed-by: Earl Warren --- actions/actions.sh | 2 +- .../example-needs/.forgejo/workflows/test.yml | 19 +++++++++++++++++++ 2 files changed, 20 insertions(+), 1 deletion(-) create mode 100644 actions/example-needs/.forgejo/workflows/test.yml diff --git a/actions/actions.sh b/actions/actions.sh index ac3f5381..5df95569 100755 --- a/actions/actions.sh +++ b/actions/actions.sh @@ -143,7 +143,7 @@ function test_actions() { done fi - for example in echo matrix workflow-call lxc config-options cache checkout service container expression local-action docker-action if if-fail push tag push-cancel artifacts pull-request context; do + for example in echo matrix needs workflow-call lxc config-options cache checkout service container expression local-action docker-action if if-fail push tag push-cancel artifacts pull-request context; do run actions_verify_example $example done diff --git a/actions/example-needs/.forgejo/workflows/test.yml b/actions/example-needs/.forgejo/workflows/test.yml new file mode 100644 index 00000000..d38a1e75 --- /dev/null +++ b/actions/example-needs/.forgejo/workflows/test.yml @@ -0,0 +1,19 @@ +on: [push] +jobs: + job1: + runs-on: docker + outputs: + job1output: ${{ steps.step1.outputs.value }} + steps: + - id: step1 + run: | + set -x + echo "value=value1" >> $FORGEJO_OUTPUT + + job2: + needs: [job1] + runs-on: docker + steps: + - run: | + set -x + test "${{ needs.job1.outputs.job1output }}" = "value1" From 761ff8aa08522e41a5e4c1c5af7e1e8e8fa9a49b Mon Sep 17 00:00:00 2001 From: Renovate Bot Date: Fri, 15 Aug 2025 07:34:13 +0000 Subject: [PATCH 23/86] Update https://data.forgejo.org/actions/setup-forgejo action to v3.0.2 (#931) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [https://data.forgejo.org/actions/setup-forgejo](https://code.forgejo.org/actions/setup-forgejo) | action | patch | `v3.0.1` -> `v3.0.2` | --- ### Release Notes
actions/setup-forgejo (https://data.forgejo.org/actions/setup-forgejo) ### [`v3.0.2`](https://code.forgejo.org/actions/setup-forgejo/compare/v3.0.1...v3.0.2) [Compare Source](https://code.forgejo.org/actions/setup-forgejo/compare/v3.0.1...v3.0.2)
--- ### Configuration 📅 **Schedule**: Branch creation - Between 12:00 AM and 03:59 AM ( * 0-3 * * * ) (UTC), Automerge - Between 12:00 AM and 03:59 AM ( * 0-3 * * * ) (UTC). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Renovate Bot](https://github.com/renovatebot/renovate). Reviewed-on: https://code.forgejo.org/forgejo/end-to-end/pulls/931 Reviewed-by: earl-warren Co-authored-by: Renovate Bot Co-committed-by: Renovate Bot --- .forgejo/prepare-end-to-end/action.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.forgejo/prepare-end-to-end/action.yml b/.forgejo/prepare-end-to-end/action.yml index 472c0938..b83c253e 100644 --- a/.forgejo/prepare-end-to-end/action.yml +++ b/.forgejo/prepare-end-to-end/action.yml @@ -11,7 +11,7 @@ runs: /usr/local/bin/garage key: S3 - - uses: https://data.forgejo.org/actions/setup-forgejo@v3.0.1 + - uses: https://data.forgejo.org/actions/setup-forgejo@v3.0.2 with: install-only: true - run: forgejo-binary.sh ensure_user forgejo From 6455896fd32809610e7c2059c6888bfe0be2ccfc Mon Sep 17 00:00:00 2001 From: Earl Warren Date: Fri, 15 Aug 2025 07:34:38 +0000 Subject: [PATCH 24/86] chore: do not needlessly upload an artifact when there is no build (#916) - ${{ needs.build.outputs.built }} is true if there is a build from source, false otherwise - prepare-end-to-end local action does not attempt to download an artifact if inputs.built is false Reviewed-on: https://code.forgejo.org/forgejo/end-to-end/pulls/916 Reviewed-by: Gusted Co-authored-by: Earl Warren Co-committed-by: Earl Warren --- .forgejo/prepare-end-to-end/action.yml | 5 +++++ .forgejo/workflows/end-to-end.yml | 18 ++++++++++++++++++ 2 files changed, 23 insertions(+) diff --git a/.forgejo/prepare-end-to-end/action.yml b/.forgejo/prepare-end-to-end/action.yml index b83c253e..723e8827 100644 --- a/.forgejo/prepare-end-to-end/action.yml +++ b/.forgejo/prepare-end-to-end/action.yml @@ -1,3 +1,7 @@ +inputs: + built: + description: 'True if a source build is available, false otherwise' + runs: using: "composite" steps: @@ -16,6 +20,7 @@ runs: install-only: true - run: forgejo-binary.sh ensure_user forgejo - uses: actions/download-artifact@v3 + if: ${{ inputs.built == true }} with: name: forgejo-dev path: /srv/forgejo-binaries diff --git a/.forgejo/workflows/end-to-end.yml b/.forgejo/workflows/end-to-end.yml index a186cc63..208e83f5 100644 --- a/.forgejo/workflows/end-to-end.yml +++ b/.forgejo/workflows/end-to-end.yml @@ -26,18 +26,22 @@ jobs: runs-on: docker container: image: 'code.forgejo.org/oci/node:20-bookworm' + outputs: + built: "${{ steps.build.outputs.value }}" steps: - uses: https://data.forgejo.org/actions/checkout@v4 - uses: https://data.forgejo.org/actions/setup-go@v5 with: go-version: "1.22" - name: lib/build.sh + id: build run: | mkdir $d /tmp/forgejo-upload touch /tmp/forgejo-upload/PLACEHOLDER if ! test -f forgejo/build-from-sources; then echo forgejo/build-from-sources is not present, do not build any version from source + echo "built=false" >> $FORGEJO_OUTPUT exit 0 fi @@ -57,7 +61,11 @@ jobs: $forgejo --version mv $forgejo /tmp/forgejo-upload/forgejo-$version done + + echo "built=true" >> $FORGEJO_OUTPUT + - uses: actions/upload-artifact@v3 + if: ${{ steps.build.outputs.built == true }} with: name: forgejo-dev path: /tmp/forgejo-upload @@ -68,6 +76,8 @@ jobs: steps: - uses: https://data.forgejo.org/actions/checkout@v4 - uses: ./.forgejo/prepare-end-to-end + with: + built: ${{ needs.build.outputs.built }} - run: su forgejo -c "./end-to-end.sh test_packages" - name: full logs if: always() @@ -79,6 +89,8 @@ jobs: steps: - uses: https://data.forgejo.org/actions/checkout@v4 - uses: ./.forgejo/prepare-end-to-end + with: + built: ${{ needs.build.outputs.built }} - run: ./end-to-end.sh prepare_dockerd - run: su forgejo -c "./end-to-end.sh test_actions" - name: full logs @@ -91,6 +103,8 @@ jobs: steps: - uses: https://data.forgejo.org/actions/checkout@v4 - uses: ./.forgejo/prepare-end-to-end + with: + built: ${{ needs.build.outputs.built }} - name: install zstd run: | export DEBIAN_FRONTEND=noninteractive @@ -126,6 +140,8 @@ jobs: steps: - uses: https://data.forgejo.org/actions/checkout@v4 - uses: ./.forgejo/prepare-end-to-end + with: + built: ${{ needs.build.outputs.built }} - name: set full-version id: full-version shell: bash @@ -160,6 +176,8 @@ jobs: steps: - uses: https://data.forgejo.org/actions/checkout@v4 - uses: ./.forgejo/prepare-end-to-end + with: + built: ${{ needs.build.outputs.built }} - run: su forgejo -c "./end-to-end.sh test_upgrades" - run: su forgejo -c "./end-to-end.sh test_storage" - name: full logs From 44f2cf9cf102d257b9ddc707b2d67f82228bf4fe Mon Sep 17 00:00:00 2001 From: Earl Warren Date: Sat, 16 Aug 2025 20:47:03 +0000 Subject: [PATCH 25/86] actions: show how secrets & outputs work with workflow_call (#934) Reviewed-on: https://code.forgejo.org/forgejo/end-to-end/pulls/934 Co-authored-by: Earl Warren Co-committed-by: Earl Warren --- .../.forgejo/workflows/reusable.yml | 10 +++++++++- .../.forgejo/workflows/test.yml | 12 ++++++++++++ 2 files changed, 21 insertions(+), 1 deletion(-) diff --git a/actions/example-workflow-call/.forgejo/workflows/reusable.yml b/actions/example-workflow-call/.forgejo/workflows/reusable.yml index 87659501..aa6d029e 100644 --- a/actions/example-workflow-call/.forgejo/workflows/reusable.yml +++ b/actions/example-workflow-call/.forgejo/workflows/reusable.yml @@ -4,6 +4,9 @@ on: parameter1: required: true type: string + outputs: + output1: + value: ${{ jobs.callee.outputs.job-output }} jobs: callee: @@ -12,11 +15,16 @@ jobs: image: code.forgejo.org/oci/node:22-bookworm volumes: - /srv/example:/srv/example + outputs: + job-output: ${{ steps.stepwithoutput.outputs.myvalue }} steps: - - run: | + - id: stepwithoutput + run: | set -x test "${{ inputs.parameter1 }}" = "value1" + test "${{ secrets.secret }}" = "keep_it_private" + echo "myvalue=outputvalue1" >> $FORGEJO_OUTPUT - name: save event run: | diff --git a/actions/example-workflow-call/.forgejo/workflows/test.yml b/actions/example-workflow-call/.forgejo/workflows/test.yml index e009eeef..6185f8f7 100644 --- a/actions/example-workflow-call/.forgejo/workflows/test.yml +++ b/actions/example-workflow-call/.forgejo/workflows/test.yml @@ -9,3 +9,15 @@ jobs: uses: ./.forgejo/workflows/reusable.yml with: parameter1: value1 + secrets: + secret: keep_it_private + + verify: + needs: [caller] + runs-on: docker + container: + image: code.forgejo.org/oci/node:22-bookworm + steps: + - run: | + set -x + test "${{ needs.caller.outputs.output1 }}" = "outputvalue1" From 1e330632274c45ef8ad829e7cb52f9eb83629be1 Mon Sep 17 00:00:00 2001 From: Earl Warren Date: Sat, 16 Aug 2025 21:43:35 +0000 Subject: [PATCH 26/86] fix: the build step output is built, not value (#947) https://code.forgejo.org/forgejo/end-to-end/src/commit/44f2cf9cf102d257b9ddc707b2d67f82228bf4fe/.forgejo/workflows/end-to-end.yml#L65 Reviewed-on: https://code.forgejo.org/forgejo/end-to-end/pulls/947 Reviewed-by: Gusted Co-authored-by: Earl Warren Co-committed-by: Earl Warren --- .forgejo/workflows/end-to-end.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.forgejo/workflows/end-to-end.yml b/.forgejo/workflows/end-to-end.yml index 208e83f5..f650e579 100644 --- a/.forgejo/workflows/end-to-end.yml +++ b/.forgejo/workflows/end-to-end.yml @@ -27,7 +27,7 @@ jobs: container: image: 'code.forgejo.org/oci/node:20-bookworm' outputs: - built: "${{ steps.build.outputs.value }}" + built: "${{ steps.build.outputs.built }}" steps: - uses: https://data.forgejo.org/actions/checkout@v4 - uses: https://data.forgejo.org/actions/setup-go@v5 From 95453f8fd811bceb039fcbb5d05be70d2d667311 Mon Sep 17 00:00:00 2001 From: Earl Warren Date: Sun, 17 Aug 2025 08:44:56 +0000 Subject: [PATCH 27/86] fix: use yes/no instead of true/false for using a binary built from source (#948) and add information from steps and inputs context for future debug. --- For debugging a temporary commit [that trims the tests is used](https://code.forgejo.org/forgejo/end-to-end/pulls/948/commits/5e6bd041158847de99908464d629cbd85d14b951) ## No build from source - https://code.forgejo.org/forgejo/end-to-end/actions/runs/3905 ![image](/attachments/66ef5aa0-25a8-4624-9d92-dd18dce0a427) ## Build from source A temporary commit [is used to build from sources](https://code.forgejo.org/forgejo/end-to-end/pulls/948/commits/ffa5170ba21c070208c7934d727327efc0ec248f). - https://code.forgejo.org/forgejo/end-to-end/actions/runs/3904 ![image](/attachments/e335ee9f-fa07-43e0-aaf4-dfa745aa2a6a) Reviewed-on: https://code.forgejo.org/forgejo/end-to-end/pulls/948 Co-authored-by: Earl Warren Co-committed-by: Earl Warren --- .forgejo/prepare-end-to-end/action.yml | 8 +++++++- .forgejo/workflows/end-to-end.yml | 13 ++++++++++--- 2 files changed, 17 insertions(+), 4 deletions(-) diff --git a/.forgejo/prepare-end-to-end/action.yml b/.forgejo/prepare-end-to-end/action.yml index 723e8827..fd949a20 100644 --- a/.forgejo/prepare-end-to-end/action.yml +++ b/.forgejo/prepare-end-to-end/action.yml @@ -19,8 +19,14 @@ runs: with: install-only: true - run: forgejo-binary.sh ensure_user forgejo + - name: inputs context dump for debug + run: | + set -x + cat <> $FORGEJO_OUTPUT + echo "built=no" >> $FORGEJO_OUTPUT exit 0 fi @@ -62,10 +62,17 @@ jobs: mv $forgejo /tmp/forgejo-upload/forgejo-$version done - echo "built=true" >> $FORGEJO_OUTPUT + echo "built=yes" >> $FORGEJO_OUTPUT + + - name: steps context dump for debug + run: | + set -x + cat < Date: Sun, 17 Aug 2025 17:50:19 +0000 Subject: [PATCH 28/86] actions: context: verify RUN_ID (#951) Reviewed-on: https://code.forgejo.org/forgejo/end-to-end/pulls/951 Co-authored-by: Earl Warren Co-committed-by: Earl Warren --- actions/example-context/.forgejo/workflows/test.yml | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/actions/example-context/.forgejo/workflows/test.yml b/actions/example-context/.forgejo/workflows/test.yml index 1a092cd9..2d3576fb 100644 --- a/actions/example-context/.forgejo/workflows/test.yml +++ b/actions/example-context/.forgejo/workflows/test.yml @@ -178,6 +178,15 @@ jobs: test "$FORGEJO_RUN_NUMBER" = "${{ forge.RUN_NUMBER }}" test "$FORGEJO_RUN_NUMBER" = "$GITHUB_RUN_NUMBER" + - name: FORGEJO_RUN_ID + run: | + set -x + echo "$FORGEJO_RUN_ID" | grep -E '^[0-9]+$' + test "$FORGEJO_RUN_ID" = "${{ env.FORGEJO_RUN_ID }}" + test "$FORGEJO_RUN_ID" = "${{ github.RUN_ID }}" + test "$FORGEJO_RUN_ID" = "${{ forge.RUN_ID }}" + test "$FORGEJO_RUN_ID" = "$GITHUB_RUN_ID" + - name: FORGEJO_SERVER_URL shell: bash run: | From 8f920b4b7adcb920e435db1acd02407b2312ab74 Mon Sep 17 00:00:00 2001 From: Gusted Date: Thu, 21 Aug 2025 04:54:52 +0000 Subject: [PATCH 29/86] Add coverage (#914) Reviewed-on: https://code.forgejo.org/forgejo/end-to-end/pulls/914 Reviewed-by: earl-warren Co-authored-by: Gusted Co-committed-by: Gusted --- .forgejo/upload-coverage/action.yml | 11 +++++++++++ .forgejo/workflows/end-to-end.yml | 16 ++++++++++++++++ lib/build.sh | 2 +- lib/lib.sh | 4 +++- 4 files changed, 31 insertions(+), 2 deletions(-) create mode 100644 .forgejo/upload-coverage/action.yml diff --git a/.forgejo/upload-coverage/action.yml b/.forgejo/upload-coverage/action.yml new file mode 100644 index 00000000..7626f43d --- /dev/null +++ b/.forgejo/upload-coverage/action.yml @@ -0,0 +1,11 @@ +inputs: + scope: + description: 'Scope of the coverage' + +runs: + using: "composite" + steps: + - uses: actions/upload-artifact@v3 + with: + name: coverage-${{ inputs.scope }} + path: /tmp/forgejo-end-to-end/coverage diff --git a/.forgejo/workflows/end-to-end.yml b/.forgejo/workflows/end-to-end.yml index eef7b51d..5ca770ba 100644 --- a/.forgejo/workflows/end-to-end.yml +++ b/.forgejo/workflows/end-to-end.yml @@ -86,6 +86,10 @@ jobs: with: built: ${{ needs.build.outputs.built }} - run: su forgejo -c "./end-to-end.sh test_packages" + - if: ${{ needs.build.outputs.built == 'yes' }} + uses: ./.forgejo/upload-coverage + with: + scope: packages - name: full logs if: always() run: su forgejo -c "./end-to-end.sh show_logs" @@ -100,6 +104,10 @@ jobs: built: ${{ needs.build.outputs.built }} - run: ./end-to-end.sh prepare_dockerd - run: su forgejo -c "./end-to-end.sh test_actions" + - if: ${{ needs.build.outputs.built == 'yes' }} + uses: ./.forgejo/upload-coverage + with: + scope: actions - name: full logs if: always() run: su forgejo -c "./end-to-end.sh show_logs" @@ -124,6 +132,10 @@ jobs: key: gitlab - run: | su forgejo -c "./end-to-end.sh test_federation" + - if: ${{ needs.build.outputs.built == 'yes' }} + uses: ./.forgejo/upload-coverage + with: + scope: federation - name: full logs if: always() run: su forgejo -c "./end-to-end.sh show_logs" @@ -187,6 +199,10 @@ jobs: built: ${{ needs.build.outputs.built }} - run: su forgejo -c "./end-to-end.sh test_upgrades" - run: su forgejo -c "./end-to-end.sh test_storage" + - if: ${{ needs.build.outputs.built == 'yes' }} + uses: ./.forgejo/upload-coverage + with: + scope: upgrade - name: full logs if: always() run: su forgejo -c "./end-to-end.sh show_logs" diff --git a/lib/build.sh b/lib/build.sh index bbef73eb..8fac7201 100755 --- a/lib/build.sh +++ b/lib/build.sh @@ -36,7 +36,7 @@ done git fetch --update-head-ok origin +$ref:$ref git switch --force-create $v $ref -export TAGS="bindata sqlite sqlite_unlock_notify" FORGEJO_VERSION=$semver +export TAGS="bindata sqlite sqlite_unlock_notify" FORGEJO_VERSION=$semver EXTRA_GOFLAGS="-cover" make deps-backend backend make generate forgejo cp -a forgejo $dir_binaries/forgejo-$v-dev diff --git a/lib/lib.sh b/lib/lib.sh index 22055dc5..4f540cf4 100644 --- a/lib/lib.sh +++ b/lib/lib.sh @@ -31,6 +31,7 @@ RELEASE_NUMBERS="11.0 12.0 13.0" PREFIX=============== export DIR=/tmp/forgejo-end-to-end DIR_BINARIES=/srv/forgejo-binaries +COVERAGE_DIR="$DIR/coverage" export DOT_FORGEJO_CURL=$DIR/forgejo-curl export DOT=$DOT_FORGEJO_CURL # for backward compatibility with forgejo-curl.sh 1.0.0 : ${FORGEJO_USER:=root} @@ -262,7 +263,8 @@ function start_forgejo_daemon() { local base=$(work_path_base $config) local work_path=$DIR/$base - daemon --chdir=$DIR --unsafe --env="TERM=$TERM" --env="HOME=$HOME" --env="PATH=$PATH" --pidfile=$DIR/$base-pid --errlog=$DIR/$base-err.log --output=$DIR/$base-out.log -- $binary --config $work_path/app.ini --work-path $work_path + mkdir -p $COVERAGE_DIR + daemon --chdir=$DIR --unsafe --env="TERM=$TERM" --env="HOME=$HOME" --env="PATH=$PATH" --env="GOCOVERDIR=$COVERAGE_DIR" --pidfile=$DIR/$base-pid --errlog=$DIR/$base-err.log --output=$DIR/$base-out.log -- $binary --config $work_path/app.ini --work-path $work_path if ! retry grep --no-messages --quiet 'Starting server on' $work_path/log/forgejo.log; then grep '' $DIR/$base*.log grep '' $work_path/log/*.log 2>/dev/null From ecff9c4c70e0f90c867bf571bff911f2c1fada00 Mon Sep 17 00:00:00 2001 From: Earl Warren Date: Fri, 29 Aug 2025 13:51:34 +0000 Subject: [PATCH 30/86] actions: context: verify RUNNER_TOOL_CACHE exists (#968) As of [Forgejo runner 5.0.1](https://code.forgejo.org/forgejo/runner/commit/5889426664adb3197dfb8840ea8b6d77c28b63f9), RUNNER_TOOL_CACHE is set but it is not pre-populated. By default it does not exist but a dedicated container image my place shared tools at that location for actions / workflows that expect them to be advertised by this environment variable. Resolves forgejo/runner#901 Reviewed-on: https://code.forgejo.org/forgejo/end-to-end/pulls/968 Co-authored-by: Earl Warren Co-committed-by: Earl Warren --- actions/example-context/.forgejo/workflows/test.yml | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/actions/example-context/.forgejo/workflows/test.yml b/actions/example-context/.forgejo/workflows/test.yml index 2d3576fb..8b8b971f 100644 --- a/actions/example-context/.forgejo/workflows/test.yml +++ b/actions/example-context/.forgejo/workflows/test.yml @@ -242,11 +242,10 @@ jobs: set -x test "$RUNNER_OS" = Linux - # runner 3.3.0 $RUNNER_TOOL_CACHE is not an existing directory - # - name: RUNNER_TOOL_CACHE - # run: | - # set -x - # test -d "$RUNNER_TOOL_CACHE" + - name: RUNNER_TOOL_CACHE + run: | + set -x + test "$RUNNER_TOOL_CACHE" - name: RUNNER_TEMP run: | From d29439c5f718a154cd2e4ce383e0eef29e967103 Mon Sep 17 00:00:00 2001 From: Earl Warren Date: Mon, 1 Sep 2025 17:14:24 +0000 Subject: [PATCH 31/86] fix: actions: refactor force-rebuild tests to use a remote action (#991) The local actions are always rebuilt with a random tag and cannot be used to verify the force_rebuild setting is working. Reviewed-on: https://code.forgejo.org/forgejo/end-to-end/pulls/991 Reviewed-by: Michael Kriese Co-authored-by: Earl Warren Co-committed-by: Earl Warren --- README.md | 1 + actions/actions.sh | 2 +- .../.forgejo/local-docker-action/Dockerfile | 5 --- .../.forgejo/local-docker-action/action.yml | 6 --- .../local-docker-action/entrypoint.sh | 3 -- .../.forgejo/local-docker-action/input.txt | 1 - .../.forgejo/workflows/test.yml | 15 ++++--- actions/example-force-rebuild/run.sh | 45 +++++++++++++++---- .../runner-config-with-rebuild.yml | 3 +- .../runner-config-without-rebuild.yml | 3 +- 10 files changed, 50 insertions(+), 34 deletions(-) delete mode 100644 actions/example-force-rebuild/.forgejo/local-docker-action/Dockerfile delete mode 100644 actions/example-force-rebuild/.forgejo/local-docker-action/action.yml delete mode 100755 actions/example-force-rebuild/.forgejo/local-docker-action/entrypoint.sh delete mode 100644 actions/example-force-rebuild/.forgejo/local-docker-action/input.txt diff --git a/README.md b/README.md index cdcf5db0..1ffc60c1 100644 --- a/README.md +++ b/README.md @@ -82,6 +82,7 @@ admin permissions. But they do not need to run as root and must work fine when run as a regular user. ```sh +export FORGEJO_RUNNER_LOGS=/tmp/forgejo-end-to-end/forgejo-runner.log ./end-to-end.sh run dependencies ./end-to-end.sh actions_setup 10.0 firefox 0.0.0.0:3000 # user root / admin1234 diff --git a/actions/actions.sh b/actions/actions.sh index 5df95569..04629063 100755 --- a/actions/actions.sh +++ b/actions/actions.sh @@ -133,7 +133,7 @@ function test_actions() { done fi - if dpkg --compare-versions $runner_version gt 6.0.1; then + if dpkg --compare-versions $runner_version gt 10.0.0; then run actions_verify_example force-rebuild fi diff --git a/actions/example-force-rebuild/.forgejo/local-docker-action/Dockerfile b/actions/example-force-rebuild/.forgejo/local-docker-action/Dockerfile deleted file mode 100644 index 2339a39d..00000000 --- a/actions/example-force-rebuild/.forgejo/local-docker-action/Dockerfile +++ /dev/null @@ -1,5 +0,0 @@ -FROM code.forgejo.org/oci/debian:bookworm -COPY entrypoint.sh /run/entrypoint.sh -# if we rebuild, we should notice this file change -COPY input.txt /run/input.txt -ENTRYPOINT [ "/run/entrypoint.sh" ] diff --git a/actions/example-force-rebuild/.forgejo/local-docker-action/action.yml b/actions/example-force-rebuild/.forgejo/local-docker-action/action.yml deleted file mode 100644 index e53d6279..00000000 --- a/actions/example-force-rebuild/.forgejo/local-docker-action/action.yml +++ /dev/null @@ -1,6 +0,0 @@ -name: local docker action -description: local docker action, build depends on "input.txt" - -runs: - using: 'docker' - image: 'Dockerfile' diff --git a/actions/example-force-rebuild/.forgejo/local-docker-action/entrypoint.sh b/actions/example-force-rebuild/.forgejo/local-docker-action/entrypoint.sh deleted file mode 100755 index e2ee36ad..00000000 --- a/actions/example-force-rebuild/.forgejo/local-docker-action/entrypoint.sh +++ /dev/null @@ -1,3 +0,0 @@ -#! /usr/bin/env bash -set -x -exit "$(< /run/input.txt)" \ No newline at end of file diff --git a/actions/example-force-rebuild/.forgejo/local-docker-action/input.txt b/actions/example-force-rebuild/.forgejo/local-docker-action/input.txt deleted file mode 100644 index 5a944794..00000000 --- a/actions/example-force-rebuild/.forgejo/local-docker-action/input.txt +++ /dev/null @@ -1 +0,0 @@ -this file will be filled by the test \ No newline at end of file diff --git a/actions/example-force-rebuild/.forgejo/workflows/test.yml b/actions/example-force-rebuild/.forgejo/workflows/test.yml index 41510651..ee6a9bb4 100644 --- a/actions/example-force-rebuild/.forgejo/workflows/test.yml +++ b/actions/example-force-rebuild/.forgejo/workflows/test.yml @@ -1,10 +1,11 @@ ---- -on: - push: +on: [push] + jobs: - test: + ls: runs-on: docker steps: - - name: Checkout repository - uses: actions/checkout@v4 - - uses: ./.forgejo/local-docker-action + - uses: https://code.forgejo.org/forgejo/test-setup-forgejo-docker@main + with: + args: ${{ forge.workspace }}/SOMEFILE + - run: | + test -f ${{ forge.workspace }}/SOMEFILE diff --git a/actions/example-force-rebuild/run.sh b/actions/example-force-rebuild/run.sh index d82890a3..b783b3a2 100755 --- a/actions/example-force-rebuild/run.sh +++ b/actions/example-force-rebuild/run.sh @@ -19,24 +19,51 @@ function run() { forgejo-test-helper.sh wait_$expected $url $repo $sha } +function get_remote_image() { + docker image ls --format='{{ .Repository }}' | grep '^runner-remote-docker-action' +} + +function remove_remote_images() { + docker image ls --format='{{ .Repository }}' | grep '^runner-remote-docker-action' | while read image; do + docker rmi $image + done +} + +function was_built() { + grep --quiet 'docker build -t runner-remote-docker-action' $FORGEJO_RUNNER_LOGS +} + function main() { local dir=$TMPDIR/repository cp -a $EXAMPLE_DIR $dir - # set up passing docker action - echo "0" >$dir/.forgejo/local-docker-action/input.txt - setup_with_rebuild - run $dir success + remove_remote_images - # change docker action to fail - echo "1" >$dir/.forgejo/local-docker-action/input.txt - # ... but without a rebuild, it should still pass + : + : Run one + : setup_without_rebuild run $dir success + local image="$(get_remote_image)" + test "$image" + was_built - # now the action should fail + : + : Run two: verify the image was not rebuilt + : + setup_without_rebuild # resets the logs + run $dir success + test "$image" = "$(get_remote_image)" + ! was_built + + : + : Run two: verify the image was rebuilt and + : the image name stayed the same + : setup_with_rebuild - run $dir failure + run $dir success + test "$image" = "$(get_remote_image)" + was_built } main diff --git a/actions/example-force-rebuild/runner-config-with-rebuild.yml b/actions/example-force-rebuild/runner-config-with-rebuild.yml index c99a2300..6dee7b32 100644 --- a/actions/example-force-rebuild/runner-config-with-rebuild.yml +++ b/actions/example-force-rebuild/runner-config-with-rebuild.yml @@ -1,5 +1,6 @@ log: - level: debug + level: trace + job_level: trace runner: file: .runner diff --git a/actions/example-force-rebuild/runner-config-without-rebuild.yml b/actions/example-force-rebuild/runner-config-without-rebuild.yml index 793fbcd6..8d9f71bb 100644 --- a/actions/example-force-rebuild/runner-config-without-rebuild.yml +++ b/actions/example-force-rebuild/runner-config-without-rebuild.yml @@ -1,5 +1,6 @@ log: - level: debug + level: trace + job_level: trace runner: file: .runner From a3a5e22c6daf2b7b2d7f107add8adad9bfc14a74 Mon Sep 17 00:00:00 2001 From: Earl Warren Date: Sun, 7 Sep 2025 21:55:46 +0000 Subject: [PATCH 32/86] fix: actions: forgejo/test-setup-forgejo-docker is on code.forgejo.org (#1006) It was working before today because of a routing bug in the Forgejo infrastructure Reviewed-on: https://code.forgejo.org/forgejo/end-to-end/pulls/1006 Co-authored-by: Earl Warren Co-committed-by: Earl Warren --- actions/example-docker-action/.forgejo/workflows/test.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/actions/example-docker-action/.forgejo/workflows/test.yml b/actions/example-docker-action/.forgejo/workflows/test.yml index cec2c9db..4f70fff4 100644 --- a/actions/example-docker-action/.forgejo/workflows/test.yml +++ b/actions/example-docker-action/.forgejo/workflows/test.yml @@ -7,7 +7,7 @@ jobs: # # This Docker action creates the file SOMEFILE ... # - - uses: https://data.forgejo.org/forgejo/test-setup-forgejo-docker@main + - uses: https://code.forgejo.org/forgejo/test-setup-forgejo-docker@main with: args: ${{ forge.workspace }}/SOMEFILE # From 9b17f51199dffb09898ee0a5066aee59b84bb07f Mon Sep 17 00:00:00 2001 From: Earl Warren Date: Mon, 8 Sep 2025 20:14:08 +0000 Subject: [PATCH 33/86] chore: do not propagate contexts to the documentation (#1010) Refs forgejo/docs#1445 Notes: secrets should also be removed after this is merged Reviewed-on: https://code.forgejo.org/forgejo/end-to-end/pulls/1010 Co-authored-by: Earl Warren Co-committed-by: Earl Warren --- .forgejo/workflows/end-to-end.yml | 58 ------------------------------- 1 file changed, 58 deletions(-) diff --git a/.forgejo/workflows/end-to-end.yml b/.forgejo/workflows/end-to-end.yml index 5ca770ba..8357355c 100644 --- a/.forgejo/workflows/end-to-end.yml +++ b/.forgejo/workflows/end-to-end.yml @@ -2,16 +2,6 @@ # # https://code.forgejo.org/forgejo/end-to-end/settings/actions # -# secrets.CASCADE_DOCS_ORIGIN_TOKEN -# https://code.forgejo.org/forgejo-ci scope write:issue, read:repository, read:user -# vars.CASCADE_DOCS_DESTINATION_DOER -# forgejo-cascading-pr (https://codeberg.org/forgejo-cascading-pr) -# secrets.CASCADE_DOCS_DESTINATION_TOKEN -# https://codeberg.org/forgejo-cascading-pr scope write:issue, write:repository, read:user -# vars.CASCADE_DOCS_FORCE_VERSION -# replace the generated documentation for a given version even if it has already -# been generated (e.g. v7.0.0-test) -# on: pull_request: @@ -140,54 +130,6 @@ jobs: if: always() run: su forgejo -c "./end-to-end.sh show_logs" - actions-docs: - needs: [build] - runs-on: lxc-bookworm - if: forge.ref == 'refs/heads/main' - strategy: - matrix: - info: - - name: latest - version: "12.0" - branch: next - forgejo: https://codeberg.org - owner: forgejo-experimental - - name: previous - version: "11.0" - forgejo: https://codeberg.org - owner: forgejo - steps: - - uses: https://data.forgejo.org/actions/checkout@v4 - - uses: ./.forgejo/prepare-end-to-end - with: - built: ${{ needs.build.outputs.built }} - - name: set full-version - id: full-version - shell: bash - run: | - set -x - full_version=$(./end-to-end.sh full_version ${{ matrix.info.version }} ${{ matrix.info.owner }}) - echo value="$full_version" >> $FORGEJO_OUTPUT - - run: ./end-to-end.sh prepare_dockerd - - run: su forgejo -c "./end-to-end.sh test_actions ${{ matrix.info.version }}" - - name: update documentation - uses: https://data.forgejo.org/actions/cascading-pr@v2.2.1 - with: - origin-url: ${{ env.FORGEJO_SERVER_URL }} - origin-repo: ${{ forge.repository }} - origin-token: ${{ secrets.CASCADE_DOCS_ORIGIN_TOKEN }} - origin-ref: refs/heads/main - destination-url: https://codeberg.org - destination-fork-repo: ${{ vars.CASCADE_DOCS_DESTINATION_DOER }}/docs - destination-repo: forgejo/docs - destination-branch: ${{ matrix.info.branch || format('v{0}', matrix.info.version) }} - destination-token: ${{ secrets.CASCADE_DOCS_DESTINATION_TOKEN }} - prefix: ${{ env.FORGEJO_REPOSITORY }}-${{ matrix.info.version }} - update: .forgejo/cascading-docs - env: - FORCE_VERSION: "${{ vars.CASCADE_DOCS_FORCE_VERSION }}" - VERSION: "${{ steps.full-version.outputs.value }}" - upgrade: name: upgrade and storage needs: [build] From 219059b73214b38574693c1f2d2a851299dc0dc0 Mon Sep 17 00:00:00 2001 From: Renovate Bot Date: Wed, 10 Sep 2025 05:26:17 +0000 Subject: [PATCH 34/86] Update https://data.forgejo.org/actions/setup-forgejo action to v3.0.3 (#1014) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [https://data.forgejo.org/actions/setup-forgejo](https://code.forgejo.org/actions/setup-forgejo) | action | patch | `v3.0.2` -> `v3.0.3` | --- ### Release Notes
actions/setup-forgejo (https://data.forgejo.org/actions/setup-forgejo) ### [`v3.0.3`](https://code.forgejo.org/actions/setup-forgejo/compare/v3.0.2...v3.0.3) [Compare Source](https://code.forgejo.org/actions/setup-forgejo/compare/v3.0.2...v3.0.3)
--- ### Configuration 📅 **Schedule**: Branch creation - Between 12:00 AM and 03:59 AM ( * 0-3 * * * ) (UTC), Automerge - Between 12:00 AM and 03:59 AM ( * 0-3 * * * ) (UTC). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Renovate Bot](https://github.com/renovatebot/renovate). Reviewed-on: https://code.forgejo.org/forgejo/end-to-end/pulls/1014 Reviewed-by: earl-warren Co-authored-by: Renovate Bot Co-committed-by: Renovate Bot --- .forgejo/prepare-end-to-end/action.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.forgejo/prepare-end-to-end/action.yml b/.forgejo/prepare-end-to-end/action.yml index fd949a20..5b5fc00d 100644 --- a/.forgejo/prepare-end-to-end/action.yml +++ b/.forgejo/prepare-end-to-end/action.yml @@ -15,7 +15,7 @@ runs: /usr/local/bin/garage key: S3 - - uses: https://data.forgejo.org/actions/setup-forgejo@v3.0.2 + - uses: https://data.forgejo.org/actions/setup-forgejo@v3.0.3 with: install-only: true - run: forgejo-binary.sh ensure_user forgejo From d3aab3b4295d2735fddf04e7f21338e9e9677f7d Mon Sep 17 00:00:00 2001 From: Earl Warren Date: Sun, 14 Sep 2025 16:19:58 +0000 Subject: [PATCH 35/86] chore: actions: set the log level of the runner to trace (#1031) it greatly helps with debugging Reviewed-on: https://code.forgejo.org/forgejo/end-to-end/pulls/1031 Co-authored-by: Earl Warren Co-committed-by: Earl Warren --- actions/runner-config.yaml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/actions/runner-config.yaml b/actions/runner-config.yaml index 7d9e7642..5859b08e 100644 --- a/actions/runner-config.yaml +++ b/actions/runner-config.yaml @@ -1,5 +1,6 @@ log: - level: debug + level: trace + job_level: trace runner: file: .runner From 05e7b0c2f6e3fdd0b10cd25d3917c3e70d1aedf9 Mon Sep 17 00:00:00 2001 From: Renovate Bot Date: Sat, 20 Sep 2025 07:02:18 +0000 Subject: [PATCH 36/86] Update https://data.forgejo.org/actions/setup-forgejo action to v3.0.4 (#1046) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [https://data.forgejo.org/actions/setup-forgejo](https://code.forgejo.org/actions/setup-forgejo) | action | patch | `v3.0.3` -> `v3.0.4` | --- ### Release Notes
actions/setup-forgejo (https://data.forgejo.org/actions/setup-forgejo) ### [`v3.0.4`](https://code.forgejo.org/actions/setup-forgejo/compare/v3.0.3...v3.0.4) [Compare Source](https://code.forgejo.org/actions/setup-forgejo/compare/v3.0.3...v3.0.4)
--- ### Configuration 📅 **Schedule**: Branch creation - Between 12:00 AM and 03:59 AM ( * 0-3 * * * ) (UTC), Automerge - Between 12:00 AM and 03:59 AM ( * 0-3 * * * ) (UTC). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Renovate Bot](https://github.com/renovatebot/renovate). Reviewed-on: https://code.forgejo.org/forgejo/end-to-end/pulls/1046 Reviewed-by: earl-warren Co-authored-by: Renovate Bot Co-committed-by: Renovate Bot --- .forgejo/prepare-end-to-end/action.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.forgejo/prepare-end-to-end/action.yml b/.forgejo/prepare-end-to-end/action.yml index 5b5fc00d..1f9de15c 100644 --- a/.forgejo/prepare-end-to-end/action.yml +++ b/.forgejo/prepare-end-to-end/action.yml @@ -15,7 +15,7 @@ runs: /usr/local/bin/garage key: S3 - - uses: https://data.forgejo.org/actions/setup-forgejo@v3.0.3 + - uses: https://data.forgejo.org/actions/setup-forgejo@v3.0.4 with: install-only: true - run: forgejo-binary.sh ensure_user forgejo From 8cfc202cb4720f34d26ab58ec90b9f3fd871025d Mon Sep 17 00:00:00 2001 From: 0ko <0ko@noreply.codeberg.org> Date: Thu, 25 Sep 2025 15:06:50 +0000 Subject: [PATCH 37/86] chore(release): v14.0 exists (#1057) Reviewed-on: https://code.forgejo.org/forgejo/end-to-end/pulls/1057 Reviewed-by: earl-warren Co-authored-by: 0ko <0ko@noreply.codeberg.org> Co-committed-by: 0ko <0ko@noreply.codeberg.org> --- forgejo/sources/14.0 | 1 + lib/lib.sh | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) create mode 100644 forgejo/sources/14.0 diff --git a/forgejo/sources/14.0 b/forgejo/sources/14.0 new file mode 100644 index 00000000..84203a1b --- /dev/null +++ b/forgejo/sources/14.0 @@ -0,0 +1 @@ +https://codeberg.org/forgejo/forgejo forgejo 14.0.0 diff --git a/lib/lib.sh b/lib/lib.sh index 4f540cf4..8c8cc1c8 100644 --- a/lib/lib.sh +++ b/lib/lib.sh @@ -26,7 +26,7 @@ IP=$(hostname -I | cut -f1 -d' ') # # Forgejo releases for which a branch exists (7.0/forgejo etc.) # -RELEASE_NUMBERS="11.0 12.0 13.0" +RELEASE_NUMBERS="11.0 12.0 13.0 14.0" PREFIX=============== export DIR=/tmp/forgejo-end-to-end From ca5f4d096bbf8a7f2c7efb0c355c7f5e91f87f52 Mon Sep 17 00:00:00 2001 From: 0ko <0ko@noreply.codeberg.org> Date: Fri, 26 Sep 2025 14:15:12 +0000 Subject: [PATCH 38/86] chore(release): v12.0 is EoL (#1058) Ref https://code.forgejo.org/forgejo/end-to-end/pulls/1057 It will also need a rebase later. Reviewed-on: https://code.forgejo.org/forgejo/end-to-end/pulls/1058 Reviewed-by: earl-warren Co-authored-by: 0ko <0ko@noreply.codeberg.org> Co-committed-by: 0ko <0ko@noreply.codeberg.org> --- lib/lib.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/lib.sh b/lib/lib.sh index 8c8cc1c8..6ed6afbf 100644 --- a/lib/lib.sh +++ b/lib/lib.sh @@ -26,7 +26,7 @@ IP=$(hostname -I | cut -f1 -d' ') # # Forgejo releases for which a branch exists (7.0/forgejo etc.) # -RELEASE_NUMBERS="11.0 12.0 13.0 14.0" +RELEASE_NUMBERS="11.0 13.0 14.0" PREFIX=============== export DIR=/tmp/forgejo-end-to-end From 2c247b8d49662f209eea0e7b3edbad05bf5e1d43 Mon Sep 17 00:00:00 2001 From: Earl Warren Date: Sun, 28 Sep 2025 14:46:16 +0000 Subject: [PATCH 39/86] feat: federation: upgrade to trixie (#1069) Reviewed-on: https://code.forgejo.org/forgejo/end-to-end/pulls/1069 Co-authored-by: Earl Warren Co-committed-by: Earl Warren --- .forgejo/workflows/end-to-end.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.forgejo/workflows/end-to-end.yml b/.forgejo/workflows/end-to-end.yml index 8357355c..1096b0fa 100644 --- a/.forgejo/workflows/end-to-end.yml +++ b/.forgejo/workflows/end-to-end.yml @@ -104,7 +104,7 @@ jobs: federation: needs: [build] - runs-on: lxc-bookworm + runs-on: lxc-trixie steps: - uses: https://data.forgejo.org/actions/checkout@v4 - uses: ./.forgejo/prepare-end-to-end From 22004ebe73efb81b236562bdd0486d1d8e3e148f Mon Sep 17 00:00:00 2001 From: Renovate Bot Date: Sat, 18 Oct 2025 06:11:46 +0000 Subject: [PATCH 40/86] Update code.forgejo.org/oci/debian Docker tag to v13 (#1070) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | code.forgejo.org/oci/debian | container | major | `bookworm` -> `trixie` | | code.forgejo.org/oci/debian | service | major | `bookworm` -> `trixie` | --- ### Configuration 📅 **Schedule**: Branch creation - Between 12:00 AM and 03:59 AM ( * 0-3 * * * ) (UTC), Automerge - Between 12:00 AM and 03:59 AM ( * 0-3 * * * ) (UTC). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about these updates again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Renovate Bot](https://github.com/renovatebot/renovate). Reviewed-on: https://code.forgejo.org/forgejo/end-to-end/pulls/1070 Reviewed-by: earl-warren Co-authored-by: Renovate Bot Co-committed-by: Renovate Bot --- actions/example-cron/.forgejo/workflows/test.yml | 2 +- .../example-post-7-0-schedule/.forgejo/workflows/test.yml | 2 +- .../.forgejo/workflows/schedule_continue.yml | 2 +- actions/example-service/.forgejo/workflows/test.yml | 8 ++++---- .../example-workflow-dispatch/.forgejo/workflows/test.yml | 2 +- 5 files changed, 8 insertions(+), 8 deletions(-) diff --git a/actions/example-cron/.forgejo/workflows/test.yml b/actions/example-cron/.forgejo/workflows/test.yml index 054ddad6..8b23779a 100644 --- a/actions/example-cron/.forgejo/workflows/test.yml +++ b/actions/example-cron/.forgejo/workflows/test.yml @@ -6,7 +6,7 @@ jobs: test: runs-on: docker container: - image: code.forgejo.org/oci/debian:bookworm + image: code.forgejo.org/oci/debian:trixie options: "--volume /srv/example:/srv/example" steps: diff --git a/actions/example-post-7-0-schedule/.forgejo/workflows/test.yml b/actions/example-post-7-0-schedule/.forgejo/workflows/test.yml index 73e9b404..202382dc 100644 --- a/actions/example-post-7-0-schedule/.forgejo/workflows/test.yml +++ b/actions/example-post-7-0-schedule/.forgejo/workflows/test.yml @@ -6,7 +6,7 @@ jobs: test: runs-on: ${{ vars.TEST_SCHEDULE_RUNSON }} container: - image: code.forgejo.org/oci/debian:bookworm + image: code.forgejo.org/oci/debian:trixie options: "--volume /srv/example:/srv/example" steps: diff --git a/actions/example-schedule-noncancel/.forgejo/workflows/schedule_continue.yml b/actions/example-schedule-noncancel/.forgejo/workflows/schedule_continue.yml index 58156ea3..76ee59b8 100644 --- a/actions/example-schedule-noncancel/.forgejo/workflows/schedule_continue.yml +++ b/actions/example-schedule-noncancel/.forgejo/workflows/schedule_continue.yml @@ -5,7 +5,7 @@ jobs: test: runs-on: docker container: - image: code.forgejo.org/oci/debian:bookworm + image: code.forgejo.org/oci/debian:trixie volumes: - /srv/example:/srv/example steps: diff --git a/actions/example-service/.forgejo/workflows/test.yml b/actions/example-service/.forgejo/workflows/test.yml index 014653aa..1eeb3ec5 100644 --- a/actions/example-service/.forgejo/workflows/test.yml +++ b/actions/example-service/.forgejo/workflows/test.yml @@ -23,7 +23,7 @@ jobs: simple: runs-on: docker container: - image: code.forgejo.org/oci/debian:bookworm + image: code.forgejo.org/oci/debian:trixie services: pgsql: @@ -43,7 +43,7 @@ jobs: needs: [simple] runs-on: docker container: - image: code.forgejo.org/oci/debian:bookworm + image: code.forgejo.org/oci/debian:trixie options: "--volume /srv/example-service-volume-valid:/srv/example-service-volume-valid --volume /srv/example-service-volume-invalid:/srv/example-service-volume-invalid" steps: @@ -58,12 +58,12 @@ jobs: needs: [volume-on-step] runs-on: docker container: - image: code.forgejo.org/oci/debian:bookworm + image: code.forgejo.org/oci/debian:trixie options: "--volume /srv/example-service-volume-valid:/srv/example-service-volume-valid" services: myservice: - image: code.forgejo.org/oci/debian:bookworm + image: code.forgejo.org/oci/debian:trixie options: "--volume /srv/example-service-volume-valid:/srv/example-service-volume-valid" cmd: ["bash", "-c", "echo -n SUCCESS > /srv/example-service-volume-valid ; sleep infinity"] diff --git a/actions/example-workflow-dispatch/.forgejo/workflows/test.yml b/actions/example-workflow-dispatch/.forgejo/workflows/test.yml index c2dcea6d..766b21d8 100644 --- a/actions/example-workflow-dispatch/.forgejo/workflows/test.yml +++ b/actions/example-workflow-dispatch/.forgejo/workflows/test.yml @@ -44,7 +44,7 @@ jobs: test: runs-on: docker container: - image: code.forgejo.org/oci/debian:bookworm + image: code.forgejo.org/oci/debian:trixie options: "--volume /srv/example:/srv/example" steps: From d2234875f0dd0d0a0cd32a3690530c28872e7bad Mon Sep 17 00:00:00 2001 From: Renovate Bot Date: Sun, 9 Nov 2025 01:01:31 +0000 Subject: [PATCH 41/86] Update https://data.forgejo.org/actions/setup-forgejo action to v3.0.5 (#1192) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [https://data.forgejo.org/actions/setup-forgejo](https://code.forgejo.org/actions/setup-forgejo) | action | patch | `v3.0.4` -> `v3.0.5` | --- ### Release Notes
actions/setup-forgejo (https://data.forgejo.org/actions/setup-forgejo) ### [`v3.0.5`](https://code.forgejo.org/actions/setup-forgejo/compare/v3.0.4...v3.0.5) [Compare Source](https://code.forgejo.org/actions/setup-forgejo/compare/v3.0.4...v3.0.5)
--- ### Configuration 📅 **Schedule**: Branch creation - Between 12:00 AM and 03:59 AM ( * 0-3 * * * ) (UTC), Automerge - Between 12:00 AM and 03:59 AM ( * 0-3 * * * ) (UTC). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Renovate Bot](https://github.com/renovatebot/renovate). Reviewed-on: https://code.forgejo.org/forgejo/end-to-end/pulls/1192 Reviewed-by: Mathieu Fenniak Co-authored-by: Renovate Bot Co-committed-by: Renovate Bot --- .forgejo/prepare-end-to-end/action.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.forgejo/prepare-end-to-end/action.yml b/.forgejo/prepare-end-to-end/action.yml index 1f9de15c..69a39ce9 100644 --- a/.forgejo/prepare-end-to-end/action.yml +++ b/.forgejo/prepare-end-to-end/action.yml @@ -15,7 +15,7 @@ runs: /usr/local/bin/garage key: S3 - - uses: https://data.forgejo.org/actions/setup-forgejo@v3.0.4 + - uses: https://data.forgejo.org/actions/setup-forgejo@v3.0.5 with: install-only: true - run: forgejo-binary.sh ensure_user forgejo From 45620f406580f9ef05d26b80fb3f0b8e3061beb9 Mon Sep 17 00:00:00 2001 From: viceice Date: Tue, 11 Nov 2025 21:19:33 +0000 Subject: [PATCH 42/86] fix: pin docker cli to v28 (#1203) Reviewed-on: https://code.forgejo.org/forgejo/end-to-end/pulls/1203 Co-authored-by: viceice Co-committed-by: viceice --- actions/example-with-docker-host/.forgejo/workflows/test.yml | 2 +- actions/example-with-docker-socket/.forgejo/workflows/test.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/actions/example-with-docker-host/.forgejo/workflows/test.yml b/actions/example-with-docker-host/.forgejo/workflows/test.yml index 6089092f..277114e6 100644 --- a/actions/example-with-docker-host/.forgejo/workflows/test.yml +++ b/actions/example-with-docker-host/.forgejo/workflows/test.yml @@ -4,7 +4,7 @@ jobs: build: runs-on: docker container: - image: code.forgejo.org/oci/docker:cli + image: code.forgejo.org/oci/docker:28-cli steps: - run: ls -l /var/run/docker.sock - run: docker ps diff --git a/actions/example-with-docker-socket/.forgejo/workflows/test.yml b/actions/example-with-docker-socket/.forgejo/workflows/test.yml index 6089092f..277114e6 100644 --- a/actions/example-with-docker-socket/.forgejo/workflows/test.yml +++ b/actions/example-with-docker-socket/.forgejo/workflows/test.yml @@ -4,7 +4,7 @@ jobs: build: runs-on: docker container: - image: code.forgejo.org/oci/docker:cli + image: code.forgejo.org/oci/docker:28-cli steps: - run: ls -l /var/run/docker.sock - run: docker ps From 2cbea248e5e6c7176065f4365dc0884e934d96e3 Mon Sep 17 00:00:00 2001 From: Renovate Bot Date: Tue, 11 Nov 2025 23:35:20 +0000 Subject: [PATCH 43/86] Update dependency forgejo-lxc to v13 (#1205) Reviewed-on: https://code.forgejo.org/forgejo/end-to-end/pulls/1205 Reviewed-by: Michael Kriese Co-authored-by: Renovate Bot Co-committed-by: Renovate Bot --- .forgejo/workflows/end-to-end.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.forgejo/workflows/end-to-end.yml b/.forgejo/workflows/end-to-end.yml index 1096b0fa..a4fe2d46 100644 --- a/.forgejo/workflows/end-to-end.yml +++ b/.forgejo/workflows/end-to-end.yml @@ -69,7 +69,7 @@ jobs: packages: needs: [build] - runs-on: lxc-bookworm + runs-on: lxc-trixie steps: - uses: https://data.forgejo.org/actions/checkout@v4 - uses: ./.forgejo/prepare-end-to-end @@ -86,7 +86,7 @@ jobs: actions: needs: [build] - runs-on: lxc-bookworm + runs-on: lxc-trixie steps: - uses: https://data.forgejo.org/actions/checkout@v4 - uses: ./.forgejo/prepare-end-to-end @@ -133,7 +133,7 @@ jobs: upgrade: name: upgrade and storage needs: [build] - runs-on: lxc-bookworm + runs-on: lxc-trixie steps: - uses: https://data.forgejo.org/actions/checkout@v4 - uses: ./.forgejo/prepare-end-to-end From 7f6f69c80f6d62ecdcd3fe4c24b6190d5435caa5 Mon Sep 17 00:00:00 2001 From: Renovate Bot Date: Wed, 19 Nov 2025 06:00:58 +0000 Subject: [PATCH 44/86] Update https://data.forgejo.org/actions/setup-forgejo action to v3.0.6 (#1233) Reviewed-on: https://code.forgejo.org/forgejo/end-to-end/pulls/1233 Reviewed-by: Michael Kriese Co-authored-by: Renovate Bot Co-committed-by: Renovate Bot --- .forgejo/prepare-end-to-end/action.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.forgejo/prepare-end-to-end/action.yml b/.forgejo/prepare-end-to-end/action.yml index 69a39ce9..d85eb6f6 100644 --- a/.forgejo/prepare-end-to-end/action.yml +++ b/.forgejo/prepare-end-to-end/action.yml @@ -15,7 +15,7 @@ runs: /usr/local/bin/garage key: S3 - - uses: https://data.forgejo.org/actions/setup-forgejo@v3.0.5 + - uses: https://data.forgejo.org/actions/setup-forgejo@v3.0.6 with: install-only: true - run: forgejo-binary.sh ensure_user forgejo From 14d2748a33154a2e7f7a12686668dc3a1c9b595c Mon Sep 17 00:00:00 2001 From: Earl Warren Date: Mon, 1 Dec 2025 13:59:46 +0000 Subject: [PATCH 45/86] actions: use the forgejo context instead of forge and test backward compatibility (#1034) Reviewed-on: https://code.forgejo.org/forgejo/end-to-end/pulls/1034 Reviewed-by: Mathieu Fenniak Reviewed-by: Michael Kriese Co-authored-by: Earl Warren Co-committed-by: Earl Warren --- .../.forgejo/workflows/test.yml | 18 ++++++++++++++++++ .../action-for-context/action.yml | 2 ++ .../.forgejo/workflows/test.yml | 4 ++-- .../.forgejo/workflows/test.yml | 4 ++-- .../.forgejo/workflows/test.yml | 8 ++++---- 5 files changed, 28 insertions(+), 8 deletions(-) diff --git a/actions/example-context/.forgejo/workflows/test.yml b/actions/example-context/.forgejo/workflows/test.yml index 8b8b971f..6a5e6f25 100644 --- a/actions/example-context/.forgejo/workflows/test.yml +++ b/actions/example-context/.forgejo/workflows/test.yml @@ -22,6 +22,7 @@ jobs: test "$FORGEJO_ACTION" = "${{ env.FORGEJO_ACTION }}" test "$FORGEJO_ACTION" = "${{ github.ACTION }}" test "$FORGEJO_ACTION" = "${{ forge.ACTION }}" + test "$FORGEJO_ACTION" = "${{ forgejo.ACTION }}" test "$FORGEJO_ACTION" = "$GITHUB_ACTION" # See also actions/example-local-action/.forgejo/local-action/action.yml @@ -32,6 +33,7 @@ jobs: test "$FORGEJO_ACTION_PATH" = "${{ env.FORGEJO_ACTION_PATH }}" test "$FORGEJO_ACTION_PATH" = "${{ github.ACTION_PATH }}" test "$FORGEJO_ACTION_PATH" = "${{ forge.ACTION_PATH }}" + test "$FORGEJO_ACTION_PATH" = "${{ forgejo.ACTION_PATH }}" test "$FORGEJO_ACTION_PATH" = "$GITHUB_ACTION_PATH" - name: when running an action @@ -60,6 +62,7 @@ jobs: test "$FORGEJO_ACTOR" = "${{ env.FORGEJO_ACTOR }}" test "$FORGEJO_ACTOR" = "${{ github.ACTOR }}" test "$FORGEJO_ACTOR" = "${{ forge.ACTOR }}" + test "$FORGEJO_ACTOR" = "${{ forgejo.ACTOR }}" test "$FORGEJO_ACTOR" = "$GITHUB_ACTOR" - name: FORGEJO_API_URL @@ -70,6 +73,7 @@ jobs: test "$FORGEJO_API_URL" = "${{ env.FORGEJO_API_URL }}" test "$FORGEJO_API_URL" = "${{ github.API_URL }}" test "$FORGEJO_API_URL" = "${{ forge.API_URL }}" + test "$FORGEJO_API_URL" = "${{ forgejo.API_URL }}" test "$FORGEJO_API_URL" = "$GITHUB_API_URL" # See also actions/example-pull-request/.forgejo/workflows/test.yml @@ -80,6 +84,7 @@ jobs: test "$FORGEJO_BASE_REF" = "${{ env.FORGEJO_BASE_REF }}" test "$FORGEJO_BASE_REF" = "${{ github.BASE_REF }}" test "$FORGEJO_BASE_REF" = "${{ forge.BASE_REF }}" + test "$FORGEJO_BASE_REF" = "${{ forgejo.BASE_REF }}" test "$FORGEJO_BASE_REF" = "$GITHUB_BASE_REF" # See also actions/example-pull-request/.forgejo/workflows/test.yml @@ -90,6 +95,7 @@ jobs: test "$FORGEJO_HEAD_REF" = "${{ env.FORGEJO_HEAD_REF }}" test "$FORGEJO_HEAD_REF" = "${{ github.HEAD_REF }}" test "$FORGEJO_HEAD_REF" = "${{ forge.HEAD_REF }}" + test "$FORGEJO_HEAD_REF" = "${{ forgejo.HEAD_REF }}" test "$FORGEJO_HEAD_REF" = "$GITHUB_HEAD_REF" - name: FORGEJO_ENV @@ -106,6 +112,7 @@ jobs: test "$FORGEJO_EVENT_NAME" = "${{ env.FORGEJO_EVENT_NAME }}" test "$FORGEJO_EVENT_NAME" = "${{ github.EVENT_NAME }}" test "$FORGEJO_EVENT_NAME" = "${{ forge.EVENT_NAME }}" + test "$FORGEJO_EVENT_NAME" = "${{ forgejo.EVENT_NAME }}" test "$FORGEJO_EVENT_NAME" = "$GITHUB_EVENT_NAME" - name: FORGEJO_JOB @@ -115,6 +122,7 @@ jobs: test "$FORGEJO_JOB" = "${{ env.FORGEJO_JOB }}" test "$FORGEJO_JOB" = "${{ github.JOB }}" test "$FORGEJO_JOB" = "${{ forge.JOB }}" + test "$FORGEJO_JOB" = "${{ forgejo.JOB }}" test "$FORGEJO_JOB" = "$GITHUB_JOB" - name: FORGEJO_OUTPUT @@ -139,6 +147,7 @@ jobs: test "$FORGEJO_REF" = "${{ env.FORGEJO_REF }}" test "$FORGEJO_REF" = "${{ github.REF }}" test "$FORGEJO_REF" = "${{ forge.REF }}" + test "$FORGEJO_REF" = "${{ forgejo.REF }}" test "$FORGEJO_REF" = "$GITHUB_REF" - name: FORGEJO_REF_NAME @@ -149,6 +158,7 @@ jobs: test "$FORGEJO_REF_NAME" = "${{ env.FORGEJO_REF_NAME }}" test "$FORGEJO_REF_NAME" = "${{ github.REF_NAME }}" test "$FORGEJO_REF_NAME" = "${{ forge.REF_NAME }}" + test "$FORGEJO_REF_NAME" = "${{ forgejo.REF_NAME }}" test "$FORGEJO_REF_NAME" = "$GITHUB_REF_NAME" - name: FORGEJO_REPOSITORY @@ -158,6 +168,7 @@ jobs: test "$FORGEJO_REPOSITORY" = "${{ env.FORGEJO_REPOSITORY }}" test "$FORGEJO_REPOSITORY" = "${{ github.REPOSITORY }}" test "$FORGEJO_REPOSITORY" = "${{ forge.REPOSITORY }}" + test "$FORGEJO_REPOSITORY" = "${{ forgejo.REPOSITORY }}" test "$FORGEJO_REPOSITORY" = "$GITHUB_REPOSITORY" - name: FORGEJO_REPOSITORY_OWNER @@ -167,6 +178,7 @@ jobs: test "$FORGEJO_REPOSITORY_OWNER" = "${{ env.FORGEJO_REPOSITORY_OWNER }}" test "$FORGEJO_REPOSITORY_OWNER" = "${{ github.REPOSITORY_OWNER }}" test "$FORGEJO_REPOSITORY_OWNER" = "${{ forge.REPOSITORY_OWNER }}" + test "$FORGEJO_REPOSITORY_OWNER" = "${{ forgejo.REPOSITORY_OWNER }}" test "$FORGEJO_REPOSITORY_OWNER" = "$GITHUB_REPOSITORY_OWNER" - name: FORGEJO_RUN_NUMBER @@ -176,6 +188,7 @@ jobs: test "$FORGEJO_RUN_NUMBER" = "${{ env.FORGEJO_RUN_NUMBER }}" test "$FORGEJO_RUN_NUMBER" = "${{ github.RUN_NUMBER }}" test "$FORGEJO_RUN_NUMBER" = "${{ forge.RUN_NUMBER }}" + test "$FORGEJO_RUN_NUMBER" = "${{ forgejo.RUN_NUMBER }}" test "$FORGEJO_RUN_NUMBER" = "$GITHUB_RUN_NUMBER" - name: FORGEJO_RUN_ID @@ -185,6 +198,7 @@ jobs: test "$FORGEJO_RUN_ID" = "${{ env.FORGEJO_RUN_ID }}" test "$FORGEJO_RUN_ID" = "${{ github.RUN_ID }}" test "$FORGEJO_RUN_ID" = "${{ forge.RUN_ID }}" + test "$FORGEJO_RUN_ID" = "${{ forgejo.RUN_ID }}" test "$FORGEJO_RUN_ID" = "$GITHUB_RUN_ID" - name: FORGEJO_SERVER_URL @@ -195,6 +209,7 @@ jobs: test "$FORGEJO_SERVER_URL" = "${{ env.FORGEJO_SERVER_URL }}" test "$FORGEJO_SERVER_URL" = "${{ github.SERVER_URL }}" test "$FORGEJO_SERVER_URL" = "${{ forge.SERVER_URL }}" + test "$FORGEJO_SERVER_URL" = "${{ forgejo.SERVER_URL }}" test "$FORGEJO_SERVER_URL" = "$GITHUB_SERVER_URL" - name: FORGEJO_SHA @@ -204,6 +219,7 @@ jobs: test "$FORGEJO_SHA" = "${{ env.FORGEJO_SHA }}" test "$FORGEJO_SHA" = "${{ github.SHA }}" test "$FORGEJO_SHA" = "${{ forge.SHA }}" + test "$FORGEJO_SHA" = "${{ forgejo.SHA }}" test "$FORGEJO_SHA" = "$GITHUB_SHA" - name: FORGEJO_STEP_SUMMARY @@ -221,6 +237,7 @@ jobs: test "$FORGEJO_TOKEN" = "${{ env.FORGEJO_TOKEN }}" test "$FORGEJO_TOKEN" = "${{ github.TOKEN }}" test "$FORGEJO_TOKEN" = "${{ forge.TOKEN }}" + test "$FORGEJO_TOKEN" = "${{ forgejo.TOKEN }}" test "$FORGEJO_TOKEN" = "$GITHUB_TOKEN" - name: FORGEJO_WORKSPACE @@ -230,6 +247,7 @@ jobs: test "$FORGEJO_WORKSPACE" = "${{ env.FORGEJO_WORKSPACE }}" test "$FORGEJO_WORKSPACE" = "${{ github.WORKSPACE }}" test "$FORGEJO_WORKSPACE" = "${{ forge.WORKSPACE }}" + test "$FORGEJO_WORKSPACE" = "${{ forgejo.WORKSPACE }}" test "$FORGEJO_WORKSPACE" = "$GITHUB_WORKSPACE" - name: RUNNER_ARCH diff --git a/actions/example-context/action-for-context/action.yml b/actions/example-context/action-for-context/action.yml index 301d7280..e675d6ca 100644 --- a/actions/example-context/action-for-context/action.yml +++ b/actions/example-context/action-for-context/action.yml @@ -13,6 +13,7 @@ runs: test "$FORGEJO_ACTION_REPOSITORY" = "${{ env.FORGEJO_ACTION_REPOSITORY }}" test "$FORGEJO_ACTION_REPOSITORY" = "${{ github.ACTION_REPOSITORY }}" test "$FORGEJO_ACTION_REPOSITORY" = "${{ forge.ACTION_REPOSITORY }}" + test "$FORGEJO_ACTION_REPOSITORY" = "${{ forgejo.ACTION_REPOSITORY }}" test "$FORGEJO_ACTION_REPOSITORY" = "$GITHUB_ACTION_REPOSITORY" touch /srv/example/example-context/FORGEJO_ACTION_REPOSITORY @@ -26,5 +27,6 @@ runs: [[ "$FORGEJO_ACTION_PATH" =~ action-for-context@main$ ]] || [[ "$FORGEJO_ACTION_PATH" =~ /[0-9a-f]{2}/[0-9a-f]{62}$ ]] test "$FORGEJO_ACTION_PATH" = "${{ github.ACTION_PATH }}" test "$FORGEJO_ACTION_PATH" = "${{ forge.ACTION_PATH }}" + test "$FORGEJO_ACTION_PATH" = "${{ forgejo.ACTION_PATH }}" test "$FORGEJO_ACTION_PATH" = "$GITHUB_ACTION_PATH" touch /srv/example/example-context/FORGEJO_ACTION_PATH diff --git a/actions/example-docker-action/.forgejo/workflows/test.yml b/actions/example-docker-action/.forgejo/workflows/test.yml index 4f70fff4..d7ff2b98 100644 --- a/actions/example-docker-action/.forgejo/workflows/test.yml +++ b/actions/example-docker-action/.forgejo/workflows/test.yml @@ -9,11 +9,11 @@ jobs: # - uses: https://code.forgejo.org/forgejo/test-setup-forgejo-docker@main with: - args: ${{ forge.workspace }}/SOMEFILE + args: ${{ forgejo.workspace }}/SOMEFILE # # ... which then also exists in the job workspace # because both docker containers are automatically # sharing the volume that contains it. # - run: | - test -f ${{ forge.workspace }}/SOMEFILE + test -f ${{ forgejo.workspace }}/SOMEFILE diff --git a/actions/example-force-rebuild/.forgejo/workflows/test.yml b/actions/example-force-rebuild/.forgejo/workflows/test.yml index ee6a9bb4..d6f8b3e9 100644 --- a/actions/example-force-rebuild/.forgejo/workflows/test.yml +++ b/actions/example-force-rebuild/.forgejo/workflows/test.yml @@ -6,6 +6,6 @@ jobs: steps: - uses: https://code.forgejo.org/forgejo/test-setup-forgejo-docker@main with: - args: ${{ forge.workspace }}/SOMEFILE + args: ${{ forgejo.workspace }}/SOMEFILE - run: | - test -f ${{ forge.workspace }}/SOMEFILE + test -f ${{ forgejo.workspace }}/SOMEFILE diff --git a/actions/example-pull-request/.forgejo/workflows/test.yml b/actions/example-pull-request/.forgejo/workflows/test.yml index 320d0a86..f906e12f 100644 --- a/actions/example-pull-request/.forgejo/workflows/test.yml +++ b/actions/example-pull-request/.forgejo/workflows/test.yml @@ -18,7 +18,7 @@ jobs: run: | set -x test $FORGEJO_TOKEN = ${{ env.FORGEJO_TOKEN }} - test $FORGEJO_TOKEN = ${{ forge.token }} + test $FORGEJO_TOKEN = ${{ forgejo.token }} export DEBIAN_FRONTEND=noninteractive ; apt-get -qq update ; apt-get install -y -qq curl git >& /dev/null curl -sS -o /usr/local/bin/forgejo-curl.sh https://code.forgejo.org/forgejo/forgejo-curl/raw/branch/main/forgejo-curl.sh && chmod +x /usr/local/bin/forgejo-curl.sh forgejo-curl.sh --token "$FORGEJO_TOKEN" login $FORGEJO_SERVER_URL @@ -27,7 +27,7 @@ jobs: - name: determine if the PR is from a fork id: forked run: | - if test ${{ forge.event.pull_request.base.repo.full_name }} = ${{ forge.event.pull_request.head.repo.full_name }} ; then + if test ${{ forgejo.event.pull_request.base.repo.full_name }} = ${{ forge.event.pull_request.head.repo.full_name }} ; then echo value=false >> $FORGEJO_OUTPUT else echo value=true >> $FORGEJO_OUTPUT @@ -95,7 +95,7 @@ jobs: # # create an issue # - base_repo=${{ forge.event.pull_request.base.repo.full_name }} + base_repo=${{ forgejo.event.pull_request.base.repo.full_name }} forgejo-curl.sh api_json --data-raw '{"title":"ISSUE"}' $FORGEJO_SERVER_URL/api/v1/repos/$base_repo/issues url=$(echo $FORGEJO_SERVER_URL | sed -e "s|://|://$FORGEJO_TOKEN@|") git clone $url/$base_repo base @@ -133,7 +133,7 @@ jobs: - name: save event run: | - d=/srv/example/pull-request/contexts/${{ forge.event.pull_request.head.repo.owner.username }}/$FORGEJO_EVENT_NAME + d=/srv/example/pull-request/contexts/${{ forgejo.event.pull_request.head.repo.owner.username }}/$FORGEJO_EVENT_NAME mkdir -p $d cat > $d/github <<'EOF' ${{ toJSON(github) }} From 069ca6777eced4109d73a80e6c68313841322e08 Mon Sep 17 00:00:00 2001 From: Earl Warren Date: Mon, 1 Dec 2025 14:00:07 +0000 Subject: [PATCH 46/86] actions: cache-pull-request: pull request and cache isolation (#1062) Reviewed-on: https://code.forgejo.org/forgejo/end-to-end/pulls/1062 Reviewed-by: Michael Kriese Reviewed-by: Mathieu Fenniak Co-authored-by: Earl Warren Co-committed-by: Earl Warren --- actions/actions.sh | 2 +- .../.forgejo/workflows/test.yml | 94 +++++++++++++++++++ .../assert-contexts-closed.sh | 9 ++ .../assert-contexts-opened.sh | 9 ++ actions/example-cache-pull-request/run.sh | 78 +++++++++++++++ .../runner-config.yaml | 30 ++++++ actions/example-cache-pull-request/setup.sh | 2 + .../example-cache-pull-request/teardown.sh | 1 + 8 files changed, 224 insertions(+), 1 deletion(-) create mode 100644 actions/example-cache-pull-request/.forgejo/workflows/test.yml create mode 100755 actions/example-cache-pull-request/assert-contexts-closed.sh create mode 100755 actions/example-cache-pull-request/assert-contexts-opened.sh create mode 100755 actions/example-cache-pull-request/run.sh create mode 100644 actions/example-cache-pull-request/runner-config.yaml create mode 100755 actions/example-cache-pull-request/setup.sh create mode 100755 actions/example-cache-pull-request/teardown.sh diff --git a/actions/actions.sh b/actions/actions.sh index 04629063..ceb8c04c 100755 --- a/actions/actions.sh +++ b/actions/actions.sh @@ -143,7 +143,7 @@ function test_actions() { done fi - for example in echo matrix needs workflow-call lxc config-options cache checkout service container expression local-action docker-action if if-fail push tag push-cancel artifacts pull-request context; do + for example in echo matrix needs workflow-call lxc config-options cache cache-pull-request checkout service container expression local-action docker-action if if-fail push tag push-cancel artifacts pull-request context; do run actions_verify_example $example done diff --git a/actions/example-cache-pull-request/.forgejo/workflows/test.yml b/actions/example-cache-pull-request/.forgejo/workflows/test.yml new file mode 100644 index 00000000..9c4e7230 --- /dev/null +++ b/actions/example-cache-pull-request/.forgejo/workflows/test.yml @@ -0,0 +1,94 @@ +on: + pull_request: + types: + - opened + - closed + +jobs: + save-cache: + runs-on: docker + container: + image: code.forgejo.org/oci/node:20-bookworm + steps: + - name: cache restore + id: cachestep1 + uses: https://data.forgejo.org/actions/cache/restore@v4 + with: + path: | + /usr/local/bin/something + key: cachekey-${{ forge.event.pull_request.head.repo.full_name }} + + - name: cache hit + run: | + set -x + test "${{ steps.cachestep1.outputs.cache-hit }}" != true + + - name: create something + run: echo SOMETHING > /usr/local/bin/something + + - name: cache save + uses: https://data.forgejo.org/actions/cache/save@v4 + with: + path: | + /usr/local/bin/something + key: ${{ steps.cachestep1.outputs.cache-primary-key }} + + restore-cache: + runs-on: docker + needs: [save-cache] + container: + image: code.forgejo.org/oci/node:20-bookworm + steps: + - name: cache restore + id: cachestep2 + uses: https://data.forgejo.org/actions/cache/restore@v4 + with: + path: | + /usr/local/bin/something + key: cachekey-${{ forge.event.pull_request.head.repo.full_name }} + + - name: verify something + run: | + set -x + test SOMETHING = $(cat /usr/local/bin/something) + + - name: cache hit + run: | + set -x + test "${{ steps.cachestep2.outputs.cache-hit }}" = true + + test: + runs-on: docker + needs: [restore-cache] + container: + image: code.forgejo.org/oci/node:20-bookworm + options: "--volume /srv/example:/srv/example" + + steps: + - name: setup + shell: bash + run: | + set -x + test $FORGEJO_TOKEN = ${{ env.FORGEJO_TOKEN }} + test $FORGEJO_TOKEN = ${{ forge.token }} + export DEBIAN_FRONTEND=noninteractive ; apt-get -qq update ; apt-get install -y -qq curl git >& /dev/null + curl -sS -o /usr/local/bin/forgejo-curl.sh https://code.forgejo.org/forgejo/forgejo-curl/raw/branch/main/forgejo-curl.sh && chmod +x /usr/local/bin/forgejo-curl.sh + forgejo-curl.sh --token "$FORGEJO_TOKEN" login $FORGEJO_SERVER_URL + forgejo-curl.sh api_json $FORGEJO_SERVER_URL/api/v1/user + + - name: determine if the PR is from a fork + id: forked + run: | + if test ${{ forge.event.pull_request.base.repo.full_name }} = ${{ forge.event.pull_request.head.repo.full_name }} ; then + echo value=false >> $FORGEJO_OUTPUT + else + echo value=true >> $FORGEJO_OUTPUT + fi + + - name: save event + run: | + d=/srv/example/cache-pull-request/contexts/${{ forgejo.event.pull_request.head.repo.owner.username }}/$FORGEJO_EVENT_NAME + mkdir -p $d + cat > $d/forgejo-${{ forgejo.event.action }} <<'EOF' + ${{ toJSON(forgejo) }} + EOF diff --git a/actions/example-cache-pull-request/assert-contexts-closed.sh b/actions/example-cache-pull-request/assert-contexts-closed.sh new file mode 100755 index 00000000..4c0f8e27 --- /dev/null +++ b/actions/example-cache-pull-request/assert-contexts-closed.sh @@ -0,0 +1,9 @@ +#!/bin/bash + +set -ex + +c=$d/contexts + +for user in cache-fork-org root; do + test -f $c/$user/pull_request/forgejo-closed +done diff --git a/actions/example-cache-pull-request/assert-contexts-opened.sh b/actions/example-cache-pull-request/assert-contexts-opened.sh new file mode 100755 index 00000000..73fcccda --- /dev/null +++ b/actions/example-cache-pull-request/assert-contexts-opened.sh @@ -0,0 +1,9 @@ +#!/bin/bash + +set -ex + +c=$d/contexts + +for user in cache-fork-org root; do + test -f $c/$user/pull_request/forgejo-opened +done diff --git a/actions/example-cache-pull-request/run.sh b/actions/example-cache-pull-request/run.sh new file mode 100755 index 00000000..544b652a --- /dev/null +++ b/actions/example-cache-pull-request/run.sh @@ -0,0 +1,78 @@ +TMPDIR=$(mktemp -d) + +trap "rm -fr $TMPDIR" EXIT + +api=$url/api/v1 +export d=/srv/example/cache-pull-request + +function main() { + mkdir -p $d + + # + # open a pull request + # - from the same repository + # - from a forked repository + # + forgejo-test-helper.sh push_workflow actions/example-$example $url root example-$example setup-forgejo $token + + forgejo-curl.sh api_json --data-raw '{"username":"cache-fork-org"}' $api/orgs + forgejo-curl.sh api_json --data-raw '{"organization":"cache-fork-org"}' $api/repos/root/example-cache-pull-request/forks + + ( + cd $d + git clone $url/cache-fork-org/example-cache-pull-request fork + cd fork + git config user.email root@example.com + git config user.name username + touch file-unique-to-the-pr-branch + git add . + git commit -m 'fork change' + git push + ) + + forgejo.sh retry forgejo-curl.sh api_json --data-raw '{"title":"PR from fork","base":"main","head":"cache-fork-org:main"}' $api/repos/root/example-cache-pull-request/pulls + + ( + cd $d + git clone $url/root/example-cache-pull-request + cd example-cache-pull-request + git checkout -b other + git config user.email root@example.com + git config user.name username + touch file-unique-to-the-forked-pr + git add . + git commit -m 'other change' + git push --force -u origin other + ) + + forgejo.sh retry forgejo-curl.sh api_json --data-raw '{"title":"PR same repo","base":"main","head":"other"}' $api/repos/root/example-cache-pull-request/pulls + + export RETRY_DELAYS="10 20 60 60 60 60 60" + + # + # wait for the opened event to succeed using the cache on all pull requests + # + if ! forgejo.sh retry $EXAMPLE_DIR/assert-contexts-opened.sh; then + find $d + sed -e 's/^/[RUNNER LOGS]/' <$FORGEJO_RUNNER_LOGS + return 1 + fi + + # + # merge all pull requests + # + forgejo-curl.sh api_json $api/repos/root/example-cache-pull-request/pulls | jq -r '.[] | .number' | while read pr; do + forgejo-curl.sh api_json --data-raw '{"Do":"merge"}' $api/repos/root/example-cache-pull-request/pulls/$pr/merge + done + + # + # wait for the closed event to succeed using the cache on all pull requests + # + if ! forgejo.sh retry $EXAMPLE_DIR/assert-contexts-closed.sh; then + find $d + sed -e 's/^/[RUNNER LOGS]/' <$FORGEJO_RUNNER_LOGS + return 1 + fi +} + +main diff --git a/actions/example-cache-pull-request/runner-config.yaml b/actions/example-cache-pull-request/runner-config.yaml new file mode 100644 index 00000000..11818cc5 --- /dev/null +++ b/actions/example-cache-pull-request/runner-config.yaml @@ -0,0 +1,30 @@ + +log: + level: debug + +runner: + file: .runner + capacity: 1 + env_file: .env + timeout: 3h + insecure: false + fetch_timeout: 5s + fetch_interval: 2s + labels: ["docker:docker://code.forgejo.org/oci/node:20-bookworm"] + +cache: + enabled: true + dir: "/srv/example/cache" + host: "" + port: 0 + +container: + network: "bridge" + privileged: false + options: + workdir_parent: + valid_volumes: ["/srv/example"] + docker_host: "" + +host: + workdir_parent: diff --git a/actions/example-cache-pull-request/setup.sh b/actions/example-cache-pull-request/setup.sh new file mode 100755 index 00000000..0fb6d859 --- /dev/null +++ b/actions/example-cache-pull-request/setup.sh @@ -0,0 +1,2 @@ +mkdir -p /srv/example/cache-pull-request +FORGEJO_RUNNER_CONFIG=$EXAMPLE_DIR/runner-config.yaml forgejo-runner.sh reload diff --git a/actions/example-cache-pull-request/teardown.sh b/actions/example-cache-pull-request/teardown.sh new file mode 100755 index 00000000..b410c513 --- /dev/null +++ b/actions/example-cache-pull-request/teardown.sh @@ -0,0 +1 @@ +forgejo-runner.sh reload From 74b8bebbe8c76471c6c22ca7bf94a20896014bdf Mon Sep 17 00:00:00 2001 From: Earl Warren Date: Mon, 1 Dec 2025 15:25:21 +0000 Subject: [PATCH 47/86] actions: parallel LXC jobs (#1149) This is not guaranteed to fail if parallel jobs is broken, but it is likely to. That could create transient errors detecting race conditions similar to https://code.forgejo.org/forgejo/lxc-helpers/issues/50. Reviewed-on: https://code.forgejo.org/forgejo/end-to-end/pulls/1149 Reviewed-by: Mathieu Fenniak Co-authored-by: Earl Warren Co-committed-by: Earl Warren --- actions/example-lxc/.forgejo/workflows/test.yml | 10 +++++++++- actions/example-lxc/runner-config.yaml | 2 +- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/actions/example-lxc/.forgejo/workflows/test.yml b/actions/example-lxc/.forgejo/workflows/test.yml index 5e466e72..e7aa3fd9 100644 --- a/actions/example-lxc/.forgejo/workflows/test.yml +++ b/actions/example-lxc/.forgejo/workflows/test.yml @@ -1,8 +1,16 @@ on: [push] jobs: - build: + job1: runs-on: lxc steps: - uses: https://data.forgejo.org/actions/checkout@v4 - run: systemctl --no-pager list-units + job2: + runs-on: lxc + steps: + - run: echo OK2 + job3: + runs-on: lxc + steps: + - run: echo OK3 diff --git a/actions/example-lxc/runner-config.yaml b/actions/example-lxc/runner-config.yaml index 6698ed20..617b3920 100644 --- a/actions/example-lxc/runner-config.yaml +++ b/actions/example-lxc/runner-config.yaml @@ -11,7 +11,7 @@ runner: insecure: false fetch_timeout: 5s fetch_interval: 2s - labels: ["lxc:lxc://debian:bookworm:docker"] + labels: ["lxc:lxc://debian:bookworm"] cache: enabled: false From ec2d8e96b75e0fd9d798aff10b2e5532c0c4d1ab Mon Sep 17 00:00:00 2001 From: Renovate Bot Date: Mon, 1 Dec 2025 15:41:41 +0000 Subject: [PATCH 48/86] Replace Node.js with data.forgejo.org/oci/node (#1239) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [code.forgejo.org/oci/node](https://hub.docker.com/_/node) ([source](https://github.com/nodejs/docker-node)) → [data.forgejo.org/oci/node](https://hub.docker.com/_/node) | container | replacement | `22-bookworm` -> `22-bookworm` | | [code.forgejo.org/oci/node](https://hub.docker.com/_/node) ([source](https://github.com/nodejs/docker-node)) → [data.forgejo.org/oci/node](https://hub.docker.com/_/node) | container | replacement | `20-bookworm` -> `20-bookworm` | | [code.forgejo.org/oci/node](https://hub.docker.com/_/node) ([source](https://github.com/nodejs/docker-node)) → [data.forgejo.org/oci/node](https://hub.docker.com/_/node) | final | replacement | `20-bookworm` -> `20-bookworm` | This is a special PR that replaces `code.forgejo.org/oci/node` with the community suggested minimal stable replacement version. --- ### Configuration 📅 **Schedule**: Branch creation - "" (UTC), Automerge - Between 12:00 AM and 03:59 AM ( * 0-3 * * * ) (UTC). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about these updates again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Renovate Bot](https://github.com/renovatebot/renovate). Reviewed-on: https://code.forgejo.org/forgejo/end-to-end/pulls/1239 Reviewed-by: earl-warren Co-authored-by: Renovate Bot Co-committed-by: Renovate Bot --- .forgejo/workflows/end-to-end.yml | 2 +- Dockerfile | 2 +- actions/example-automerge/.forgejo/workflows/test.yml | 2 +- .../example-cache-proxy/getter/.forgejo/workflows/get.yml | 2 +- .../example-cache-proxy/storer/.forgejo/workflows/store.yml | 2 +- .../example-cache-pull-request/.forgejo/workflows/test.yml | 6 +++--- actions/example-cache/.forgejo/workflows/test.yml | 4 ++-- actions/example-context/.forgejo/workflows/test.yml | 2 +- actions/example-pull-request/.forgejo/workflows/test.yml | 2 +- actions/example-push/.forgejo/workflows/test.yml | 2 +- actions/example-shell/.forgejo/workflows/test.yml | 2 +- actions/example-tag/.forgejo/workflows/test.yml | 2 +- actions/example-with-docker-tcp/.forgejo/workflows/test.yml | 2 +- .../example-workflow-call/.forgejo/workflows/reusable.yml | 2 +- actions/example-workflow-call/.forgejo/workflows/test.yml | 4 ++-- 15 files changed, 19 insertions(+), 19 deletions(-) diff --git a/.forgejo/workflows/end-to-end.yml b/.forgejo/workflows/end-to-end.yml index a4fe2d46..9cc24682 100644 --- a/.forgejo/workflows/end-to-end.yml +++ b/.forgejo/workflows/end-to-end.yml @@ -15,7 +15,7 @@ jobs: build: runs-on: docker container: - image: 'code.forgejo.org/oci/node:20-bookworm' + image: 'data.forgejo.org/oci/node:20-bookworm' outputs: built: "${{ steps.build.outputs.built }}" steps: diff --git a/Dockerfile b/Dockerfile index 7cf8242e..bfd7ed57 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,4 +1,4 @@ -FROM code.forgejo.org/oci/node:20-bookworm +FROM data.forgejo.org/oci/node:20-bookworm ENV PATH=$PATH:/setup-forgejo ENV _CONTAINERS_USERNS_CONFIGURED="" diff --git a/actions/example-automerge/.forgejo/workflows/test.yml b/actions/example-automerge/.forgejo/workflows/test.yml index 3ce5da04..7bb4ce29 100644 --- a/actions/example-automerge/.forgejo/workflows/test.yml +++ b/actions/example-automerge/.forgejo/workflows/test.yml @@ -5,7 +5,7 @@ jobs: test: runs-on: docker container: - image: code.forgejo.org/oci/node:20-bookworm + image: data.forgejo.org/oci/node:20-bookworm options: "--volume /srv/example:/srv/example" steps: diff --git a/actions/example-cache-proxy/getter/.forgejo/workflows/get.yml b/actions/example-cache-proxy/getter/.forgejo/workflows/get.yml index ffaf9e9d..5dc434dd 100644 --- a/actions/example-cache-proxy/getter/.forgejo/workflows/get.yml +++ b/actions/example-cache-proxy/getter/.forgejo/workflows/get.yml @@ -4,7 +4,7 @@ jobs: build: runs-on: docker container: - image: code.forgejo.org/oci/node:20-bookworm + image: data.forgejo.org/oci/node:20-bookworm steps: - name: cache restore id: cachestep diff --git a/actions/example-cache-proxy/storer/.forgejo/workflows/store.yml b/actions/example-cache-proxy/storer/.forgejo/workflows/store.yml index f8d42047..db9b101a 100644 --- a/actions/example-cache-proxy/storer/.forgejo/workflows/store.yml +++ b/actions/example-cache-proxy/storer/.forgejo/workflows/store.yml @@ -4,7 +4,7 @@ jobs: build: runs-on: docker container: - image: code.forgejo.org/oci/node:20-bookworm + image: data.forgejo.org/oci/node:20-bookworm steps: - name: create something run: echo SOMETHING > /usr/local/bin/something diff --git a/actions/example-cache-pull-request/.forgejo/workflows/test.yml b/actions/example-cache-pull-request/.forgejo/workflows/test.yml index 9c4e7230..aad6b08b 100644 --- a/actions/example-cache-pull-request/.forgejo/workflows/test.yml +++ b/actions/example-cache-pull-request/.forgejo/workflows/test.yml @@ -8,7 +8,7 @@ jobs: save-cache: runs-on: docker container: - image: code.forgejo.org/oci/node:20-bookworm + image: data.forgejo.org/oci/node:20-bookworm steps: - name: cache restore id: cachestep1 @@ -37,7 +37,7 @@ jobs: runs-on: docker needs: [save-cache] container: - image: code.forgejo.org/oci/node:20-bookworm + image: data.forgejo.org/oci/node:20-bookworm steps: - name: cache restore id: cachestep2 @@ -61,7 +61,7 @@ jobs: runs-on: docker needs: [restore-cache] container: - image: code.forgejo.org/oci/node:20-bookworm + image: data.forgejo.org/oci/node:20-bookworm options: "--volume /srv/example:/srv/example" steps: diff --git a/actions/example-cache/.forgejo/workflows/test.yml b/actions/example-cache/.forgejo/workflows/test.yml index a431d5f6..7acc5c59 100644 --- a/actions/example-cache/.forgejo/workflows/test.yml +++ b/actions/example-cache/.forgejo/workflows/test.yml @@ -4,7 +4,7 @@ jobs: save-cache: runs-on: docker container: - image: code.forgejo.org/oci/node:20-bookworm + image: data.forgejo.org/oci/node:20-bookworm steps: - name: cache restore id: cachestep1 @@ -33,7 +33,7 @@ jobs: runs-on: docker needs: [save-cache] container: - image: code.forgejo.org/oci/node:20-bookworm + image: data.forgejo.org/oci/node:20-bookworm steps: - name: cache restore id: cachestep2 diff --git a/actions/example-context/.forgejo/workflows/test.yml b/actions/example-context/.forgejo/workflows/test.yml index 6a5e6f25..07f80fa9 100644 --- a/actions/example-context/.forgejo/workflows/test.yml +++ b/actions/example-context/.forgejo/workflows/test.yml @@ -4,7 +4,7 @@ jobs: test: runs-on: docker container: - image: code.forgejo.org/oci/node:20-bookworm + image: data.forgejo.org/oci/node:20-bookworm volumes: - /srv/example:/srv/example steps: diff --git a/actions/example-pull-request/.forgejo/workflows/test.yml b/actions/example-pull-request/.forgejo/workflows/test.yml index f906e12f..34a915a0 100644 --- a/actions/example-pull-request/.forgejo/workflows/test.yml +++ b/actions/example-pull-request/.forgejo/workflows/test.yml @@ -9,7 +9,7 @@ jobs: test: runs-on: docker container: - image: code.forgejo.org/oci/node:20-bookworm + image: data.forgejo.org/oci/node:20-bookworm options: "--volume /srv/example:/srv/example" steps: diff --git a/actions/example-push/.forgejo/workflows/test.yml b/actions/example-push/.forgejo/workflows/test.yml index 6075b1a2..ebf53d1b 100644 --- a/actions/example-push/.forgejo/workflows/test.yml +++ b/actions/example-push/.forgejo/workflows/test.yml @@ -9,7 +9,7 @@ jobs: test: runs-on: docker container: - image: code.forgejo.org/oci/node:20-bookworm + image: data.forgejo.org/oci/node:20-bookworm volumes: - /srv/example:/srv/example steps: diff --git a/actions/example-shell/.forgejo/workflows/test.yml b/actions/example-shell/.forgejo/workflows/test.yml index 67c9f989..cede5140 100644 --- a/actions/example-shell/.forgejo/workflows/test.yml +++ b/actions/example-shell/.forgejo/workflows/test.yml @@ -58,7 +58,7 @@ jobs: needs: [python] runs-on: docker container: - image: code.forgejo.org/oci/node:22-bookworm + image: data.forgejo.org/oci/node:22-bookworm steps: - name: default is bash run: | diff --git a/actions/example-tag/.forgejo/workflows/test.yml b/actions/example-tag/.forgejo/workflows/test.yml index ddc673e0..1a2e4b91 100644 --- a/actions/example-tag/.forgejo/workflows/test.yml +++ b/actions/example-tag/.forgejo/workflows/test.yml @@ -7,7 +7,7 @@ jobs: test: runs-on: docker container: - image: code.forgejo.org/oci/node:20-bookworm + image: data.forgejo.org/oci/node:20-bookworm volumes: - /srv/example:/srv/example steps: diff --git a/actions/example-with-docker-tcp/.forgejo/workflows/test.yml b/actions/example-with-docker-tcp/.forgejo/workflows/test.yml index c33c2e7a..c4388ae8 100644 --- a/actions/example-with-docker-tcp/.forgejo/workflows/test.yml +++ b/actions/example-with-docker-tcp/.forgejo/workflows/test.yml @@ -4,7 +4,7 @@ jobs: build: runs-on: docker container: - image: code.forgejo.org/oci/node:20-bookworm + image: data.forgejo.org/oci/node:20-bookworm steps: - run: | ! test -e /var/run/docker.sock diff --git a/actions/example-workflow-call/.forgejo/workflows/reusable.yml b/actions/example-workflow-call/.forgejo/workflows/reusable.yml index aa6d029e..6181aff6 100644 --- a/actions/example-workflow-call/.forgejo/workflows/reusable.yml +++ b/actions/example-workflow-call/.forgejo/workflows/reusable.yml @@ -12,7 +12,7 @@ jobs: callee: runs-on: docker container: - image: code.forgejo.org/oci/node:22-bookworm + image: data.forgejo.org/oci/node:22-bookworm volumes: - /srv/example:/srv/example outputs: diff --git a/actions/example-workflow-call/.forgejo/workflows/test.yml b/actions/example-workflow-call/.forgejo/workflows/test.yml index 6185f8f7..fef61667 100644 --- a/actions/example-workflow-call/.forgejo/workflows/test.yml +++ b/actions/example-workflow-call/.forgejo/workflows/test.yml @@ -5,7 +5,7 @@ jobs: caller: runs-on: docker container: - image: code.forgejo.org/oci/node:22-bookworm + image: data.forgejo.org/oci/node:22-bookworm uses: ./.forgejo/workflows/reusable.yml with: parameter1: value1 @@ -16,7 +16,7 @@ jobs: needs: [caller] runs-on: docker container: - image: code.forgejo.org/oci/node:22-bookworm + image: data.forgejo.org/oci/node:22-bookworm steps: - run: | set -x From 4622f0fe78b0b094e44687a5f215db6ca64b58b2 Mon Sep 17 00:00:00 2001 From: Mathieu Fenniak Date: Mon, 1 Dec 2025 18:59:50 +0000 Subject: [PATCH 49/86] test: add Actions dynamic matrix end-to-end test (#1261) Reviewed-on: https://code.forgejo.org/forgejo/end-to-end/pulls/1261 Reviewed-by: earl-warren Co-authored-by: Mathieu Fenniak Co-committed-by: Mathieu Fenniak --- actions/actions.sh | 4 ++ .../.forgejo/workflows/test.yml | 49 +++++++++++++++++++ actions/example-matrix-dynamic/run.sh | 10 ++++ 3 files changed, 63 insertions(+) create mode 100644 actions/example-matrix-dynamic/.forgejo/workflows/test.yml create mode 100644 actions/example-matrix-dynamic/run.sh diff --git a/actions/actions.sh b/actions/actions.sh index ceb8c04c..5ddffd1f 100755 --- a/actions/actions.sh +++ b/actions/actions.sh @@ -176,5 +176,9 @@ function test_actions() { if dpkg --compare-versions $version ge 9.0; then run actions_verify_example schedule-noncancel fi + + if dpkg --compare-versions $version ge 14.0; then + run actions_verify_example matrix-dynamic + fi done } diff --git a/actions/example-matrix-dynamic/.forgejo/workflows/test.yml b/actions/example-matrix-dynamic/.forgejo/workflows/test.yml new file mode 100644 index 00000000..170a009b --- /dev/null +++ b/actions/example-matrix-dynamic/.forgejo/workflows/test.yml @@ -0,0 +1,49 @@ +on: [push] +jobs: + define-matrix: + runs-on: docker + outputs: + scalar-value: ${{ steps.define.outputs.scalar }} + array-value: ${{ steps.define.outputs.array }} + matrix-value: ${{ steps.define.outputs.matrix }} + steps: + - id: define + run: | + echo 'scalar=scalar value' >> "$FORGEJO_OUTPUT" + echo 'array=["value 1", "value 2"]' >> "$FORGEJO_OUTPUT" + echo 'matrix={"dimension-1": ["d1 v1", "d1 v2"], "dimension-2": ["d2 v1", "d2 v2"]}' >> "$GITHUB_OUTPUT" + + scalar-job: + runs-on: docker + needs: define-matrix + strategy: + matrix: + scalar: + - "${{ needs.define-matrix.outputs.scalar-value }}" + - hard-coded value + steps: + - run: | + set -x + [ "${{ matrix.scalar }}" = "scalar value" ] || [ "${{ matrix.scalar }}" = "hard-coded value" ] || exit 1 + + array-job: + runs-on: docker + needs: define-matrix + strategy: + matrix: + array: ${{ fromJSON(needs.define-matrix.outputs.array-value) }} + steps: + - run: | + set -x + [ "${{ matrix.array }}" = "value 1" ] || [ "${{ matrix.array }}" = "value 2" ] || exit 1 + + matrix-job: + runs-on: docker + needs: define-matrix + strategy: + matrix: ${{ fromJSON(needs.define-matrix.outputs.matrix-value) }} + steps: + - run: | + set -x + [ "${{ matrix.dimension-1 }}" = "d1 v1" ] || [ "${{ matrix.dimension-1 }}" = "d1 v2" ] || exit 1 + [ "${{ matrix.dimension-2 }}" = "d2 v1" ] || [ "${{ matrix.dimension-2 }}" = "d2 v2" ] || exit 1 diff --git a/actions/example-matrix-dynamic/run.sh b/actions/example-matrix-dynamic/run.sh new file mode 100644 index 00000000..18b8fc05 --- /dev/null +++ b/actions/example-matrix-dynamic/run.sh @@ -0,0 +1,10 @@ +forgejo-test-helper.sh run_workflow actions/example-$example $url root example-$example setup-forgejo $token + +# Verify that the matrix in the job was expanded correctly by checking that +# there are 9 completed jobs, by their commit statuses being present on the +# main branch's HEAD. +api=$url/api/v1 +sha=$(forgejo-curl.sh api_json $api/repos/root/example-matrix-dynamic/branches/main | jq -r ".commit.id") +num_runs=$(forgejo-curl.sh api_json $api/repos/root/example-matrix-dynamic/commits/$sha/status | jq ".total_count") +echo "Expecting 9 commit statuses, found $num_runs commit statuses" +test $num_runs = 9 From 891e8f2d81026a138248cfb4ede8f63136cba0c6 Mon Sep 17 00:00:00 2001 From: famfo Date: Fri, 5 Dec 2025 10:40:47 +0000 Subject: [PATCH 50/86] mastodon/gotosocial e2e tests: infrastructure changes (#1273) Reviewed-on: https://code.forgejo.org/forgejo/end-to-end/pulls/1273 Reviewed-by: earl-warren Reviewed-by: Gusted Co-authored-by: famfo Co-committed-by: famfo --- .forgejo/workflows/end-to-end.yml | 8 +++++++- Dockerfile | 24 +++++++++++++++++------- end-to-end.sh | 2 +- federation/federation.sh | 18 ++++++++++++------ lib/lib.sh | 4 ++-- 5 files changed, 39 insertions(+), 17 deletions(-) diff --git a/.forgejo/workflows/end-to-end.yml b/.forgejo/workflows/end-to-end.yml index 9cc24682..27c917a6 100644 --- a/.forgejo/workflows/end-to-end.yml +++ b/.forgejo/workflows/end-to-end.yml @@ -120,7 +120,13 @@ jobs: path: | /srv/forgejo-binaries/gitlab key: gitlab - - run: | + - name: setup dbus + run: | + apt-get -q install -y -qq dbus + systemctl enable --now dbus + - name: run test_federation + run: | + chown -R forgejo:forgejo . su forgejo -c "./end-to-end.sh test_federation" - if: ${{ needs.build.outputs.built == 'yes' }} uses: ./.forgejo/upload-coverage diff --git a/Dockerfile b/Dockerfile index bfd7ed57..b49a1ed5 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,27 +1,33 @@ -FROM data.forgejo.org/oci/node:20-bookworm +FROM code.forgejo.org/oci/node:22-trixie ENV PATH=$PATH:/setup-forgejo ENV _CONTAINERS_USERNS_CONFIGURED="" -ADD https://code.forgejo.org/actions/setup-forgejo.git /setup-forgejo - RUN apt-get update && \ apt-get --assume-yes --no-install-recommends install \ + aardvark-dns \ ca-certificates \ curl \ daemon \ + fuse-overlayfs \ + gettext \ git \ jq \ + libcap2-bin \ + neovim \ + nftables \ + passt \ podman \ + podman-compose \ podman-docker \ procps \ + pup \ slirp4netns \ - sqlite3 \ sudo \ tcpdump \ uidmap \ wget && \ - adduser forgejo-tests && \ + adduser -u 1001 forgejo-tests && \ groupadd wheel && \ adduser forgejo-tests wheel && \ echo "%wheel ALL=(ALL) NOPASSWD:ALL" > /etc/sudoers && \ @@ -29,9 +35,13 @@ RUN apt-get update && \ echo "forgejo-tests:10000:9999" > /etc/subgid && \ mkdir /srv/forgejo-binaries && \ chown forgejo-tests:forgejo-tests /srv/forgejo-binaries && \ - apt-get clean + apt-get clean && \ + apt-get autoremove --purge && \ + apt-get autoclean -COPY . /e2e +COPY --chown=1001:1001 . /e2e + +RUN git clone https://code.forgejo.org/actions/setup-forgejo.git /setup-forgejo USER forgejo-tests diff --git a/end-to-end.sh b/end-to-end.sh index 3b3a702a..e57c8b1b 100755 --- a/end-to-end.sh +++ b/end-to-end.sh @@ -1,4 +1,4 @@ -#!/bin/bash +#!/usr/bin/env bash # SPDX-License-Identifier: MIT SELF_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" diff --git a/federation/federation.sh b/federation/federation.sh index 35a03f79..5dbc596d 100755 --- a/federation/federation.sh +++ b/federation/federation.sh @@ -74,15 +74,21 @@ function test_federation() { local versions="${1:-$RELEASE_NUMBERS}" for version in $versions; do + # name, minimum version + # NOTE: newline seperated, not comma :> + scenarios=( + "star 7.1" + ) - if dpkg --compare-versions $version lt 7.1; then - continue - fi + for scenario_version_str in "${scenarios[@]}"; do + IFS=' ' declare -a scenario_version="($scenario_version_str)" - federation_setup $version + if dpkg --compare-versions "$version" lt "${scenario_version[1]}"; then + continue + fi - for scenario in star; do - run federation_verify_scenario $scenario + federation_setup "$version" + run federation_verify_scenario "${scenario_version[0]}" done done } diff --git a/lib/lib.sh b/lib/lib.sh index 6ed6afbf..691acc6f 100644 --- a/lib/lib.sh +++ b/lib/lib.sh @@ -50,9 +50,9 @@ function dependencies() { $SUDO chmod +x /usr/local/bin/forgejo-curl.sh fi - if ! which make curl daemon git-lfs jq sqlite3 skopeo >/dev/null; then + if ! which make curl daemon git-lfs jq sqlite3 skopeo podman podman-compose pup >/dev/null; then $SUDO apt-get update -qq - $SUDO apt-get install -y -qq make curl daemon git-lfs jq sqlite3 skopeo + $SUDO apt-get install -y -qq make curl daemon git-lfs jq sqlite3 skopeo podman podman-compose pup fi if ! test -f /usr/local/bin/mc || ! test -f /usr/local/bin/minio; then From 8f910d71daf027df1060e970df16b7ad535c5310 Mon Sep 17 00:00:00 2001 From: famfo Date: Fri, 5 Dec 2025 10:42:14 +0000 Subject: [PATCH 51/86] mastodon/gotosocial e2e tests: documentation changes (#1277) Reviewed-on: https://code.forgejo.org/forgejo/end-to-end/pulls/1277 Reviewed-by: earl-warren Co-authored-by: famfo Co-committed-by: famfo --- README.md | 32 +++++++++++++++++++++++++++----- 1 file changed, 27 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index 1ffc60c1..33fcfdbd 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,18 @@ # Forgejo end-to-end tests +- [Forgejo end-to-end tests](#forgejo-end-to-end-tests) + - [Removing legacy tests](#removing-legacy-tests) + - [Hacking](#hacking) + - [Running from locally built binary](#running-from-locally-built-binary) + - [Forgejo](#forgejo) + - [Forgejo runner](#forgejo-runner) + - [Running from locally built container image](#running-from-locally-built-container-image) + - [Running actions tests locally](#running-actions-tests-locally) + - [Running federation tests locally](#running-federation-tests-locally) + - [Federated Mastodon Follow Test](#federated-mastodon-follow-test) + - [Running other tests locally](#running-other-tests-locally) + - [Running tests in Docker/Podman](#running-tests-in-dockerpodman) + A series of tests scenarios and assertions covering [Forgejo](https://codeberg.org/forgejo/forgejo) and the [Forgejo runner](https://code.forgejo.org/forgejo/runner). @@ -7,7 +20,7 @@ runner](https://code.forgejo.org/forgejo/runner). They are designed to run using Forgejo releases and development versions compiled from designated repositories. -# Removing legacy tests +## Removing legacy tests End-to-end tests cover the supported range of releases and when one of them is EOL, it must be removed as well as the tests that target it @@ -17,7 +30,7 @@ When a release is EOL, a branch is cut with a name following the pattern `legacy/vX.Y-vA.B`. For instance when `v8.0` is published and `v1.21` is EOL, the branch `legacy/v8.0-v1.21` is cut. -# Hacking +## Hacking docker and sudo must be installed with insecure registries allowed in /etc/docker/daemon.json for the IP that will be used for forgejo such @@ -46,12 +59,12 @@ git clone https://code.forgejo.org/forgejo/end-to-end cd end-to-end ``` -## Running from locally built binary +### Running from locally built binary Before injecting a manually built binary, make sure a simple test was run so that the directories are populated. -### Forgejo +#### Forgejo From a checkout of https://codeberg.org/forgejo/forgejo/ @@ -62,7 +75,7 @@ cp -a forgejo /srv/forgejo-binaries/forgejo-11.0 It will be used whenever the version `11.0` is specified in a test. -### Forgejo runner +#### Forgejo runner From a checkout of https://code.forgejo.org/forgejo/runner @@ -71,6 +84,12 @@ make --always-make forgejo-runner cp forgejo-runner /tmp/forgejo-end-to-end/forgejo-runner ``` +### Running from locally built container image + +```bash +docker buildx build --output=type=docker --tag codeberg.org/forgejo/forgejo:latest . +``` + ## Running actions tests locally To run and debug workflows from `actions/example-*`, from the root of @@ -103,7 +122,10 @@ the source directory, mimic what `.forgejo/workflows/end-to-end.yml` does. ./end-to-end.sh federation_setup 12.0 firefox 0.0.0.0:3001 # user root / admin1234 firefox 0.0.0.0:3002 # user root / admin1234 +firefox 0.0.0.0:3003 # user root / admin1234 ./end-to-end.sh federation_verify_scenario star +./end-to-end.sh federation_verify_scenario gotosocial +./end-to-end.sh federation_verify_scenario mastodon ./end-to-end.sh federation_teardown ``` From c1cfa1f39cf6c0828a606414a23a77794c887080 Mon Sep 17 00:00:00 2001 From: Renovate Bot Date: Fri, 5 Dec 2025 15:38:42 +0000 Subject: [PATCH 52/86] Replace Node.js with data.forgejo.org/oci/node (#1278) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [code.forgejo.org/oci/node](https://hub.docker.com/_/node) ([source](https://github.com/nodejs/docker-node)) → [data.forgejo.org/oci/node](https://hub.docker.com/_/node) | final | replacement | `22-trixie` -> `22-trixie` | This is a special PR that replaces `code.forgejo.org/oci/node` with the community suggested minimal stable replacement version. --- ### Configuration 📅 **Schedule**: Branch creation - "" (UTC), Automerge - Between 12:00 AM and 03:59 AM ( * 0-3 * * * ) (UTC). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Renovate Bot](https://github.com/renovatebot/renovate). Reviewed-on: https://code.forgejo.org/forgejo/end-to-end/pulls/1278 Reviewed-by: earl-warren Reviewed-by: Mathieu Fenniak Co-authored-by: Renovate Bot Co-committed-by: Renovate Bot --- Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index b49a1ed5..781aa497 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,4 +1,4 @@ -FROM code.forgejo.org/oci/node:22-trixie +FROM data.forgejo.org/oci/node:22-trixie ENV PATH=$PATH:/setup-forgejo ENV _CONTAINERS_USERNS_CONFIGURED="" From 1ff059023a8d2d81c03e2ec0d4d50593cf70c8bc Mon Sep 17 00:00:00 2001 From: 0ko <0ko@noreply.codeberg.org> Date: Sun, 21 Dec 2025 16:53:06 +0000 Subject: [PATCH 53/86] chore(release): v15.0 exists (#1310) Like https://code.forgejo.org/forgejo/end-to-end/pulls/710 and https://code.forgejo.org/forgejo/end-to-end/pulls/1057 (+ https://code.forgejo.org/forgejo/end-to-end/pulls/1058/files) End-to-end for latest nonLTS is usually retired earlier than EoL to save power per https://code.forgejo.org/forgejo/end-to-end/pulls/1058#issuecomment-61424. Reviewed-on: https://code.forgejo.org/forgejo/end-to-end/pulls/1310 Reviewed-by: Michael Kriese Co-authored-by: 0ko <0ko@noreply.codeberg.org> Co-committed-by: 0ko <0ko@noreply.codeberg.org> --- forgejo/sources/15.0 | 1 + lib/lib.sh | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) create mode 100644 forgejo/sources/15.0 diff --git a/forgejo/sources/15.0 b/forgejo/sources/15.0 new file mode 100644 index 00000000..595283d3 --- /dev/null +++ b/forgejo/sources/15.0 @@ -0,0 +1 @@ +https://codeberg.org/forgejo/forgejo forgejo 15.0.0 diff --git a/lib/lib.sh b/lib/lib.sh index 691acc6f..843c9b53 100644 --- a/lib/lib.sh +++ b/lib/lib.sh @@ -26,7 +26,7 @@ IP=$(hostname -I | cut -f1 -d' ') # # Forgejo releases for which a branch exists (7.0/forgejo etc.) # -RELEASE_NUMBERS="11.0 13.0 14.0" +RELEASE_NUMBERS="11.0 14.0 15.0" PREFIX=============== export DIR=/tmp/forgejo-end-to-end From 37fdd131e21e13d60fd27cb9fb6ce1b9ec402497 Mon Sep 17 00:00:00 2001 From: Renovate Bot Date: Sun, 28 Dec 2025 14:42:32 +0000 Subject: [PATCH 54/86] Update https://data.forgejo.org/actions/setup-forgejo action to v3.0.7 (#1343) Reviewed-on: https://code.forgejo.org/forgejo/end-to-end/pulls/1343 Reviewed-by: Michael Kriese Co-authored-by: Renovate Bot Co-committed-by: Renovate Bot --- .forgejo/prepare-end-to-end/action.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.forgejo/prepare-end-to-end/action.yml b/.forgejo/prepare-end-to-end/action.yml index d85eb6f6..3c1153c0 100644 --- a/.forgejo/prepare-end-to-end/action.yml +++ b/.forgejo/prepare-end-to-end/action.yml @@ -15,7 +15,7 @@ runs: /usr/local/bin/garage key: S3 - - uses: https://data.forgejo.org/actions/setup-forgejo@v3.0.6 + - uses: https://data.forgejo.org/actions/setup-forgejo@v3.0.7 with: install-only: true - run: forgejo-binary.sh ensure_user forgejo From a8a26c92961a1a84577f0d274a2d84e52aa744e8 Mon Sep 17 00:00:00 2001 From: Mathieu Fenniak Date: Sun, 28 Dec 2025 16:29:05 +0000 Subject: [PATCH 55/86] test: add reusable workflow expansion test (#1316) end-to-end test covering https://codeberg.org/forgejo/forgejo/pulls/10525. ![image](/attachments/2bca39ea-67d9-4ae6-a940-e2b5f77b11d4) Reviewed-on: https://code.forgejo.org/forgejo/end-to-end/pulls/1316 Co-authored-by: Mathieu Fenniak Co-committed-by: Mathieu Fenniak --- actions/actions.sh | 4 +++ .../.forgejo/workflows/reusable.yml | 28 +++++++++++++++++++ .../.forgejo/workflows/test.yml | 20 +++++++++++++ 3 files changed, 52 insertions(+) create mode 100644 actions/example-workflow-call-expansion/.forgejo/workflows/reusable.yml create mode 100644 actions/example-workflow-call-expansion/.forgejo/workflows/test.yml diff --git a/actions/actions.sh b/actions/actions.sh index 5ddffd1f..1dc6b14e 100755 --- a/actions/actions.sh +++ b/actions/actions.sh @@ -180,5 +180,9 @@ function test_actions() { if dpkg --compare-versions $version ge 14.0; then run actions_verify_example matrix-dynamic fi + + if dpkg --compare-versions $version ge 15.0; then + run actions_verify_example workflow-call-expansion + fi done } diff --git a/actions/example-workflow-call-expansion/.forgejo/workflows/reusable.yml b/actions/example-workflow-call-expansion/.forgejo/workflows/reusable.yml new file mode 100644 index 00000000..b5bcdde4 --- /dev/null +++ b/actions/example-workflow-call-expansion/.forgejo/workflows/reusable.yml @@ -0,0 +1,28 @@ +on: + workflow_call: + +jobs: + callee-1: + runs-on: docker + container: + image: data.forgejo.org/oci/node:22-bookworm + volumes: + - /srv/example:/srv/example + steps: + - name: indicate callee-1 hit + run: touch /srv/example/callee-1 + + callee-2: + needs: callee-1 + runs-on: docker + container: + image: data.forgejo.org/oci/node:22-bookworm + volumes: + - /srv/example:/srv/example + steps: + - name: verify callee-1 completed + run: | + set -x + test -f /srv/example/callee-1 + - name: indicate callee-2 hit + run: touch /srv/example/callee-2 diff --git a/actions/example-workflow-call-expansion/.forgejo/workflows/test.yml b/actions/example-workflow-call-expansion/.forgejo/workflows/test.yml new file mode 100644 index 00000000..484cdc29 --- /dev/null +++ b/actions/example-workflow-call-expansion/.forgejo/workflows/test.yml @@ -0,0 +1,20 @@ +on: + push: + +jobs: + caller: + uses: ./.forgejo/workflows/reusable.yml + + verify: + needs: [caller] + runs-on: docker + container: + image: data.forgejo.org/oci/node:22-bookworm + volumes: + - /srv/example:/srv/example + steps: + - name: verify callee-1 & callee-2 completed + run: | + set -x + test -f /srv/example/callee-1 + test -f /srv/example/callee-2 From cc2a2e85f7a65f2ec6771a75ce83492cfb51e839 Mon Sep 17 00:00:00 2001 From: Mathieu Fenniak Date: Mon, 29 Dec 2025 02:58:01 +0000 Subject: [PATCH 56/86] test: add reusable workflow expansion test for outputs (#1322) In the "reusable workflow expansion" case (that is, when `runs-on` is not provided), this PR adds tests for `on.workflow_call.outputs`, and expands the test case to have two layers of reusable workflows to cover quirky behaviours that were discovered during manual testing. Manual invocation successful: ![image](/attachments/0406a783-4ef6-4854-a376-421ccc86b854) Reviewed-on: https://code.forgejo.org/forgejo/end-to-end/pulls/1322 Co-authored-by: Mathieu Fenniak Co-committed-by: Mathieu Fenniak --- .../.forgejo/workflows/reusable-layer-1.yml | 49 +++++++++++++++++++ .../.forgejo/workflows/reusable-layer-2.yml | 37 ++++++++++++++ .../.forgejo/workflows/reusable.yml | 28 ----------- .../.forgejo/workflows/test.yml | 17 +++++-- 4 files changed, 99 insertions(+), 32 deletions(-) create mode 100644 actions/example-workflow-call-expansion/.forgejo/workflows/reusable-layer-1.yml create mode 100644 actions/example-workflow-call-expansion/.forgejo/workflows/reusable-layer-2.yml delete mode 100644 actions/example-workflow-call-expansion/.forgejo/workflows/reusable.yml diff --git a/actions/example-workflow-call-expansion/.forgejo/workflows/reusable-layer-1.yml b/actions/example-workflow-call-expansion/.forgejo/workflows/reusable-layer-1.yml new file mode 100644 index 00000000..bc0b7dc9 --- /dev/null +++ b/actions/example-workflow-call-expansion/.forgejo/workflows/reusable-layer-1.yml @@ -0,0 +1,49 @@ +on: + workflow_call: + outputs: + output1: + value: ${{ jobs.callee-1.outputs.job-output }} + output2: + value: ${{ jobs.callee-2.outputs.job-output }} + output3: + value: ${{ jobs.layer-2.outputs.output3 }} + output4: + value: ${{ jobs.layer-2.outputs.output4 }} + +jobs: + callee-1: + runs-on: docker + outputs: + job-output: callee-1-output + container: + image: data.forgejo.org/oci/node:22-bookworm + volumes: + - /srv/example:/srv/example + steps: + - name: indicate callee-1 hit + run: touch /srv/example/callee-1 + + layer-2: + uses: ./.forgejo/workflows/reusable-layer-2.yml + + callee-2: + needs: [callee-1, layer-2] + runs-on: docker + outputs: + job-output: callee-2-output + container: + image: data.forgejo.org/oci/node:22-bookworm + volumes: + - /srv/example:/srv/example + steps: + - name: verify callee-1 completed + run: | + set -x + test -f /srv/example/callee-1 + - name: verify layer-2 completed + run: | + set -x + test -f /srv/example/callee-3 + test -f /srv/example/callee-4 + - name: indicate callee-2 hit + run: touch /srv/example/callee-2 diff --git a/actions/example-workflow-call-expansion/.forgejo/workflows/reusable-layer-2.yml b/actions/example-workflow-call-expansion/.forgejo/workflows/reusable-layer-2.yml new file mode 100644 index 00000000..1633ff7c --- /dev/null +++ b/actions/example-workflow-call-expansion/.forgejo/workflows/reusable-layer-2.yml @@ -0,0 +1,37 @@ +on: + workflow_call: + outputs: + output3: + value: ${{ jobs.callee-3.outputs.job-output }} + output4: + value: ${{ jobs.callee-4.outputs.job-output }} + +jobs: + callee-3: + runs-on: docker + outputs: + job-output: callee-3-output + container: + image: data.forgejo.org/oci/node:22-bookworm + volumes: + - /srv/example:/srv/example + steps: + - name: indicate callee-3 hit + run: touch /srv/example/callee-3 + + callee-4: + needs: callee-3 + runs-on: docker + outputs: + job-output: callee-4-output + container: + image: data.forgejo.org/oci/node:22-bookworm + volumes: + - /srv/example:/srv/example + steps: + - name: verify callee-3 completed + run: | + set -x + test -f /srv/example/callee-3 + - name: indicate callee-4 hit + run: touch /srv/example/callee-4 diff --git a/actions/example-workflow-call-expansion/.forgejo/workflows/reusable.yml b/actions/example-workflow-call-expansion/.forgejo/workflows/reusable.yml deleted file mode 100644 index b5bcdde4..00000000 --- a/actions/example-workflow-call-expansion/.forgejo/workflows/reusable.yml +++ /dev/null @@ -1,28 +0,0 @@ -on: - workflow_call: - -jobs: - callee-1: - runs-on: docker - container: - image: data.forgejo.org/oci/node:22-bookworm - volumes: - - /srv/example:/srv/example - steps: - - name: indicate callee-1 hit - run: touch /srv/example/callee-1 - - callee-2: - needs: callee-1 - runs-on: docker - container: - image: data.forgejo.org/oci/node:22-bookworm - volumes: - - /srv/example:/srv/example - steps: - - name: verify callee-1 completed - run: | - set -x - test -f /srv/example/callee-1 - - name: indicate callee-2 hit - run: touch /srv/example/callee-2 diff --git a/actions/example-workflow-call-expansion/.forgejo/workflows/test.yml b/actions/example-workflow-call-expansion/.forgejo/workflows/test.yml index 484cdc29..564475ec 100644 --- a/actions/example-workflow-call-expansion/.forgejo/workflows/test.yml +++ b/actions/example-workflow-call-expansion/.forgejo/workflows/test.yml @@ -2,19 +2,28 @@ on: push: jobs: - caller: - uses: ./.forgejo/workflows/reusable.yml + layer-1: + uses: ./.forgejo/workflows/reusable-layer-1.yml verify: - needs: [caller] + needs: [layer-1] runs-on: docker container: image: data.forgejo.org/oci/node:22-bookworm volumes: - /srv/example:/srv/example steps: - - name: verify callee-1 & callee-2 completed + - name: verify callee-[0-4] completed run: | set -x test -f /srv/example/callee-1 test -f /srv/example/callee-2 + test -f /srv/example/callee-3 + test -f /srv/example/callee-4 + - name: verify workflow outputs + run: | + set -x + test "callee-1-output" = "${{ needs.layer-1.outputs.output1 }}" + test "callee-2-output" = "${{ needs.layer-1.outputs.output2 }}" + test "callee-3-output" = "${{ needs.layer-1.outputs.output3 }}" + test "callee-4-output" = "${{ needs.layer-1.outputs.output4 }}" From 1fbbc4277c7275ebfcc1f15e6f96bc10c8c3b1e2 Mon Sep 17 00:00:00 2001 From: Mathieu Fenniak Date: Tue, 30 Dec 2025 14:49:39 +0000 Subject: [PATCH 57/86] test: add reusable workflow expansion test for inputs (#1323) Reviewed-on: https://code.forgejo.org/forgejo/end-to-end/pulls/1323 Co-authored-by: Mathieu Fenniak Co-committed-by: Mathieu Fenniak --- .../.forgejo/workflows/reusable-layer-1.yml | 11 +++++++++++ .../.forgejo/workflows/reusable-layer-2.yml | 12 ++++++++++++ .../.forgejo/workflows/test.yml | 2 ++ 3 files changed, 25 insertions(+) diff --git a/actions/example-workflow-call-expansion/.forgejo/workflows/reusable-layer-1.yml b/actions/example-workflow-call-expansion/.forgejo/workflows/reusable-layer-1.yml index bc0b7dc9..c6b165b5 100644 --- a/actions/example-workflow-call-expansion/.forgejo/workflows/reusable-layer-1.yml +++ b/actions/example-workflow-call-expansion/.forgejo/workflows/reusable-layer-1.yml @@ -1,5 +1,9 @@ on: workflow_call: + inputs: + input1: + required: true + type: string outputs: output1: value: ${{ jobs.callee-1.outputs.job-output }} @@ -20,11 +24,18 @@ jobs: volumes: - /srv/example:/srv/example steps: + - name: verify workflow inputs + run: | + set -x + test "top-level-input1" = "${{ inputs.input1 }}" - name: indicate callee-1 hit run: touch /srv/example/callee-1 layer-2: uses: ./.forgejo/workflows/reusable-layer-2.yml + with: + input1: ${{ inputs.input1 }} + input2: mid-level-input2 callee-2: needs: [callee-1, layer-2] diff --git a/actions/example-workflow-call-expansion/.forgejo/workflows/reusable-layer-2.yml b/actions/example-workflow-call-expansion/.forgejo/workflows/reusable-layer-2.yml index 1633ff7c..099c0331 100644 --- a/actions/example-workflow-call-expansion/.forgejo/workflows/reusable-layer-2.yml +++ b/actions/example-workflow-call-expansion/.forgejo/workflows/reusable-layer-2.yml @@ -1,5 +1,12 @@ on: workflow_call: + inputs: + input1: + required: true + type: string + input2: + required: true + type: string outputs: output3: value: ${{ jobs.callee-3.outputs.job-output }} @@ -16,6 +23,11 @@ jobs: volumes: - /srv/example:/srv/example steps: + - name: verify workflow inputs + run: | + set -x + test "top-level-input1" = "${{ inputs.input1 }}" + test "mid-level-input2" = "${{ inputs.input2 }}" - name: indicate callee-3 hit run: touch /srv/example/callee-3 diff --git a/actions/example-workflow-call-expansion/.forgejo/workflows/test.yml b/actions/example-workflow-call-expansion/.forgejo/workflows/test.yml index 564475ec..29e04d80 100644 --- a/actions/example-workflow-call-expansion/.forgejo/workflows/test.yml +++ b/actions/example-workflow-call-expansion/.forgejo/workflows/test.yml @@ -4,6 +4,8 @@ on: jobs: layer-1: uses: ./.forgejo/workflows/reusable-layer-1.yml + with: + input1: top-level-input1 verify: needs: [layer-1] From 0e0b1429e675b4e842fa80788d99d3112370a728 Mon Sep 17 00:00:00 2001 From: Mathieu Fenniak Date: Tue, 30 Dec 2025 20:16:02 +0000 Subject: [PATCH 58/86] test: add reusable workflow expansion test for secrets (#1351) Local test: ![image](/attachments/2357b06f-2506-4a31-ae51-a372e4eb4704) Reviewed-on: https://code.forgejo.org/forgejo/end-to-end/pulls/1351 Co-authored-by: Mathieu Fenniak Co-committed-by: Mathieu Fenniak --- .../.forgejo/workflows/reusable-layer-1.yml | 7 +++++++ .../.forgejo/workflows/reusable-layer-2.yml | 6 ++++++ .../.forgejo/workflows/test.yml | 10 ++++++++++ actions/example-workflow-call-expansion/run.sh | 12 ++++++++++++ 4 files changed, 35 insertions(+) create mode 100644 actions/example-workflow-call-expansion/run.sh diff --git a/actions/example-workflow-call-expansion/.forgejo/workflows/reusable-layer-1.yml b/actions/example-workflow-call-expansion/.forgejo/workflows/reusable-layer-1.yml index c6b165b5..1e806711 100644 --- a/actions/example-workflow-call-expansion/.forgejo/workflows/reusable-layer-1.yml +++ b/actions/example-workflow-call-expansion/.forgejo/workflows/reusable-layer-1.yml @@ -28,6 +28,12 @@ jobs: run: | set -x test "top-level-input1" = "${{ inputs.input1 }}" + - name: verify workflow secrets + run: | + set -x + test "AAAA" = "${{ secrets.secret1 }}" + test "BBBB1234" = "${{ secrets.secret2 }}" + test "" = "${{ secrets.secret3 }}" # wasn't specified to the workflow, should be absent - name: indicate callee-1 hit run: touch /srv/example/callee-1 @@ -36,6 +42,7 @@ jobs: with: input1: ${{ inputs.input1 }} input2: mid-level-input2 + secrets: inherit callee-2: needs: [callee-1, layer-2] diff --git a/actions/example-workflow-call-expansion/.forgejo/workflows/reusable-layer-2.yml b/actions/example-workflow-call-expansion/.forgejo/workflows/reusable-layer-2.yml index 099c0331..eaf37ba1 100644 --- a/actions/example-workflow-call-expansion/.forgejo/workflows/reusable-layer-2.yml +++ b/actions/example-workflow-call-expansion/.forgejo/workflows/reusable-layer-2.yml @@ -28,6 +28,12 @@ jobs: set -x test "top-level-input1" = "${{ inputs.input1 }}" test "mid-level-input2" = "${{ inputs.input2 }}" + - name: verify workflow secrets inherited + run: | + set -x + test "AAAA" = "${{ secrets.secret1 }}" + test "BBBB1234" = "${{ secrets.secret2 }}" + test "" = "${{ secrets.secret3 }}" # wasn't specified to the workflow, should be absent - name: indicate callee-3 hit run: touch /srv/example/callee-3 diff --git a/actions/example-workflow-call-expansion/.forgejo/workflows/test.yml b/actions/example-workflow-call-expansion/.forgejo/workflows/test.yml index 29e04d80..dfa29afc 100644 --- a/actions/example-workflow-call-expansion/.forgejo/workflows/test.yml +++ b/actions/example-workflow-call-expansion/.forgejo/workflows/test.yml @@ -6,6 +6,9 @@ jobs: uses: ./.forgejo/workflows/reusable-layer-1.yml with: input1: top-level-input1 + secrets: + secret1: AAAA + secret2: BBBB1234 verify: needs: [layer-1] @@ -15,6 +18,13 @@ jobs: volumes: - /srv/example:/srv/example steps: + - name: verify test config secret + run: | + set -x + # SECRET3 is set on the repo, but not passed into `reusable-layer-1.yml` so that we can test secrets don't + # leak into the workflow if they're not explicitly defined. This check verifies that the test environment has + # that secret, otherwise the test assertions that it isn't present within the workflow would be meaningless. + test "CCCC" = "${{ secrets.secret3 }}" - name: verify callee-[0-4] completed run: | set -x diff --git a/actions/example-workflow-call-expansion/run.sh b/actions/example-workflow-call-expansion/run.sh new file mode 100644 index 00000000..07ca4cb7 --- /dev/null +++ b/actions/example-workflow-call-expansion/run.sh @@ -0,0 +1,12 @@ +repo=root/example-$example +api=$url/api/v1 + +# Prepare test repo +forgejo-test-helper.sh push_workflow actions/example-$example $url root example-$example setup-forgejo $token +sha=$(forgejo-test-helper.sh branch_tip $url $repo main) + +# Install a repo secret +forgejo-curl.sh api_json -X PUT --data-raw '{"data":"CCCC"}' $api/repos/$repo/actions/secrets/SECRET3 + +# Wait for action to complete +forgejo-test-helper.sh wait_success $url root/example-$example $sha From 6e89c972c3911dd1efeac512cfbda0f87355620a Mon Sep 17 00:00:00 2001 From: Mathieu Fenniak Date: Thu, 1 Jan 2026 18:17:58 +0000 Subject: [PATCH 59/86] test: add reusable workflow expansion test for ${{ needs... }} (#1362) end-to-end tests for https://codeberg.org/forgejo/forgejo/pulls/10647 Reviewed-on: https://code.forgejo.org/forgejo/end-to-end/pulls/1362 Co-authored-by: Mathieu Fenniak Co-committed-by: Mathieu Fenniak --- .../.forgejo/workflows/reusable-layer-1.yml | 7 +++++++ .../.forgejo/workflows/reusable-layer-2.yml | 8 ++++++++ .../.forgejo/workflows/test.yml | 12 ++++++++++++ 3 files changed, 27 insertions(+) diff --git a/actions/example-workflow-call-expansion/.forgejo/workflows/reusable-layer-1.yml b/actions/example-workflow-call-expansion/.forgejo/workflows/reusable-layer-1.yml index 1e806711..649392c1 100644 --- a/actions/example-workflow-call-expansion/.forgejo/workflows/reusable-layer-1.yml +++ b/actions/example-workflow-call-expansion/.forgejo/workflows/reusable-layer-1.yml @@ -4,6 +4,9 @@ on: input1: required: true type: string + input3: + required: true + type: string outputs: output1: value: ${{ jobs.callee-1.outputs.job-output }} @@ -28,6 +31,7 @@ jobs: run: | set -x test "top-level-input1" = "${{ inputs.input1 }}" + test "dynamic output" = "${{ inputs.input3 }}" - name: verify workflow secrets run: | set -x @@ -38,10 +42,13 @@ jobs: run: touch /srv/example/callee-1 layer-2: + needs: [callee-1] uses: ./.forgejo/workflows/reusable-layer-2.yml with: input1: ${{ inputs.input1 }} input2: mid-level-input2 + input3: ${{ inputs.input3 }} + input4: ${{ needs.callee-1.outputs.job-output }} secrets: inherit callee-2: diff --git a/actions/example-workflow-call-expansion/.forgejo/workflows/reusable-layer-2.yml b/actions/example-workflow-call-expansion/.forgejo/workflows/reusable-layer-2.yml index eaf37ba1..3b633ebd 100644 --- a/actions/example-workflow-call-expansion/.forgejo/workflows/reusable-layer-2.yml +++ b/actions/example-workflow-call-expansion/.forgejo/workflows/reusable-layer-2.yml @@ -7,6 +7,12 @@ on: input2: required: true type: string + input3: + required: true + type: string + input4: + required: true + type: string outputs: output3: value: ${{ jobs.callee-3.outputs.job-output }} @@ -28,6 +34,8 @@ jobs: set -x test "top-level-input1" = "${{ inputs.input1 }}" test "mid-level-input2" = "${{ inputs.input2 }}" + test "dynamic output" = "${{ inputs.input3 }}" + test "callee-1-output" = "${{ inputs.input4 }}" - name: verify workflow secrets inherited run: | set -x diff --git a/actions/example-workflow-call-expansion/.forgejo/workflows/test.yml b/actions/example-workflow-call-expansion/.forgejo/workflows/test.yml index dfa29afc..cd9290a2 100644 --- a/actions/example-workflow-call-expansion/.forgejo/workflows/test.yml +++ b/actions/example-workflow-call-expansion/.forgejo/workflows/test.yml @@ -2,10 +2,22 @@ on: push: jobs: + pre-job: + runs-on: docker + container: + image: data.forgejo.org/oci/node:22-bookworm + outputs: + dynamic: "${{ steps.dynamic-step.outputs.dynamic }}" + steps: + - id: dynamic-step + run: echo "dynamic=dynamic output" >> $FORGEJO_OUTPUT + layer-1: + needs: [pre-job] uses: ./.forgejo/workflows/reusable-layer-1.yml with: input1: top-level-input1 + input3: ${{ needs.pre-job.outputs.dynamic }} secrets: secret1: AAAA secret2: BBBB1234 From 1064337c896760f28a02dc01377a632683958df2 Mon Sep 17 00:00:00 2001 From: Mathieu Fenniak Date: Thu, 1 Jan 2026 22:16:33 +0000 Subject: [PATCH 60/86] ci: run Forgejo Actions & Packages test w/ dynamic matrix (#1367) Incorporates these changes: - When `forgejo/build-from-sources` is present, Actions & Packages tests are run only against the built versions. Otherwise, they are run against the versions defined in `$RELEASE_NUMBERS` - Updates Packages tests which are testing Alpine publishing to use currently supported Alpine releases - Actions & Packages tests are run in a matrix, allowing parallel execution Only the Actions & Packages tests take a significant amount of time (>10 minutes), so changes have been limited to those test suites -- every test suite that is moved into a matrix adds additional overhead in the 1 minute `prepare-end-to-end` step. Reviewed-on: https://code.forgejo.org/forgejo/end-to-end/pulls/1367 Co-authored-by: Mathieu Fenniak Co-committed-by: Mathieu Fenniak --- .forgejo/workflows/end-to-end.yml | 14 ++++++++++++-- .../.forgejo/workflows/test.yml | 2 ++ actions/example-cache-pull-request/run.sh | 2 ++ packages/alpine-10.0 | 1 - packages/alpine.sh | 8 +++++--- .../package-source/forgejo-2173/APKBUILD | 0 .../package-source/forgejo-2173/forgejo_2173 | 0 .../package-source/forgejo-2173/forgejo_2173.init | 0 .../package-source/forgejo-2174/APKBUILD | 0 .../package-source/forgejo-2174/forgejo_2174 | 0 .../package-source/forgejo-2174/forgejo_2174.init | 0 packages/{alpine-7.0 => alpine}/test.sh | 0 packages/packages.sh | 4 +++- 13 files changed, 24 insertions(+), 7 deletions(-) delete mode 120000 packages/alpine-10.0 rename packages/{alpine-7.0 => alpine}/package-source/forgejo-2173/APKBUILD (100%) rename packages/{alpine-7.0 => alpine}/package-source/forgejo-2173/forgejo_2173 (100%) rename packages/{alpine-7.0 => alpine}/package-source/forgejo-2173/forgejo_2173.init (100%) rename packages/{alpine-7.0 => alpine}/package-source/forgejo-2174/APKBUILD (100%) rename packages/{alpine-7.0 => alpine}/package-source/forgejo-2174/forgejo_2174 (100%) rename packages/{alpine-7.0 => alpine}/package-source/forgejo-2174/forgejo_2174.init (100%) rename packages/{alpine-7.0 => alpine}/test.sh (100%) diff --git a/.forgejo/workflows/end-to-end.yml b/.forgejo/workflows/end-to-end.yml index 27c917a6..3921e400 100644 --- a/.forgejo/workflows/end-to-end.yml +++ b/.forgejo/workflows/end-to-end.yml @@ -18,6 +18,7 @@ jobs: image: 'data.forgejo.org/oci/node:20-bookworm' outputs: built: "${{ steps.build.outputs.built }}" + forgejo_versions_json: "${{ steps.build.outputs.forgejo_versions_json }}" steps: - uses: https://data.forgejo.org/actions/checkout@v4 - uses: https://data.forgejo.org/actions/setup-go@v5 @@ -31,6 +32,8 @@ jobs: if ! test -f forgejo/build-from-sources; then echo forgejo/build-from-sources is not present, do not build any version from source + source lib/lib.sh + echo "forgejo_versions_json=$(node -p "JSON.stringify(process.argv[1].split(' '))" "$RELEASE_NUMBERS")" >> $FORGEJO_OUTPUT echo "built=no" >> $FORGEJO_OUTPUT exit 0 fi @@ -52,6 +55,7 @@ jobs: mv $forgejo /tmp/forgejo-upload/forgejo-$version done + echo "forgejo_versions_json=$(node -p "JSON.stringify(process.argv[1].split(' '))" "$(cat forgejo/build-from-sources)")" >> $FORGEJO_OUTPUT echo "built=yes" >> $FORGEJO_OUTPUT - name: steps context dump for debug @@ -70,12 +74,15 @@ jobs: packages: needs: [build] runs-on: lxc-trixie + strategy: + matrix: + forgejo_version: ${{ fromJSON(needs.build.outputs.forgejo_versions_json) }} steps: - uses: https://data.forgejo.org/actions/checkout@v4 - uses: ./.forgejo/prepare-end-to-end with: built: ${{ needs.build.outputs.built }} - - run: su forgejo -c "./end-to-end.sh test_packages" + - run: su forgejo -c "./end-to-end.sh test_packages ${{ matrix.forgejo_version }}" - if: ${{ needs.build.outputs.built == 'yes' }} uses: ./.forgejo/upload-coverage with: @@ -87,13 +94,16 @@ jobs: actions: needs: [build] runs-on: lxc-trixie + strategy: + matrix: + forgejo_version: ${{ fromJSON(needs.build.outputs.forgejo_versions_json) }} steps: - uses: https://data.forgejo.org/actions/checkout@v4 - uses: ./.forgejo/prepare-end-to-end with: built: ${{ needs.build.outputs.built }} - run: ./end-to-end.sh prepare_dockerd - - run: su forgejo -c "./end-to-end.sh test_actions" + - run: su forgejo -c "./end-to-end.sh test_actions ${{ matrix.forgejo_version }}" - if: ${{ needs.build.outputs.built == 'yes' }} uses: ./.forgejo/upload-coverage with: diff --git a/actions/example-cache-pull-request/.forgejo/workflows/test.yml b/actions/example-cache-pull-request/.forgejo/workflows/test.yml index aad6b08b..43a96d41 100644 --- a/actions/example-cache-pull-request/.forgejo/workflows/test.yml +++ b/actions/example-cache-pull-request/.forgejo/workflows/test.yml @@ -79,6 +79,7 @@ jobs: - name: determine if the PR is from a fork id: forked run: | + set -x if test ${{ forge.event.pull_request.base.repo.full_name }} = ${{ forge.event.pull_request.head.repo.full_name }} ; then echo value=false >> $FORGEJO_OUTPUT else @@ -87,6 +88,7 @@ jobs: - name: save event run: | + set -x d=/srv/example/cache-pull-request/contexts/${{ forgejo.event.pull_request.head.repo.owner.username }}/$FORGEJO_EVENT_NAME mkdir -p $d cat > $d/forgejo-${{ forgejo.event.action }} <<'EOF' diff --git a/actions/example-cache-pull-request/run.sh b/actions/example-cache-pull-request/run.sh index 544b652a..85020281 100755 --- a/actions/example-cache-pull-request/run.sh +++ b/actions/example-cache-pull-request/run.sh @@ -53,6 +53,7 @@ function main() { # wait for the opened event to succeed using the cache on all pull requests # if ! forgejo.sh retry $EXAMPLE_DIR/assert-contexts-opened.sh; then + echo "assert-contexts-opened.sh failed; printing related logs and information:" find $d sed -e 's/^/[RUNNER LOGS]/' <$FORGEJO_RUNNER_LOGS return 1 @@ -69,6 +70,7 @@ function main() { # wait for the closed event to succeed using the cache on all pull requests # if ! forgejo.sh retry $EXAMPLE_DIR/assert-contexts-closed.sh; then + echo "assert-contexts-closed.sh failed; printing related logs and information:" find $d sed -e 's/^/[RUNNER LOGS]/' <$FORGEJO_RUNNER_LOGS return 1 diff --git a/packages/alpine-10.0 b/packages/alpine-10.0 deleted file mode 120000 index b34295a0..00000000 --- a/packages/alpine-10.0 +++ /dev/null @@ -1 +0,0 @@ -alpine-7.0 \ No newline at end of file diff --git a/packages/alpine.sh b/packages/alpine.sh index c8679a51..ce5c4ac8 100644 --- a/packages/alpine.sh +++ b/packages/alpine.sh @@ -7,7 +7,7 @@ function test_packages_alpine_version() { reset_forgejo $PACKAGES_DIR/alpine-app.ini start_forgejo $forgejo_version - local d=$PACKAGES_DIR/alpine-$forgejo_version + local d=$PACKAGES_DIR/alpine local token=$(cat $DIR/forgejo-curl/token) local url=http://${HOST_PORT} @@ -16,8 +16,10 @@ function test_packages_alpine_version() { } function test_packages_alpine() { - for alpine_version in 3.20 3.21; do - for forgejo_version in 7.0 10.0; do + local forgejo_versions="${1:-$RELEASE_NUMBERS}" + + for alpine_version in 3.22 3.23; do + for forgejo_version in $forgejo_versions; do test_packages_alpine_version $alpine_version $forgejo_version done done diff --git a/packages/alpine-7.0/package-source/forgejo-2173/APKBUILD b/packages/alpine/package-source/forgejo-2173/APKBUILD similarity index 100% rename from packages/alpine-7.0/package-source/forgejo-2173/APKBUILD rename to packages/alpine/package-source/forgejo-2173/APKBUILD diff --git a/packages/alpine-7.0/package-source/forgejo-2173/forgejo_2173 b/packages/alpine/package-source/forgejo-2173/forgejo_2173 similarity index 100% rename from packages/alpine-7.0/package-source/forgejo-2173/forgejo_2173 rename to packages/alpine/package-source/forgejo-2173/forgejo_2173 diff --git a/packages/alpine-7.0/package-source/forgejo-2173/forgejo_2173.init b/packages/alpine/package-source/forgejo-2173/forgejo_2173.init similarity index 100% rename from packages/alpine-7.0/package-source/forgejo-2173/forgejo_2173.init rename to packages/alpine/package-source/forgejo-2173/forgejo_2173.init diff --git a/packages/alpine-7.0/package-source/forgejo-2174/APKBUILD b/packages/alpine/package-source/forgejo-2174/APKBUILD similarity index 100% rename from packages/alpine-7.0/package-source/forgejo-2174/APKBUILD rename to packages/alpine/package-source/forgejo-2174/APKBUILD diff --git a/packages/alpine-7.0/package-source/forgejo-2174/forgejo_2174 b/packages/alpine/package-source/forgejo-2174/forgejo_2174 similarity index 100% rename from packages/alpine-7.0/package-source/forgejo-2174/forgejo_2174 rename to packages/alpine/package-source/forgejo-2174/forgejo_2174 diff --git a/packages/alpine-7.0/package-source/forgejo-2174/forgejo_2174.init b/packages/alpine/package-source/forgejo-2174/forgejo_2174.init similarity index 100% rename from packages/alpine-7.0/package-source/forgejo-2174/forgejo_2174.init rename to packages/alpine/package-source/forgejo-2174/forgejo_2174.init diff --git a/packages/alpine-7.0/test.sh b/packages/alpine/test.sh similarity index 100% rename from packages/alpine-7.0/test.sh rename to packages/alpine/test.sh diff --git a/packages/packages.sh b/packages/packages.sh index 002ed796..4fc9c6a4 100644 --- a/packages/packages.sh +++ b/packages/packages.sh @@ -7,5 +7,7 @@ PACKAGES_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" source $PACKAGES_DIR/alpine.sh function test_packages() { - run test_packages_alpine + local forgejo_versions="${1:-$RELEASE_NUMBERS}" + + run test_packages_alpine $forgejo_versions } From a57c631faedbb9a17ad86383e06bacd27ae77dea Mon Sep 17 00:00:00 2001 From: famfo Date: Mon, 5 Jan 2026 14:34:58 +0000 Subject: [PATCH 61/86] feat(federation): add scenario-mastodon setup and teardown (#1274) 2/5 taken out of #1269 This patch adds the setup and teardown of Mastodon for use in the end-to-end tests Co-Authored-By: zam Co-Authored-By: erik Co-Authored-By: Michael Jerger Reviewed-on: https://code.forgejo.org/forgejo/end-to-end/pulls/1274 Reviewed-by: earl-warren Reviewed-by: Beowulf Co-authored-by: famfo Co-committed-by: famfo --- federation/federation.sh | 1 + federation/scenario-mastodon/.gitignore | 3 + .../scenario-mastodon/TEST_INSTRUCTION.md | 38 ++++++++ federation/scenario-mastodon/compose.yaml | 95 +++++++++++++++++++ .../forgejo-app/config/app.ini | 32 +++++++ .../forgejo-app/init/create_test_account.sh | 7 ++ .../forgejo-app/init/init.sh | 10 ++ .../scenario-mastodon/forgejo/certs/.gitkeep | 0 .../forgejo/etc/lighttpd.conf | 22 +++++ .../scenario-mastodon/forgejo/init/init.sh | 6 ++ federation/scenario-mastodon/functions.sh | 32 +++++++ .../mastodon-app/init/create_test_account.sh | 14 +++ .../mastodon-app/init/init.sh | 8 ++ .../mastodon-sidekiq/init/init.sh | 7 ++ .../certs/custom-snakeoil-rootCA.crt | 19 ++++ .../certs/custom-snakeoil-rootCA.key | 28 ++++++ federation/scenario-mastodon/run.sh | 17 ++++ federation/scenario-mastodon/setup.sh | 48 ++++++++++ federation/scenario-mastodon/teardown.sh | 8 ++ 19 files changed, 395 insertions(+) create mode 100644 federation/scenario-mastodon/.gitignore create mode 100644 federation/scenario-mastodon/TEST_INSTRUCTION.md create mode 100644 federation/scenario-mastodon/compose.yaml create mode 100644 federation/scenario-mastodon/forgejo-app/config/app.ini create mode 100755 federation/scenario-mastodon/forgejo-app/init/create_test_account.sh create mode 100755 federation/scenario-mastodon/forgejo-app/init/init.sh create mode 100644 federation/scenario-mastodon/forgejo/certs/.gitkeep create mode 100644 federation/scenario-mastodon/forgejo/etc/lighttpd.conf create mode 100755 federation/scenario-mastodon/forgejo/init/init.sh create mode 100644 federation/scenario-mastodon/functions.sh create mode 100755 federation/scenario-mastodon/mastodon-app/init/create_test_account.sh create mode 100755 federation/scenario-mastodon/mastodon-app/init/init.sh create mode 100755 federation/scenario-mastodon/mastodon-sidekiq/init/init.sh create mode 100644 federation/scenario-mastodon/resources/certs/custom-snakeoil-rootCA.crt create mode 100644 federation/scenario-mastodon/resources/certs/custom-snakeoil-rootCA.key create mode 100644 federation/scenario-mastodon/run.sh create mode 100755 federation/scenario-mastodon/setup.sh create mode 100644 federation/scenario-mastodon/teardown.sh diff --git a/federation/federation.sh b/federation/federation.sh index 5dbc596d..95682c8c 100755 --- a/federation/federation.sh +++ b/federation/federation.sh @@ -78,6 +78,7 @@ function test_federation() { # NOTE: newline seperated, not comma :> scenarios=( "star 7.1" + "mastodon 14.0" ) for scenario_version_str in "${scenarios[@]}"; do diff --git a/federation/scenario-mastodon/.gitignore b/federation/scenario-mastodon/.gitignore new file mode 100644 index 00000000..041e9d6f --- /dev/null +++ b/federation/scenario-mastodon/.gitignore @@ -0,0 +1,3 @@ +/resources/certs/forgejo* +/forgejo/certs/* +!/forgejo/certs/.gitkeep diff --git a/federation/scenario-mastodon/TEST_INSTRUCTION.md b/federation/scenario-mastodon/TEST_INSTRUCTION.md new file mode 100644 index 00000000..82d957b0 --- /dev/null +++ b/federation/scenario-mastodon/TEST_INSTRUCTION.md @@ -0,0 +1,38 @@ +# Manual testing + +1. compile forgejo binary to test on a debian/ubuntu system +2. start applications + * local forgejo: + ```sh + cd federation/scenario-mastodon + # create cert & startup & create test accounts + SCENARIO_DIR="." ./setup.sh + # Mastodon password in "/tmp/forgejo-end-to-end/federation_scenario-mastodon-env" + # Bind forgejo to localhost:3003 and set the domain to `forgejo` + ``` + * containerized forgejo: + ```sh + cd federation/scenario-mastodon + # Generate self-signed certs on first run + source ./functions.sh + generate_certs forgejo "./resources/certs" + mv "./resources/certs/forgejo"* "forgejo/certs" + + # Setup container + export FORGEJO_PATH="/path/to/forgejo/binary" + export COMPOSE_PROFILES="forgejo_container" + export MASTODON_HOST="mastodon-app" + + podman-compose up -d + podman-compose exec forgejo-app bash -c "/init/create_test_account.sh" + # Mastodon password is the last line of the output + podman-compose exec mastodon-app bash -c "/init/create_test_account.sh" + ``` +3. login to mastodon: http://localhost:4000 + 1. test@localhost - password from start app. +4. search for forgejo user: `https://forgejo/api/v1/activitypub/user-id/1` +5. Press follow +6. FYI: + 1. login to forgejo: http://localhost:3003/ + 2. me - me + 3. swagger-uri: http://localhost:3003/api/swagger#/activitypub diff --git a/federation/scenario-mastodon/compose.yaml b/federation/scenario-mastodon/compose.yaml new file mode 100644 index 00000000..0a39c17e --- /dev/null +++ b/federation/scenario-mastodon/compose.yaml @@ -0,0 +1,95 @@ +networks: + external_network: + internal_network: + internal: true + +services: + forgejo: + image: code.forgejo.org/oci/alpine:latest + volumes: + - ./forgejo/certs/:/usr/local/share/ca-certificates/ + - ./forgejo/init/:/init/ + - ./forgejo/etc/lighttpd.conf:/etc/lighttpd.conf + restart: unless-stopped + entrypoint: "sh /init/init.sh" + networks: + - external_network + - internal_network + + forgejo-app: + profiles: + - forgejo_container + # built from https://code.forgejo.org/federation/build-mastodon/src/branch/main/debian-containerfile + image: code.forgejo.org/federation/debian:trixie-cacerts + tmpfs: + - /data + volumes: + - ./forgejo-app/init/:/init/ + - ./forgejo-app/config/:/config/ + - ./resources/certs/:/usr/local/share/ca-certificates/ + - "${FORGEJO_PATH}:/usr/local/bin/forgejo" + ports: + - 3003:3003 + entrypoint: "sh /init/init.sh" + networks: + - external_network + - internal_network + + postgres: + image: code.forgejo.org/oci/postgres:14 + tmpfs: + - /var/lib/postgresql/data + environment: + POSTGRES_USER: postgres + POSTGRES_DB: postgres + POSTGRES_PASSWORD: postgres + POSTGRES_HOST_AUTH_METHOD: trust + networks: + - internal_network + + redis: + image: code.forgejo.org/oci/redis:7.2 + tmpfs: + - /var/lib/redis/ + networks: + - internal_network + + mastodon-app: + # built from https://code.forgejo.org/federation/build-mastodon/src/branch/main/mastodon-containerfile + image: code.forgejo.org/federation/mastodon:v4.5-test + volumes: + - ./resources/certs:/usr/local/share/ca-certificates/ + - ./mastodon-app/init/:/init/ + environment: &mastodon_env + DB_HOST: postgres + DB_USER: postgres + DB_PASS: postgres + REDIS_HOST: redis + PORT: 4000 + LOCAL_DOMAIN: ${MASTODON_HOST}:4000 + ALTERNATE_DOMAINS: ${MASTODON_HOST},localhost + EMAIL_DOMAIN_ALLOWLIST: localhost + AUTHORIZED_FETCH: "true" + ALLOWED_PRIVATE_ADDRESSES: 0.0.0.0/0,::/0 + SECRET_KEY_BASE: bc1bdb4d3d57a2c292a8f145d5d3c921 + ACTIVE_RECORD_ENCRYPTION_DETERMINISTIC_KEY: fkSxKD2bF396kdQbrP1EJ7WbU7ZgNokR + ACTIVE_RECORD_ENCRYPTION_KEY_DERIVATION_SALT: r0hvVmzBVsjxC7AMlwhOzmtc36ZCOS1E + ACTIVE_RECORD_ENCRYPTION_PRIMARY_KEY: PhdFyyfy5xJ7WVd2lWBpcPScRQHzRTNr + ports: + - "4000:4000" + entrypoint: "sh /init/init.sh" + networks: + - external_network + - internal_network + + mastodon-sidekiq: + # built from https://code.forgejo.org/federation/build-mastodon/src/branch/main/mastodon-containerfile + image: code.forgejo.org/federation/mastodon:v4.5-test + volumes: + - ./resources/certs:/usr/local/share/ca-certificates/ + - ./mastodon-sidekiq/init/:/init/ + restart: unless-stopped + environment: *mastodon_env + entrypoint: "sh /init/init.sh" + networks: + - internal_network diff --git a/federation/scenario-mastodon/forgejo-app/config/app.ini b/federation/scenario-mastodon/forgejo-app/config/app.ini new file mode 100644 index 00000000..55ef4f61 --- /dev/null +++ b/federation/scenario-mastodon/forgejo-app/config/app.ini @@ -0,0 +1,32 @@ +RUN_MODE = prod + +[server] +APP_DATA_PATH = /data +DOMAIN = forgejo +ROOT_URL = https://forgejo/ +HTTP_PORT = 3003 +PROTOCOL = http + +[queue] +TYPE = immediate + +[database] +DB_TYPE = sqlite3 +PATH = /data/forgejo.db + +[log] +MODE = console +LEVEL = debug + +[security] +INSTALL_LOCK = true + +[repository] +ENABLE_PUSH_CREATE_USER = true +DEFAULT_PUSH_CREATE_PRIVATE = false + +[federation] +ENABLED = true + +[session] +COOKIE_SECURE = false diff --git a/federation/scenario-mastodon/forgejo-app/init/create_test_account.sh b/federation/scenario-mastodon/forgejo-app/init/create_test_account.sh new file mode 100755 index 00000000..33fc4807 --- /dev/null +++ b/federation/scenario-mastodon/forgejo-app/init/create_test_account.sh @@ -0,0 +1,7 @@ +#!/usr/bin/env bash + +sleep 10 + +/usr/local/bin/forgejo -c /etc/forgejo/app.ini admin user create --username me --password me --email "me@example.com" --admin --must-change-password=false +/usr/local/bin/forgejo -c /etc/forgejo/app.ini admin user create --username to-be-followd --password to-be-followd --email "to-be-followd@example.com" --admin --must-change-password=false +/usr/local/bin/forgejo -c /etc/forgejo/app.ini admin user generate-access-token -u me -t token --scopes write:activitypub,write:repository,write:user diff --git a/federation/scenario-mastodon/forgejo-app/init/init.sh b/federation/scenario-mastodon/forgejo-app/init/init.sh new file mode 100755 index 00000000..3848fa53 --- /dev/null +++ b/federation/scenario-mastodon/forgejo-app/init/init.sh @@ -0,0 +1,10 @@ +#!/usr/bin/env bash + +sudo update-ca-certificates + +sudo mkdir -p /data/forgejo +sudo chown forgejo:forgejo /data/forgejo +sudo install -D -o forgejo -g forgejo /config/app.ini /etc/forgejo/app.ini + +/usr/local/bin/forgejo -c /etc/forgejo/app.ini + diff --git a/federation/scenario-mastodon/forgejo/certs/.gitkeep b/federation/scenario-mastodon/forgejo/certs/.gitkeep new file mode 100644 index 00000000..e69de29b diff --git a/federation/scenario-mastodon/forgejo/etc/lighttpd.conf b/federation/scenario-mastodon/forgejo/etc/lighttpd.conf new file mode 100644 index 00000000..325779ad --- /dev/null +++ b/federation/scenario-mastodon/forgejo/etc/lighttpd.conf @@ -0,0 +1,22 @@ +server.document-root = "/var/www" + +server.modules = ( + "mod_openssl", + "mod_proxy" +) + +$SERVER["socket"] == ":443" { + ssl.engine = "enable" + ssl.pemfile = "/usr/local/share/ca-certificates/forgejo-snakeoil.crt" + ssl.privkey = "/usr/local/share/ca-certificates/forgejo-snakeoil.key" +} + +proxy.server = ( + "" => ( + "forgejo" => ( + "host" => "host.containers.internal", + "port" => 3003, + ) + ) +) + diff --git a/federation/scenario-mastodon/forgejo/init/init.sh b/federation/scenario-mastodon/forgejo/init/init.sh new file mode 100755 index 00000000..6660768d --- /dev/null +++ b/federation/scenario-mastodon/forgejo/init/init.sh @@ -0,0 +1,6 @@ +#!/usr/bin/env sh + +apk add lighttpd + +lighttpd -D -f /etc/lighttpd.conf + diff --git a/federation/scenario-mastodon/functions.sh b/federation/scenario-mastodon/functions.sh new file mode 100644 index 00000000..507131cc --- /dev/null +++ b/federation/scenario-mastodon/functions.sh @@ -0,0 +1,32 @@ +function generate_certs() { + + host=${1} + cert_location=${2} + + rootCertificate="${cert_location}/custom-snakeoil-rootCA.crt" + rootCertKey="${cert_location}/custom-snakeoil-rootCA.key" + extensionFile="${cert_location}/${host}-snakeoil.ext" + keyFile="${cert_location}/${host}-snakeoil.key" + csrFile="${cert_location}/${host}-snakeoil.csr" + crtAltSubFile="${cert_location}/${host}-snakeoil.crt" + + cat << EOF > ${extensionFile} +authorityKeyIdentifier=keyid,issuer +basicConstraints=CA:FALSE +subjectAltName = @alt_names +[alt_names] +DNS.1 = ${host} +DNS.2 = localhost +EOF + + # Create CSR + openssl req -newkey rsa:2048 -nodes -keyout ${keyFile} \ + -out ${csrFile} -subj "/CN=${host}" -addext "subjectAltName=DNS:localhost" + + # Sign Our CSR with the root CA cert + openssl x509 -req -CA ${rootCertificate} \ + -CAkey ${rootCertKey} \ + -in ${csrFile} \ + -out ${crtAltSubFile} \ + -days 3650 -CAcreateserial -extfile ${extensionFile} +} \ No newline at end of file diff --git a/federation/scenario-mastodon/mastodon-app/init/create_test_account.sh b/federation/scenario-mastodon/mastodon-app/init/create_test_account.sh new file mode 100755 index 00000000..283000fb --- /dev/null +++ b/federation/scenario-mastodon/mastodon-app/init/create_test_account.sh @@ -0,0 +1,14 @@ +#!/usr/bin/env bash + +account_create="$(tootctl accounts create test --email test@localhost --role Owner --confirmed)" +tootctl account modify test --approve + +echo "${account_create}" + +password=$(echo "${account_create}" | + tail -n 1 | + sed 's/New password: //' | + sed 's/\r//' +) + +echo "$password" diff --git a/federation/scenario-mastodon/mastodon-app/init/init.sh b/federation/scenario-mastodon/mastodon-app/init/init.sh new file mode 100755 index 00000000..731aa55d --- /dev/null +++ b/federation/scenario-mastodon/mastodon-app/init/init.sh @@ -0,0 +1,8 @@ +#!/usr/bin/env bash + +sudo update-ca-certificates +sudo touch /opt/mastodon/log/prod.log +sudo chown mastodon: /opt/mastodon/log/prod.log +rails db:setup +bundle exec puma -C config/puma.rb +#sleep 2h diff --git a/federation/scenario-mastodon/mastodon-sidekiq/init/init.sh b/federation/scenario-mastodon/mastodon-sidekiq/init/init.sh new file mode 100755 index 00000000..af9c5190 --- /dev/null +++ b/federation/scenario-mastodon/mastodon-sidekiq/init/init.sh @@ -0,0 +1,7 @@ +#!/usr/bin/env bash + +sudo update-ca-certificates +sudo touch /opt/mastodon/log/prod.log +sudo chown mastodon: /opt/mastodon/log/prod.log +bundle exec sidekiq +#sleep 2h diff --git a/federation/scenario-mastodon/resources/certs/custom-snakeoil-rootCA.crt b/federation/scenario-mastodon/resources/certs/custom-snakeoil-rootCA.crt new file mode 100644 index 00000000..91a0d144 --- /dev/null +++ b/federation/scenario-mastodon/resources/certs/custom-snakeoil-rootCA.crt @@ -0,0 +1,19 @@ +-----BEGIN CERTIFICATE----- +MIIDGTCCAgGgAwIBAgIUU+o53CfULAHTgPuCq/Ua8JRTWLIwDQYJKoZIhvcNAQEL +BQAwGzEZMBcGA1UEAwwQY29kZS5mb3JnZWpvLm9yZzAgFw0yNTEwMjMwODI2NTVa +GA8yMTI1MDkyOTA4MjY1NVowGzEZMBcGA1UEAwwQY29kZS5mb3JnZWpvLm9yZzCC +ASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAKJl1YjGLoYK5J7wCbgL7WCZ +DGznwmp2SxpxJx/9Y6Pldt1QXTp0/VrR/H8iu3bNh13jmupXTKyGHU94MTNHER1T +/jbGw8LRPWCIYNjpYFZU17glTGs/DOieh7acuuvu+imoamk1oRLVaaHDewz09Tc2 +wkklCH+2ME2TC6mHIqpHOLO//ESEU0Glo+/mVMEcTJf9zdDhSGhZPKhXEaWgrLMo +EV3r0hpxHCE21OeaRrOKjMtOfp6/v0yKAsJ0QbLHXw1JDauiMWHUxp1H3jIHGgtc +0ALdiS1fhYi8zX3bkbMfctjREVtbhO0Aqps5pvDjhjTNyTmSQ3dkkU37W7Mz+WkC +AwEAAaNTMFEwHQYDVR0OBBYEFKXOSikliKVL6VYbbcaOR3k3khKyMB8GA1UdIwQY +MBaAFKXOSikliKVL6VYbbcaOR3k3khKyMA8GA1UdEwEB/wQFMAMBAf8wDQYJKoZI +hvcNAQELBQADggEBADE4RGzIXT3LsLGxqRiuOPrXnOTy6izD0sXraJGPWOTEm0MB +H+MnV1YmqRiafwCTbKyiTfzF50JX0zwa6NnkK7k7tyht7O2B0/1VfsrIaXGBP05B +pZMC1bMSaDEu+zvRUDFvNiE5Oxkw0LGy44o36e3SNCEXMCYU3fiTX/5IxfB/a1Bk ++5tNfpK4CKwyk2/pb8ClgBldYGxfp/hyzTVh7y4c5bSRzoawGxq2ipfmJbSBYEme +vyySFXJI1W9ih8utE2sQKbRS7YrwxSNS9Uj6qwixTlHB5a/MzlFmD630VkmkI1qq +5VkQxq7dJSTlVHX8qiQqvGoPPIp5ucbBDmyj2A8= +-----END CERTIFICATE----- diff --git a/federation/scenario-mastodon/resources/certs/custom-snakeoil-rootCA.key b/federation/scenario-mastodon/resources/certs/custom-snakeoil-rootCA.key new file mode 100644 index 00000000..b4b13057 --- /dev/null +++ b/federation/scenario-mastodon/resources/certs/custom-snakeoil-rootCA.key @@ -0,0 +1,28 @@ +-----BEGIN PRIVATE KEY----- +MIIEvwIBADANBgkqhkiG9w0BAQEFAASCBKkwggSlAgEAAoIBAQCiZdWIxi6GCuSe +8Am4C+1gmQxs58JqdksacScf/WOj5XbdUF06dP1a0fx/Irt2zYdd45rqV0yshh1P +eDEzRxEdU/42xsPC0T1giGDY6WBWVNe4JUxrPwzonoe2nLrr7vopqGppNaES1Wmh +w3sM9PU3NsJJJQh/tjBNkwuphyKqRzizv/xEhFNBpaPv5lTBHEyX/c3Q4UhoWTyo +VxGloKyzKBFd69IacRwhNtTnmkaziozLTn6ev79MigLCdEGyx18NSQ2rojFh1Mad +R94yBxoLXNAC3YktX4WIvM1925GzH3LY0RFbW4TtAKqbOabw44Y0zck5kkN3ZJFN ++1uzM/lpAgMBAAECggEAAdGmR0j0k/ISyfhYnFJfFAfBN+x0a1wl7rOjDP/Tg7r9 +Ln21yzYTJJcfnu5TaOfLH84KrRwrT6JhhfaYn64PC8PmH/rXDftPsFSOt/DZo2+B +vaSgGyWcMVqdnNOOep6IXq36rr3krwQra14Rmbbm36AYihh+iuzbB4w0vPvpwDwv +G9DITTLrIwDRbXReZ13FjqphP5dqT6jG7BnRLe7vyQ7CJwYdUDLkg2YLykwbHvco +DISS3IoYgF5R7KaGpwH2iFmeHYwXaVH9Y0RyjEvxp87iK8Awvm4yn7hWBx9NsMm2 +of7107TlFBU81JbG09KQZ+mS3S4C9XfQScqBoP66tQKBgQDYS4QhwkYFNusN8z+U +63IGMxJXMF0bvF1zqjhrfkdX16jDD7v8cMbZAjk80obmRdhFpNiuaCT7dbnXpt7L +Ppfu6IkcJsAJc32lbWGc56XzfzDnNecvQbCbMnRYI5GDzcTTY+ObgyhJv4SwuD3E +kdHhxOFPuxlLFey9eg9vC6ADnQKBgQDANX5oEqvVty8gn+cOU3fEiqQ+ZqvcgMcL +CUQYIAUDvXjZuXTbU0cSzgZnZi3JwtEVwj0u+0eXXlju6AVgKC/yd4aIpQ2f6hXO +UlODWIqiNq3lVgjatO6zQ2CXuBeV7crX6odNrhkvSwSPNlC2Ra7QZ8Uk0PpX0sTm +JyuMA/WBPQKBgQCkqulPYj44nhTZrAUN9Sn7+knOQy2/feqPsln9zEe4YqFCz+nI +SHu6nuzAl27IRQhgDR5BuVvebUQtIAeiKGc3JaWs3vt4topDtUCJWfqHpJ+whuMY +oSQ5I3Jb38ha1f8xCG0x6ep0KvB0MfAkhPeKsH7wWnrpJSn1HsY9PlZ2KQKBgQCS +/xZKb6UdEDipocDqkukw1bsgwhLD03TmOtLqBGrxXlFzacM2DW14sznwkBOKj0Sq +eF+kc6Zf3Fb1d1rNHE73B3RLQre1yiedIBcgh3GW92xszSx+XwuC64+O2Mqo7jBI +iuOpg/Fc2umEwUxe6dH1Lrd2HaCn09ikD+bc8RYsHQKBgQDXfAiAf3MdzG8+4zgD +kzfZsUXRUm3ACqrkhlUOzPsh2y5yGO0gxkrUR4ps2+wn0aapwYi+JdbEHpDqI4Ze +vE3d8ZgLF4ER+uuiayuItMIFa8T0AiH1oJMptUY4kgj1AaG0b3+ZxU/uGXjpciyA +a7/psxJ+in3AQ005JGir8rx+gA== +-----END PRIVATE KEY----- diff --git a/federation/scenario-mastodon/run.sh b/federation/scenario-mastodon/run.sh new file mode 100644 index 00000000..7e07a1b8 --- /dev/null +++ b/federation/scenario-mastodon/run.sh @@ -0,0 +1,17 @@ +#!/usr/bin/env bash + +source "$DIR/federation_scenario-$scenario-env" + +if [[ -z "$password" ]]; then + exit 1 +fi + +if [[ -z "$port" ]]; then + exit 1 +fi + +status_code="$(curl -o /dev/null -w '%{http_code}' "http://localhost:$port/")" +if [[ "$status_code" != "200" ]]; then + exit 1 +fi + diff --git a/federation/scenario-mastodon/setup.sh b/federation/scenario-mastodon/setup.sh new file mode 100755 index 00000000..cb9efb98 --- /dev/null +++ b/federation/scenario-mastodon/setup.sh @@ -0,0 +1,48 @@ +#!/usr/bin/env bash + +source "$SCENARIO_DIR/../../lib/lib.sh" +source "$SCENARIO_DIR/functions.sh" + +echo "Setting up Forgejo x Mastodon" + +if [[ ! -d "$DIR" ]]; then + mkdir -p "$DIR" +fi + +echo "Generating forgejo & mastodon self-signed certificate" + +generate_certs forgejo "$SCENARIO_DIR/resources/certs" + +mv "$SCENARIO_DIR/resources/certs/forgejo"* "$SCENARIO_DIR/forgejo/certs/" + +export MASTODON_HOST="localhost" + +podman-compose \ + -f "$SCENARIO_DIR/compose.yaml" \ + up -d + +function wait_up() { + command="$(podman-compose \ + -f "$SCENARIO_DIR/compose.yaml" \ + exec mastodon-app \ + bin/tootctl accounts + )" + + first="$(head -n 1 <<< "$command")" + [[ "$first" == *"Commands:"* ]] && echo "ready" +} + +retry wait_up + +password="$(podman-compose \ + -f "$SCENARIO_DIR/compose.yaml" \ + exec mastodon-app \ + bash -c "/init/create_test_account.sh" | \ + tail -n 1 | \ + sed 's/\r//' +)" + +cat << EOF > "$DIR/federation_scenario-mastodon-env" +password="$password" +port="4000" +EOF diff --git a/federation/scenario-mastodon/teardown.sh b/federation/scenario-mastodon/teardown.sh new file mode 100644 index 00000000..5e5d35f4 --- /dev/null +++ b/federation/scenario-mastodon/teardown.sh @@ -0,0 +1,8 @@ +#!/usr/bin/env bash + +podman-compose \ + -f "$SCENARIO_DIR/compose.yaml" \ + down + +rm "$DIR/federation_scenario-mastodon-env" + From 45417622c0bf1446b572cde22e70bdf4df290a29 Mon Sep 17 00:00:00 2001 From: famfo Date: Mon, 5 Jan 2026 17:36:57 +0000 Subject: [PATCH 62/86] feat(federation): add scenario-gotosocial setup and teardown (#1275) 3/5 taken out of #1269 This patch adds the setup and teardown of GoToSocial for use in the end-to-end tests Reviewed-on: https://code.forgejo.org/forgejo/end-to-end/pulls/1275 Reviewed-by: earl-warren Reviewed-by: Beowulf Co-authored-by: famfo Co-committed-by: famfo --- federation/federation.sh | 1 + federation/scenario-gotosocial/.gitignore | 0 federation/scenario-gotosocial/run.sh | 16 ++++++ federation/scenario-gotosocial/setup.sh | 58 ++++++++++++++++++++++ federation/scenario-gotosocial/teardown.sh | 12 +++++ run.sh | 11 ++++ 6 files changed, 98 insertions(+) create mode 100644 federation/scenario-gotosocial/.gitignore create mode 100644 federation/scenario-gotosocial/run.sh create mode 100644 federation/scenario-gotosocial/setup.sh create mode 100644 federation/scenario-gotosocial/teardown.sh create mode 100755 run.sh diff --git a/federation/federation.sh b/federation/federation.sh index 95682c8c..4d7c09a5 100755 --- a/federation/federation.sh +++ b/federation/federation.sh @@ -79,6 +79,7 @@ function test_federation() { scenarios=( "star 7.1" "mastodon 14.0" + "gotosocial 14.0" ) for scenario_version_str in "${scenarios[@]}"; do diff --git a/federation/scenario-gotosocial/.gitignore b/federation/scenario-gotosocial/.gitignore new file mode 100644 index 00000000..e69de29b diff --git a/federation/scenario-gotosocial/run.sh b/federation/scenario-gotosocial/run.sh new file mode 100644 index 00000000..9fd57a7b --- /dev/null +++ b/federation/scenario-gotosocial/run.sh @@ -0,0 +1,16 @@ +#!/usr/bin/env bash + +source "$DIR/federation_scenario-$scenario-env" + +if [[ -z "$password" ]]; then + exit 1 +fi + +if [[ -z "$port" ]]; then + exit 1 +fi + +status_code="$(curl -o /dev/null -w '%{http_code}' "http://localhost:$port/")" +if [[ "$status_code" != "200" ]]; then + exit 1 +fi diff --git a/federation/scenario-gotosocial/setup.sh b/federation/scenario-gotosocial/setup.sh new file mode 100644 index 00000000..13d97057 --- /dev/null +++ b/federation/scenario-gotosocial/setup.sh @@ -0,0 +1,58 @@ +#!/usr/bin/env bash + +source $SCENARIO_DIR/../../lib/lib.sh + +GTS_VERSION="0.20.2" # renovate: datasource=docker depName=data.forgejo.org/oci/gotosocial + +echo "setting up gotosocial" + +tmpdir="$(mktemp --tmpdir -d gts.XXXXXXXXXX)" +cat << EOF > "$tmpdir/config.yaml" +host: "localhost:8080" +protocol: http +db-type: sqlite +db-address: /mount/gts.db3 + +http-client: + allow-ips: ["0.0.0.0/0", "::/0"] + insecure-outgoing: true +EOF + +podman unshare \ + chown 1000:1000 -R $tmpdir + +container_id="$( + podman run \ + -d \ + --env "GTS_CONFIG_PATH=/mount/config.yaml" \ + -v "$tmpdir:/mount" \ + -p "8080:8080" \ + --network=host \ + "data.forgejo.org/oci/gotosocial:$GTS_VERSION" \ + server start +)" + +function wait_gts_ready() { + http_status=$(curl -s -w \ + "%{http_code}" -o /dev/null \ + "http://localhost:8080/" + ) + + [[ "$http_status" == 200 ]] && echo "ready" +} + +retry wait_gts_ready + +password="verysecurepassword" +podman exec -it "$container_id" /gotosocial/gotosocial admin \ + account create \ + --username "test" \ + --email "test@localhost" \ + --password "$password" + +cat << EOF > "$DIR/federation_scenario-gotosocial-env" +password="$password" +port="8080" +container_id="$container_id" +EOF + diff --git a/federation/scenario-gotosocial/teardown.sh b/federation/scenario-gotosocial/teardown.sh new file mode 100644 index 00000000..6e6d556a --- /dev/null +++ b/federation/scenario-gotosocial/teardown.sh @@ -0,0 +1,12 @@ +#!/usr/bin/env bash + +source "$DIR/federation_scenario-gotosocial-env" + +if [[ -z "$container_id" ]]; then + echo "gotosocial container ID not found, container may not be stopped" + exit 1 +fi + +podman stop "$container_id" +rm "$DIR/federation_scenario-gotosocial-env" + diff --git a/run.sh b/run.sh new file mode 100755 index 00000000..92a91611 --- /dev/null +++ b/run.sh @@ -0,0 +1,11 @@ +#!/usr/bin/env bash + +podman build -t forgejo-e2e . +patchelf ../forgejo/forgejo --set-interpreter /lib64/ld-linux-x86-64.so.2 +podman run \ + -it --privileged \ + -v ../forgejo/gitea:/srv/forgejo-binaries/forgejo-14.0 \ + -p 3001-3003:3001-3003 \ + -p 4000:4000 \ + -p 8080:8080 \ + forgejo-e2e From 0ddc6beceb3b20722256d14fd7103224520b7311 Mon Sep 17 00:00:00 2001 From: Renovate Bot Date: Sat, 10 Jan 2026 15:21:40 +0000 Subject: [PATCH 63/86] Update https://data.forgejo.org/actions/setup-forgejo action to v3.1.0 (#1402) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [https://data.forgejo.org/actions/setup-forgejo](https://code.forgejo.org/actions/setup-forgejo) | action | minor | `v3.0.7` → `v3.1.0` | --- ### Release Notes
actions/setup-forgejo (https://data.forgejo.org/actions/setup-forgejo) ### [`v3.1.0`](https://code.forgejo.org/actions/setup-forgejo/compare/v3.0.7...v3.1.0) [Compare Source](https://code.forgejo.org/actions/setup-forgejo/compare/v3.0.7...v3.1.0)
--- ### Configuration 📅 **Schedule**: Branch creation - Between 12:00 AM and 03:59 AM ( * 0-3 * * * ) (UTC), Automerge - Between 12:00 AM and 03:59 AM ( * 0-3 * * * ) (UTC). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Renovate Bot](https://github.com/renovatebot/renovate). Reviewed-on: https://code.forgejo.org/forgejo/end-to-end/pulls/1402 Reviewed-by: Mathieu Fenniak Co-authored-by: Renovate Bot Co-committed-by: Renovate Bot --- .forgejo/prepare-end-to-end/action.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.forgejo/prepare-end-to-end/action.yml b/.forgejo/prepare-end-to-end/action.yml index 3c1153c0..cd4b0f37 100644 --- a/.forgejo/prepare-end-to-end/action.yml +++ b/.forgejo/prepare-end-to-end/action.yml @@ -15,7 +15,7 @@ runs: /usr/local/bin/garage key: S3 - - uses: https://data.forgejo.org/actions/setup-forgejo@v3.0.7 + - uses: https://data.forgejo.org/actions/setup-forgejo@v3.1.0 with: install-only: true - run: forgejo-binary.sh ensure_user forgejo From 03ee700046df0332c6d6d7d94205836d74b911c0 Mon Sep 17 00:00:00 2001 From: Renovate Bot Date: Sun, 18 Jan 2026 15:20:42 +0000 Subject: [PATCH 64/86] Update https://data.forgejo.org/actions/setup-forgejo action to v3.1.1 (#1465) Reviewed-on: https://code.forgejo.org/forgejo/end-to-end/pulls/1465 Reviewed-by: Mathieu Fenniak Co-authored-by: Renovate Bot Co-committed-by: Renovate Bot --- .forgejo/prepare-end-to-end/action.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.forgejo/prepare-end-to-end/action.yml b/.forgejo/prepare-end-to-end/action.yml index cd4b0f37..1d41fa79 100644 --- a/.forgejo/prepare-end-to-end/action.yml +++ b/.forgejo/prepare-end-to-end/action.yml @@ -15,7 +15,7 @@ runs: /usr/local/bin/garage key: S3 - - uses: https://data.forgejo.org/actions/setup-forgejo@v3.1.0 + - uses: https://data.forgejo.org/actions/setup-forgejo@v3.1.1 with: install-only: true - run: forgejo-binary.sh ensure_user forgejo From 25c472b90bc1886a5d3c45770eb6196d1b833ccb Mon Sep 17 00:00:00 2001 From: Andreas Ahlenstorf Date: Sun, 18 Jan 2026 20:15:11 +0000 Subject: [PATCH 65/86] test: test cloning of private reusable workflows (#1436) Verify that Forgejo Runner can access a reusable workflow that is stored in a private repository. That should help prevent https://code.forgejo.org/forgejo/runner/issues/1274 from happening again. Reviewed-on: https://code.forgejo.org/forgejo/end-to-end/pulls/1436 Reviewed-by: Mathieu Fenniak Co-authored-by: Andreas Ahlenstorf Co-committed-by: Andreas Ahlenstorf --- actions/actions.sh | 2 +- .../.forgejo/workflows/reusable.yaml | 10 +++++ .../.forgejo/workflows/test.yaml | 11 +++++ actions/example-private-workflow-call/run.sh | 42 +++++++++++++++++++ .../example-private-workflow-call/setup.sh | 1 + 5 files changed, 65 insertions(+), 1 deletion(-) create mode 100644 actions/example-private-workflow-call/.forgejo/workflows/reusable.yaml create mode 100644 actions/example-private-workflow-call/.forgejo/workflows/test.yaml create mode 100644 actions/example-private-workflow-call/run.sh create mode 100644 actions/example-private-workflow-call/setup.sh diff --git a/actions/actions.sh b/actions/actions.sh index 1dc6b14e..f97fd8a5 100755 --- a/actions/actions.sh +++ b/actions/actions.sh @@ -143,7 +143,7 @@ function test_actions() { done fi - for example in echo matrix needs workflow-call lxc config-options cache cache-pull-request checkout service container expression local-action docker-action if if-fail push tag push-cancel artifacts pull-request context; do + for example in echo matrix needs workflow-call lxc config-options cache cache-pull-request checkout service container expression local-action docker-action if if-fail push tag push-cancel artifacts pull-request context private-workflow-call; do run actions_verify_example $example done diff --git a/actions/example-private-workflow-call/.forgejo/workflows/reusable.yaml b/actions/example-private-workflow-call/.forgejo/workflows/reusable.yaml new file mode 100644 index 00000000..48832449 --- /dev/null +++ b/actions/example-private-workflow-call/.forgejo/workflows/reusable.yaml @@ -0,0 +1,10 @@ +on: + workflow_call: + +jobs: + build: + runs-on: "docker" + container: + image: data.forgejo.org/oci/node:24-trixie + steps: + - run: echo 'OK' diff --git a/actions/example-private-workflow-call/.forgejo/workflows/test.yaml b/actions/example-private-workflow-call/.forgejo/workflows/test.yaml new file mode 100644 index 00000000..9bb279b3 --- /dev/null +++ b/actions/example-private-workflow-call/.forgejo/workflows/test.yaml @@ -0,0 +1,11 @@ +on: + push: + +jobs: + test: + # `runs-on` disables workflow expansion. We want that in this case, because then Forgejo Runner has to authenticate + # itself to access the reusable workflow. + runs-on: docker + container: + image: data.forgejo.org/oci/node:24-trixie + uses: ./.forgejo/workflows/reusable.yaml diff --git a/actions/example-private-workflow-call/run.sh b/actions/example-private-workflow-call/run.sh new file mode 100644 index 00000000..e71dc991 --- /dev/null +++ b/actions/example-private-workflow-call/run.sh @@ -0,0 +1,42 @@ +api="$url/api/v1" +export d=/srv/example/private-workflow-call + +function main() { + mkdir -p "$d" + + local repo + repo="root/example-$example" + + forgejo-test-helper.sh push_workflow "actions/example-$example" "$url" root "example-$example" setup-forgejo "$token" + + # push_workflow creates the repository and triggers a first workflow run. Wait for it to succeed. Ensures that the + # workflow is valid. + local sha + sha="$(forgejo-test-helper.sh branch_tip "$url" "$repo" main)" + forgejo-test-helper.sh wait_success "$url" "$repo" "$sha" + + # Make the repository private. That is necessary to verify that Forgejo Runner includes the correct credentials when + # cloning the workflow. + forgejo-curl.sh api_json -X PATCH --data-raw '{"private":true}' "$api/repos/root/example-$example" + + # Create a new commit that triggers a new workflow run that can be identified uniquely. + ( + cd "$d" || exit 1 + git clone "$url/root/example-$example" + cd "example-$example" || exit 1 + git config user.email root@example.com + git config user.name username + echo "A new file" > test.txt + git add . + git commit -m 'Commit a new file' + git push + ) + + # Wait for the workflow pulled from the private repository to succeed. + local new_sha + new_sha="$(forgejo-test-helper.sh branch_tip "$url" "$repo" main)" + [[ "$new_sha" != "$sha" ]] || exit 1 + forgejo-test-helper.sh wait_success "$url" "$repo" "$new_sha" +} + +main diff --git a/actions/example-private-workflow-call/setup.sh b/actions/example-private-workflow-call/setup.sh new file mode 100644 index 00000000..fd443948 --- /dev/null +++ b/actions/example-private-workflow-call/setup.sh @@ -0,0 +1 @@ +mkdir -p /srv/example/private-workflow-call From 372409f76b946f9fabed82d6154aa1dc841b8c93 Mon Sep 17 00:00:00 2001 From: Andreas Ahlenstorf Date: Mon, 19 Jan 2026 01:47:27 +0000 Subject: [PATCH 66/86] test: test offline runner registration (#1449) Reviewed-on: https://code.forgejo.org/forgejo/end-to-end/pulls/1449 Reviewed-by: Mathieu Fenniak Co-authored-by: Andreas Ahlenstorf Co-committed-by: Andreas Ahlenstorf --- actions/actions.sh | 2 +- .../.forgejo/workflows/test.yaml | 9 +++++ actions/example-create-runner-file/run.sh | 40 +++++++++++++++++++ .../runner-config.yaml | 31 ++++++++++++++ lib/lib.sh | 11 +++++ 5 files changed, 92 insertions(+), 1 deletion(-) create mode 100644 actions/example-create-runner-file/.forgejo/workflows/test.yaml create mode 100644 actions/example-create-runner-file/run.sh create mode 100644 actions/example-create-runner-file/runner-config.yaml diff --git a/actions/actions.sh b/actions/actions.sh index f97fd8a5..9ee52ef0 100755 --- a/actions/actions.sh +++ b/actions/actions.sh @@ -143,7 +143,7 @@ function test_actions() { done fi - for example in echo matrix needs workflow-call lxc config-options cache cache-pull-request checkout service container expression local-action docker-action if if-fail push tag push-cancel artifacts pull-request context private-workflow-call; do + for example in echo matrix needs workflow-call lxc config-options cache cache-pull-request checkout service container expression local-action docker-action if if-fail push tag push-cancel artifacts pull-request context private-workflow-call create-runner-file; do run actions_verify_example $example done diff --git a/actions/example-create-runner-file/.forgejo/workflows/test.yaml b/actions/example-create-runner-file/.forgejo/workflows/test.yaml new file mode 100644 index 00000000..e44397dd --- /dev/null +++ b/actions/example-create-runner-file/.forgejo/workflows/test.yaml @@ -0,0 +1,9 @@ +on: + push: + +jobs: + test: + runs-on: create-runner-file + steps: + - run: | + echo "OK" diff --git a/actions/example-create-runner-file/run.sh b/actions/example-create-runner-file/run.sh new file mode 100644 index 00000000..637132e5 --- /dev/null +++ b/actions/example-create-runner-file/run.sh @@ -0,0 +1,40 @@ +source "lib/lib.sh" + +api="$url/api/v1" + +function main() { + local repo + repo="root/example-$example" + + secret="$(openssl rand -hex 20)" + runner_name="runner-$(openssl rand -hex 5)" + + create_offline_registration_token "$runner_name" root "$secret" + + # Changing to $DIR is necessary so that `.runner` gets created there. Otherwise, `forgejo-runner` would not pick it up. + pushd "$DIR" || exit 1 + ./forgejo-runner -c "$EXAMPLE_DIR/runner-config.yaml" create-runner-file --instance "http://$IP:3000" --name "$runner_name" --secret "$secret" --connect + popd || exit 1 + + FORGEJO_RUNNER_CONFIG="$EXAMPLE_DIR/runner-config.yaml" forgejo-runner.sh reload + + label_count=$(jq '.labels | length ' "$DIR/.runner") + if [[ "$label_count" != "1" ]] ; then + echo "Unexpected number of labels in .runner file: $label_count instead of 1" >&2 + exit 1 + fi + + runner_label=$(jq -r '.labels[0]' "$DIR/.runner") + if [[ "$runner_label" != "create-runner-file:docker://code.forgejo.org/oci/node:24-trixie" ]] ; then + echo "Unexpected runner label: '$runner_label' instead of create-runner-file:docker://code.forgejo.org/oci/node:24-trixie" >&2 + exit 1 + fi + + forgejo-test-helper.sh push_workflow "actions/example-$example" "$url" root "example-$example" setup-forgejo "$token" + + local sha + sha="$(forgejo-test-helper.sh branch_tip "$url" "$repo" main)" + forgejo-test-helper.sh wait_success "$url" "$repo" "$sha" +} + +main diff --git a/actions/example-create-runner-file/runner-config.yaml b/actions/example-create-runner-file/runner-config.yaml new file mode 100644 index 00000000..7096728f --- /dev/null +++ b/actions/example-create-runner-file/runner-config.yaml @@ -0,0 +1,31 @@ + +log: + level: debug + +runner: + file: .runner + capacity: 1 + env_file: .env + timeout: 3h + insecure: false + fetch_timeout: 5s + fetch_interval: 2s + labels: + - "create-runner-file:docker://code.forgejo.org/oci/node:24-trixie" + +cache: + enabled: true + dir: "/srv/example/cache" + host: "" + port: 0 + +container: + network: "bridge" + privileged: false + options: + workdir_parent: + valid_volumes: ["/srv/example"] + docker_host: "" + +host: + workdir_parent: diff --git a/lib/lib.sh b/lib/lib.sh index 843c9b53..b1e9409f 100644 --- a/lib/lib.sh +++ b/lib/lib.sh @@ -415,6 +415,17 @@ EOF cp -a $DOT_FORGEJO_CURL $work_path/forgejo-curl } +function create_offline_registration_token() { + local name="$1" + local scope="$2" + local secret="$3" + + local work_path + work_path="$DIR/$(work_path_base "$config")" + + "$work_path/forgejocli" forgejo-cli actions register --name "$name" --scope "$scope" --secret "$secret" +} + function stop_daemon() { local daemon=$1 From e05f0b5bf84d471cf4b8ee1c3c67831815b73252 Mon Sep 17 00:00:00 2001 From: famfo Date: Mon, 19 Jan 2026 08:45:35 +0000 Subject: [PATCH 67/86] fix(federation): downgrade GoToSocial (#1448) Reviewed-on: https://code.forgejo.org/forgejo/end-to-end/pulls/1448 Reviewed-by: Michael Kriese Co-authored-by: famfo Co-committed-by: famfo --- federation/scenario-gotosocial/setup.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/federation/scenario-gotosocial/setup.sh b/federation/scenario-gotosocial/setup.sh index 13d97057..fcf9a432 100644 --- a/federation/scenario-gotosocial/setup.sh +++ b/federation/scenario-gotosocial/setup.sh @@ -2,7 +2,7 @@ source $SCENARIO_DIR/../../lib/lib.sh -GTS_VERSION="0.20.2" # renovate: datasource=docker depName=data.forgejo.org/oci/gotosocial +GTS_VERSION="0.20.0" # renovate: datasource=docker depName=data.forgejo.org/oci/gotosocial echo "setting up gotosocial" From b3299acd69207c9c0802d14988ff83e4337cba17 Mon Sep 17 00:00:00 2001 From: Mario Minardi Date: Thu, 22 Jan 2026 15:22:22 +0000 Subject: [PATCH 68/86] feat: add OIDC workload identity federation tests (#1364) Add end-to-end tests for workload identity federation. Depends on https://code.forgejo.org/forgejo/runner/pulls/1232 Depends on https://codeberg.org/forgejo/forgejo/pulls/10481 Signed-off-by: Mario Minardi Reviewed-on: https://code.forgejo.org/forgejo/end-to-end/pulls/1364 Reviewed-by: Michael Kriese Reviewed-by: Mathieu Fenniak Co-authored-by: Mario Minardi Co-committed-by: Mario Minardi --- actions/actions.sh | 1 + .../.forgejo/workflows/test.yml | 78 +++++++++++++++++++ 2 files changed, 79 insertions(+) create mode 100644 actions/example-id-tokens/.forgejo/workflows/test.yml diff --git a/actions/actions.sh b/actions/actions.sh index 9ee52ef0..0b200824 100755 --- a/actions/actions.sh +++ b/actions/actions.sh @@ -183,6 +183,7 @@ function test_actions() { if dpkg --compare-versions $version ge 15.0; then run actions_verify_example workflow-call-expansion + run actions_verify_example id-tokens fi done } diff --git a/actions/example-id-tokens/.forgejo/workflows/test.yml b/actions/example-id-tokens/.forgejo/workflows/test.yml new file mode 100644 index 00000000..31c49156 --- /dev/null +++ b/actions/example-id-tokens/.forgejo/workflows/test.yml @@ -0,0 +1,78 @@ +on: [push] + +env: + JWT_CLI_VERSION: 6.2.0 # renovate: datasource=github-releases depName=jwt-cli packageName=mike-engel/jwt-cli + +jobs: + generation-allowed: + enable-openid-connect: true + runs-on: docker + container: + image: data.forgejo.org/oci/ci:1 + steps: + - run: curl -L -o jwt-linux.tar.gz https://github.com/mike-engel/jwt-cli/releases/download/${{ env.JWT_CLI_VERSION }}/jwt-linux-musl.tar.gz && tar -xvzf ./jwt-linux.tar.gz && chmod a+x ./jwt + - name: validate token generation works + run: | + RAW_JWT=$(curl -H "Authorization: Bearer $ACTIONS_ID_TOKEN_REQUEST_TOKEN" "$ACTIONS_ID_TOKEN_REQUEST_URL&audience=exampleAudience" | jq -r ".value") + if [[ -z "RAW_JWT" ]]; then + echo "Error: RAW_JWT should be set" + exit 1 + fi + + DECODED_JWT_BODY=$(echo $RAW_JWT | jq -R 'split(".") | .[1] | @base64d | fromjson') + if [[ -z "$DECODED_JWT_BODY" ]]; then + echo "Error: DECODED_JWT_BODY should be set" + exit 1 + fi + + ISS=$(echo $DECODED_JWT_BODY | jq -r '.iss') + if [[ -z "$ISS" ]]; then + echo "Error: ISS should be set" + exit 1 + fi + + curl "$ISS/.well-known/keys" > jwks.json + JWKS=$(cat ./jwks.json) + if [[ -z "$JWKS" ]]; then + echo "Error: JWKS should be set" + exit 1 + fi + + # Verify that the JWT decodes with the JWKS data + ./jwt decode -S @./jwks.json -A RS256 $RAW_JWT || (echo "Error: failed signature validation" && exit 1) + + WORKFLOW=$(echo $DECODED_JWT_BODY | jq -r '.workflow') + AUD=$(echo $DECODED_JWT_BODY | jq -r '.aud') + EVENT_NAME=$(echo $DECODED_JWT_BODY | jq -r '.event_name') + SUB=$(echo $DECODED_JWT_BODY | jq -r '.sub') + if [[ "$WORKFLOW" != "test.yml" ]]; then + echo "Error: WORKFLOW should be test.yml but is $WORKFLOW" + exit 1 + fi + if [[ "$AUD" != "exampleAudience" ]]; then + echo "Error: AUD should be exampleAudience but is $AUD" + exit 1 + fi + if [[ "$EVENT_NAME" != "push" ]]; then + echo "Error: EVENT_NAME should be push but is $EVENT_NAME" + exit 1 + fi + if [[ "$SUB" != "repo:root/example-id-tokens:ref:refs/heads/main" ]]; then + echo "Error: SUB should be repo:root/example-id-tokens:ref:refs/heads/main but is $SUB" + exit 1 + fi + + generation-not-allowed: + enable-openid-connect: false + runs-on: docker + steps: + - name: check variables are unset + run: | + if [[ -n "$ACTIONS_ID_TOKEN_REQUEST_TOKEN" ]]; then + echo "Error: ACTIONS_ID_TOKEN_REQUEST_TOKEN should be unset" + exit 1 + fi + if [[ -n "$ACTIONS_ID_TOKEN_REQUEST_URL" ]]; then + echo "Error: ACTIONS_ID_TOKEN_REQUEST_TOKEN should be unset" + exit 1 + fi From 47a8f5147b333c91edcd6ab491c0a646669b2502 Mon Sep 17 00:00:00 2001 From: Renovate Bot Date: Fri, 23 Jan 2026 09:08:34 +0000 Subject: [PATCH 69/86] Replace code.forgejo.org/federation/mastodon Docker tag with data.forgejo.org/federation/mastodon v4.5-test (#1489) Reviewed-on: https://code.forgejo.org/forgejo/end-to-end/pulls/1489 Reviewed-by: Michael Kriese Co-authored-by: Renovate Bot Co-committed-by: Renovate Bot --- federation/scenario-mastodon/compose.yaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/federation/scenario-mastodon/compose.yaml b/federation/scenario-mastodon/compose.yaml index 0a39c17e..47f242e3 100644 --- a/federation/scenario-mastodon/compose.yaml +++ b/federation/scenario-mastodon/compose.yaml @@ -56,7 +56,7 @@ services: mastodon-app: # built from https://code.forgejo.org/federation/build-mastodon/src/branch/main/mastodon-containerfile - image: code.forgejo.org/federation/mastodon:v4.5-test + image: data.forgejo.org/federation/mastodon:v4.5-test volumes: - ./resources/certs:/usr/local/share/ca-certificates/ - ./mastodon-app/init/:/init/ @@ -84,7 +84,7 @@ services: mastodon-sidekiq: # built from https://code.forgejo.org/federation/build-mastodon/src/branch/main/mastodon-containerfile - image: code.forgejo.org/federation/mastodon:v4.5-test + image: data.forgejo.org/federation/mastodon:v4.5-test volumes: - ./resources/certs:/usr/local/share/ca-certificates/ - ./mastodon-sidekiq/init/:/init/ From 6821a5adb5d5b31cea9b6b2424b7fb7922f87ae2 Mon Sep 17 00:00:00 2001 From: Renovate Bot Date: Sat, 24 Jan 2026 02:43:17 +0000 Subject: [PATCH 70/86] Update https://data.forgejo.org/actions/setup-forgejo action to v3.1.2 (#1505) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [https://data.forgejo.org/actions/setup-forgejo](https://code.forgejo.org/actions/setup-forgejo) | action | patch | `v3.1.1` → `v3.1.2` | --- ### Release Notes
actions/setup-forgejo (https://data.forgejo.org/actions/setup-forgejo) ### [`v3.1.2`](https://code.forgejo.org/actions/setup-forgejo/releases/tag/v3.1.2) [Compare Source](https://code.forgejo.org/actions/setup-forgejo/compare/v3.1.1...v3.1.2) - other - [PR](https://code.forgejo.org/actions/setup-forgejo/pulls/852): Update dependency forgejo/runner to v12.6.1 - [PR](https://code.forgejo.org/actions/setup-forgejo/pulls/846): Update dependency forgejo/runner to v12.6.0
--- ### Configuration 📅 **Schedule**: Branch creation - Between 12:00 AM and 03:59 AM ( * 0-3 * * * ) (UTC), Automerge - Between 12:00 AM and 03:59 AM ( * 0-3 * * * ) (UTC). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Renovate Bot](https://github.com/renovatebot/renovate). Reviewed-on: https://code.forgejo.org/forgejo/end-to-end/pulls/1505 Reviewed-by: Mathieu Fenniak Co-authored-by: Renovate Bot Co-committed-by: Renovate Bot --- .forgejo/prepare-end-to-end/action.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.forgejo/prepare-end-to-end/action.yml b/.forgejo/prepare-end-to-end/action.yml index 1d41fa79..fab4de3c 100644 --- a/.forgejo/prepare-end-to-end/action.yml +++ b/.forgejo/prepare-end-to-end/action.yml @@ -15,7 +15,7 @@ runs: /usr/local/bin/garage key: S3 - - uses: https://data.forgejo.org/actions/setup-forgejo@v3.1.1 + - uses: https://data.forgejo.org/actions/setup-forgejo@v3.1.2 with: install-only: true - run: forgejo-binary.sh ensure_user forgejo From 736c1dd909ed99ddbe056656589f1830bfde3abc Mon Sep 17 00:00:00 2001 From: Renovate Bot Date: Mon, 26 Jan 2026 04:02:25 +0000 Subject: [PATCH 71/86] Update https://data.forgejo.org/actions/setup-forgejo action to v3.1.3 (#1515) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [https://data.forgejo.org/actions/setup-forgejo](https://code.forgejo.org/actions/setup-forgejo) | action | patch | `v3.1.2` → `v3.1.3` | --- ### Release Notes
actions/setup-forgejo (https://data.forgejo.org/actions/setup-forgejo) ### [`v3.1.3`](https://code.forgejo.org/actions/setup-forgejo/releases/tag/v3.1.3) [Compare Source](https://code.forgejo.org/actions/setup-forgejo/compare/v3.1.2...v3.1.3) - other - [PR](https://code.forgejo.org/actions/setup-forgejo/pulls/860): Update dependency forgejo/runner to v12.6.2
--- ### Configuration 📅 **Schedule**: Branch creation - Between 12:00 AM and 03:59 AM ( * 0-3 * * * ) (UTC), Automerge - Between 12:00 AM and 03:59 AM ( * 0-3 * * * ) (UTC). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Renovate Bot](https://github.com/renovatebot/renovate). Reviewed-on: https://code.forgejo.org/forgejo/end-to-end/pulls/1515 Reviewed-by: Mathieu Fenniak Co-authored-by: Renovate Bot Co-committed-by: Renovate Bot --- .forgejo/prepare-end-to-end/action.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.forgejo/prepare-end-to-end/action.yml b/.forgejo/prepare-end-to-end/action.yml index fab4de3c..a26695dd 100644 --- a/.forgejo/prepare-end-to-end/action.yml +++ b/.forgejo/prepare-end-to-end/action.yml @@ -15,7 +15,7 @@ runs: /usr/local/bin/garage key: S3 - - uses: https://data.forgejo.org/actions/setup-forgejo@v3.1.2 + - uses: https://data.forgejo.org/actions/setup-forgejo@v3.1.3 with: install-only: true - run: forgejo-binary.sh ensure_user forgejo From 390c68f447e2d494de18332f106afb836b391856 Mon Sep 17 00:00:00 2001 From: Renovate Bot Date: Mon, 26 Jan 2026 21:17:01 +0000 Subject: [PATCH 72/86] Replace code.forgejo.org/oci/python Docker tag with data.forgejo.org/oci/python slim (#1497) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | code.forgejo.org/oci/python → data.forgejo.org/oci/python | container | replacement | `slim` → `slim` | This is a special PR that replaces `code.forgejo.org/oci/python` with the community suggested minimal stable replacement version. --- ### Configuration 📅 **Schedule**: Branch creation - "" (UTC), Automerge - Between 12:00 AM and 03:59 AM ( * 0-3 * * * ) (UTC). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Renovate Bot](https://github.com/renovatebot/renovate). Reviewed-on: https://code.forgejo.org/forgejo/end-to-end/pulls/1497 Reviewed-by: Mathieu Fenniak Co-authored-by: Renovate Bot Co-committed-by: Renovate Bot --- actions/example-shell/.forgejo/workflows/test.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/actions/example-shell/.forgejo/workflows/test.yml b/actions/example-shell/.forgejo/workflows/test.yml index cede5140..71f098ab 100644 --- a/actions/example-shell/.forgejo/workflows/test.yml +++ b/actions/example-shell/.forgejo/workflows/test.yml @@ -47,7 +47,7 @@ jobs: needs: [alpine] runs-on: docker container: - image: code.forgejo.org/oci/python:slim + image: data.forgejo.org/oci/python:slim steps: - name: python => python {0} shell: python From d4dfeef16a87a5a46c0f68ec38585663b1d8831a Mon Sep 17 00:00:00 2001 From: Renovate Bot Date: Mon, 26 Jan 2026 21:43:39 +0000 Subject: [PATCH 73/86] Replace code.forgejo.org/oci/postgres Docker tag with data.forgejo.org/oci/postgres (#1496) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [code.forgejo.org/oci/postgres](https://hub.docker.com/_/postgres) ([source](https://github.com/docker-library/postgres)) → [data.forgejo.org/oci/postgres](https://hub.docker.com/_/postgres) | service | replacement | `15` → `15` | | [code.forgejo.org/oci/postgres](https://hub.docker.com/_/postgres) ([source](https://github.com/docker-library/postgres)) → [data.forgejo.org/oci/postgres](https://hub.docker.com/_/postgres) | | replacement | `14` → `14` | This is a special PR that replaces `code.forgejo.org/oci/postgres` with the community suggested minimal stable replacement version. --- ### Configuration 📅 **Schedule**: Branch creation - "" (UTC), Automerge - Between 12:00 AM and 03:59 AM ( * 0-3 * * * ) (UTC). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about these updates again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Renovate Bot](https://github.com/renovatebot/renovate). Reviewed-on: https://code.forgejo.org/forgejo/end-to-end/pulls/1496 Reviewed-by: Mathieu Fenniak Co-authored-by: Renovate Bot Co-committed-by: Renovate Bot --- actions/example-service/.forgejo/workflows/test.yml | 4 ++-- federation/scenario-mastodon/compose.yaml | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/actions/example-service/.forgejo/workflows/test.yml b/actions/example-service/.forgejo/workflows/test.yml index 1eeb3ec5..aa39890c 100644 --- a/actions/example-service/.forgejo/workflows/test.yml +++ b/actions/example-service/.forgejo/workflows/test.yml @@ -8,7 +8,7 @@ jobs: runs-on: docker services: pgsql: - image: code.forgejo.org/oci/postgres:15 + image: data.forgejo.org/oci/postgres:15 env: POSTGRES_DB: test POSTGRES_PASSWORD: postgres @@ -27,7 +27,7 @@ jobs: services: pgsql: - image: code.forgejo.org/oci/postgres:15 + image: data.forgejo.org/oci/postgres:15 env: POSTGRES_DB: test POSTGRES_PASSWORD: postgres diff --git a/federation/scenario-mastodon/compose.yaml b/federation/scenario-mastodon/compose.yaml index 47f242e3..54d937ce 100644 --- a/federation/scenario-mastodon/compose.yaml +++ b/federation/scenario-mastodon/compose.yaml @@ -36,7 +36,7 @@ services: - internal_network postgres: - image: code.forgejo.org/oci/postgres:14 + image: data.forgejo.org/oci/postgres:14 tmpfs: - /var/lib/postgresql/data environment: From cd91235a8652dd70302a0b6c7d64dabc3755e02c Mon Sep 17 00:00:00 2001 From: Renovate Bot Date: Mon, 26 Jan 2026 21:44:02 +0000 Subject: [PATCH 74/86] Replace code.forgejo.org/oci/docker Docker tag with data.forgejo.org/oci/docker (#1494) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [code.forgejo.org/oci/docker](https://hub.docker.com/_/docker) ([source](https://github.com/docker-library/docker)) → [data.forgejo.org/oci/docker](https://hub.docker.com/_/docker) | container | replacement | `28-cli` → `28-cli` | This is a special PR that replaces `code.forgejo.org/oci/docker` with the community suggested minimal stable replacement version. --- ### Configuration 📅 **Schedule**: Branch creation - "" (UTC), Automerge - Between 12:00 AM and 03:59 AM ( * 0-3 * * * ) (UTC). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Renovate Bot](https://github.com/renovatebot/renovate). Reviewed-on: https://code.forgejo.org/forgejo/end-to-end/pulls/1494 Reviewed-by: Mathieu Fenniak Co-authored-by: Renovate Bot Co-committed-by: Renovate Bot --- actions/example-with-docker-host/.forgejo/workflows/test.yml | 2 +- actions/example-with-docker-socket/.forgejo/workflows/test.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/actions/example-with-docker-host/.forgejo/workflows/test.yml b/actions/example-with-docker-host/.forgejo/workflows/test.yml index 277114e6..454a10da 100644 --- a/actions/example-with-docker-host/.forgejo/workflows/test.yml +++ b/actions/example-with-docker-host/.forgejo/workflows/test.yml @@ -4,7 +4,7 @@ jobs: build: runs-on: docker container: - image: code.forgejo.org/oci/docker:28-cli + image: data.forgejo.org/oci/docker:28-cli steps: - run: ls -l /var/run/docker.sock - run: docker ps diff --git a/actions/example-with-docker-socket/.forgejo/workflows/test.yml b/actions/example-with-docker-socket/.forgejo/workflows/test.yml index 277114e6..454a10da 100644 --- a/actions/example-with-docker-socket/.forgejo/workflows/test.yml +++ b/actions/example-with-docker-socket/.forgejo/workflows/test.yml @@ -4,7 +4,7 @@ jobs: build: runs-on: docker container: - image: code.forgejo.org/oci/docker:28-cli + image: data.forgejo.org/oci/docker:28-cli steps: - run: ls -l /var/run/docker.sock - run: docker ps From ed965a3179b863499fcd7cdf635370c0ba9d4e16 Mon Sep 17 00:00:00 2001 From: Renovate Bot Date: Mon, 26 Jan 2026 21:44:43 +0000 Subject: [PATCH 75/86] Replace code.forgejo.org/oci/debian Docker tag with data.forgejo.org/oci/debian trixie (#1493) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | code.forgejo.org/oci/debian → data.forgejo.org/oci/debian | container | replacement | `trixie` → `trixie` | | code.forgejo.org/oci/debian → data.forgejo.org/oci/debian | service | replacement | `trixie` → `trixie` | This is a special PR that replaces `code.forgejo.org/oci/debian` with the community suggested minimal stable replacement version. --- ### Configuration 📅 **Schedule**: Branch creation - "" (UTC), Automerge - Between 12:00 AM and 03:59 AM ( * 0-3 * * * ) (UTC). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about these updates again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Renovate Bot](https://github.com/renovatebot/renovate). Reviewed-on: https://code.forgejo.org/forgejo/end-to-end/pulls/1493 Reviewed-by: Mathieu Fenniak Co-authored-by: Renovate Bot Co-committed-by: Renovate Bot --- actions/example-cron/.forgejo/workflows/test.yml | 2 +- .../example-post-7-0-schedule/.forgejo/workflows/test.yml | 2 +- .../.forgejo/workflows/schedule_continue.yml | 2 +- actions/example-service/.forgejo/workflows/test.yml | 8 ++++---- .../example-workflow-dispatch/.forgejo/workflows/test.yml | 2 +- 5 files changed, 8 insertions(+), 8 deletions(-) diff --git a/actions/example-cron/.forgejo/workflows/test.yml b/actions/example-cron/.forgejo/workflows/test.yml index 8b23779a..58ae70a6 100644 --- a/actions/example-cron/.forgejo/workflows/test.yml +++ b/actions/example-cron/.forgejo/workflows/test.yml @@ -6,7 +6,7 @@ jobs: test: runs-on: docker container: - image: code.forgejo.org/oci/debian:trixie + image: data.forgejo.org/oci/debian:trixie options: "--volume /srv/example:/srv/example" steps: diff --git a/actions/example-post-7-0-schedule/.forgejo/workflows/test.yml b/actions/example-post-7-0-schedule/.forgejo/workflows/test.yml index 202382dc..94eb4961 100644 --- a/actions/example-post-7-0-schedule/.forgejo/workflows/test.yml +++ b/actions/example-post-7-0-schedule/.forgejo/workflows/test.yml @@ -6,7 +6,7 @@ jobs: test: runs-on: ${{ vars.TEST_SCHEDULE_RUNSON }} container: - image: code.forgejo.org/oci/debian:trixie + image: data.forgejo.org/oci/debian:trixie options: "--volume /srv/example:/srv/example" steps: diff --git a/actions/example-schedule-noncancel/.forgejo/workflows/schedule_continue.yml b/actions/example-schedule-noncancel/.forgejo/workflows/schedule_continue.yml index 76ee59b8..7cc5bdb3 100644 --- a/actions/example-schedule-noncancel/.forgejo/workflows/schedule_continue.yml +++ b/actions/example-schedule-noncancel/.forgejo/workflows/schedule_continue.yml @@ -5,7 +5,7 @@ jobs: test: runs-on: docker container: - image: code.forgejo.org/oci/debian:trixie + image: data.forgejo.org/oci/debian:trixie volumes: - /srv/example:/srv/example steps: diff --git a/actions/example-service/.forgejo/workflows/test.yml b/actions/example-service/.forgejo/workflows/test.yml index aa39890c..11132c96 100644 --- a/actions/example-service/.forgejo/workflows/test.yml +++ b/actions/example-service/.forgejo/workflows/test.yml @@ -23,7 +23,7 @@ jobs: simple: runs-on: docker container: - image: code.forgejo.org/oci/debian:trixie + image: data.forgejo.org/oci/debian:trixie services: pgsql: @@ -43,7 +43,7 @@ jobs: needs: [simple] runs-on: docker container: - image: code.forgejo.org/oci/debian:trixie + image: data.forgejo.org/oci/debian:trixie options: "--volume /srv/example-service-volume-valid:/srv/example-service-volume-valid --volume /srv/example-service-volume-invalid:/srv/example-service-volume-invalid" steps: @@ -58,12 +58,12 @@ jobs: needs: [volume-on-step] runs-on: docker container: - image: code.forgejo.org/oci/debian:trixie + image: data.forgejo.org/oci/debian:trixie options: "--volume /srv/example-service-volume-valid:/srv/example-service-volume-valid" services: myservice: - image: code.forgejo.org/oci/debian:trixie + image: data.forgejo.org/oci/debian:trixie options: "--volume /srv/example-service-volume-valid:/srv/example-service-volume-valid" cmd: ["bash", "-c", "echo -n SUCCESS > /srv/example-service-volume-valid ; sleep infinity"] diff --git a/actions/example-workflow-dispatch/.forgejo/workflows/test.yml b/actions/example-workflow-dispatch/.forgejo/workflows/test.yml index 766b21d8..3839f7b5 100644 --- a/actions/example-workflow-dispatch/.forgejo/workflows/test.yml +++ b/actions/example-workflow-dispatch/.forgejo/workflows/test.yml @@ -44,7 +44,7 @@ jobs: test: runs-on: docker container: - image: code.forgejo.org/oci/debian:trixie + image: data.forgejo.org/oci/debian:trixie options: "--volume /srv/example:/srv/example" steps: From 5cbe4d73dd9155f9d7226dacb5336b5748320357 Mon Sep 17 00:00:00 2001 From: Renovate Bot Date: Mon, 26 Jan 2026 21:46:01 +0000 Subject: [PATCH 76/86] Replace alpine packages with data.forgejo.org/oci/alpine latest (#1490) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | code.forgejo.org/oci/alpine → data.forgejo.org/oci/alpine | container | replacement | `latest` → `latest` | | [code.forgejo.org/oci/alpine](https://hub.docker.com/_/alpine) ([source](https://github.com/alpinelinux/docker-alpine)) → [data.forgejo.org/oci/alpine](https://hub.docker.com/_/alpine) | container | replacement | `3.21` → `3.21` | | code.forgejo.org/oci/alpine → data.forgejo.org/oci/alpine | | replacement | `latest` → `latest` | This is a special PR that replaces `code.forgejo.org/oci/alpine` with the community suggested minimal stable replacement version. --- ### Configuration 📅 **Schedule**: Branch creation - "" (UTC), Automerge - Between 12:00 AM and 03:59 AM ( * 0-3 * * * ) (UTC). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about these updates again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Renovate Bot](https://github.com/renovatebot/renovate). Reviewed-on: https://code.forgejo.org/forgejo/end-to-end/pulls/1490 Reviewed-by: Mathieu Fenniak Co-authored-by: Renovate Bot Co-committed-by: Renovate Bot --- actions/example-container/.forgejo/workflows/test.yml | 2 +- actions/example-shell/.forgejo/workflows/test.yml | 2 +- federation/scenario-mastodon/compose.yaml | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/actions/example-container/.forgejo/workflows/test.yml b/actions/example-container/.forgejo/workflows/test.yml index ded75cd8..aad6cb73 100644 --- a/actions/example-container/.forgejo/workflows/test.yml +++ b/actions/example-container/.forgejo/workflows/test.yml @@ -3,6 +3,6 @@ jobs: test: runs-on: docker container: - image: code.forgejo.org/oci/alpine:3.21 + image: data.forgejo.org/oci/alpine:3.21 steps: - run: grep Alpine /etc/os-release diff --git a/actions/example-shell/.forgejo/workflows/test.yml b/actions/example-shell/.forgejo/workflows/test.yml index 71f098ab..5dad0b6e 100644 --- a/actions/example-shell/.forgejo/workflows/test.yml +++ b/actions/example-shell/.forgejo/workflows/test.yml @@ -25,7 +25,7 @@ jobs: needs: [sh-fallback] runs-on: docker container: - image: code.forgejo.org/oci/alpine:latest + image: data.forgejo.org/oci/alpine:latest steps: - name: default is bash but with a fallback to sh in case it does not exist run: | diff --git a/federation/scenario-mastodon/compose.yaml b/federation/scenario-mastodon/compose.yaml index 54d937ce..fbd7c20d 100644 --- a/federation/scenario-mastodon/compose.yaml +++ b/federation/scenario-mastodon/compose.yaml @@ -5,7 +5,7 @@ networks: services: forgejo: - image: code.forgejo.org/oci/alpine:latest + image: data.forgejo.org/oci/alpine:latest volumes: - ./forgejo/certs/:/usr/local/share/ca-certificates/ - ./forgejo/init/:/init/ From d50ffce2a0010b271d20b9654693d709fd895df2 Mon Sep 17 00:00:00 2001 From: Renovate Bot Date: Tue, 27 Jan 2026 03:04:58 +0000 Subject: [PATCH 77/86] Update data.forgejo.org/oci/alpine Docker tag to v3.23 (#1518) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [data.forgejo.org/oci/alpine](https://hub.docker.com/_/alpine) ([source](https://github.com/alpinelinux/docker-alpine)) | container | minor | `3.21` → `3.23` | --- ### Configuration 📅 **Schedule**: Branch creation - Between 12:00 AM and 03:59 AM ( * 0-3 * * * ) (UTC), Automerge - Between 12:00 AM and 03:59 AM ( * 0-3 * * * ) (UTC). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Renovate Bot](https://github.com/renovatebot/renovate). Reviewed-on: https://code.forgejo.org/forgejo/end-to-end/pulls/1518 Reviewed-by: Mathieu Fenniak Co-authored-by: Renovate Bot Co-committed-by: Renovate Bot --- actions/example-container/.forgejo/workflows/test.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/actions/example-container/.forgejo/workflows/test.yml b/actions/example-container/.forgejo/workflows/test.yml index aad6cb73..ecf04290 100644 --- a/actions/example-container/.forgejo/workflows/test.yml +++ b/actions/example-container/.forgejo/workflows/test.yml @@ -3,6 +3,6 @@ jobs: test: runs-on: docker container: - image: data.forgejo.org/oci/alpine:3.21 + image: data.forgejo.org/oci/alpine:3.23 steps: - run: grep Alpine /etc/os-release From de9eafb57450f198004619fbce1df815b5f04be0 Mon Sep 17 00:00:00 2001 From: Renovate Bot Date: Fri, 30 Jan 2026 05:55:18 +0000 Subject: [PATCH 78/86] Update https://data.forgejo.org/actions/setup-forgejo action to v3.1.4 (#1536) Reviewed-on: https://code.forgejo.org/forgejo/end-to-end/pulls/1536 Co-authored-by: Renovate Bot Co-committed-by: Renovate Bot --- .forgejo/prepare-end-to-end/action.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.forgejo/prepare-end-to-end/action.yml b/.forgejo/prepare-end-to-end/action.yml index a26695dd..bdb69f96 100644 --- a/.forgejo/prepare-end-to-end/action.yml +++ b/.forgejo/prepare-end-to-end/action.yml @@ -15,7 +15,7 @@ runs: /usr/local/bin/garage key: S3 - - uses: https://data.forgejo.org/actions/setup-forgejo@v3.1.3 + - uses: https://data.forgejo.org/actions/setup-forgejo@v3.1.4 with: install-only: true - run: forgejo-binary.sh ensure_user forgejo From 35a7a26227acecca7e686720a4b31c9eaa298cf7 Mon Sep 17 00:00:00 2001 From: Renovate Bot Date: Fri, 30 Jan 2026 05:55:37 +0000 Subject: [PATCH 79/86] Replace code.forgejo.org/oci/redis Docker tag with data.forgejo.org/oci/redis 7.2 (#1498) Reviewed-on: https://code.forgejo.org/forgejo/end-to-end/pulls/1498 Co-authored-by: Renovate Bot Co-committed-by: Renovate Bot --- federation/scenario-mastodon/compose.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/federation/scenario-mastodon/compose.yaml b/federation/scenario-mastodon/compose.yaml index fbd7c20d..655585be 100644 --- a/federation/scenario-mastodon/compose.yaml +++ b/federation/scenario-mastodon/compose.yaml @@ -48,7 +48,7 @@ services: - internal_network redis: - image: code.forgejo.org/oci/redis:7.2 + image: data.forgejo.org/oci/redis:7.2 tmpfs: - /var/lib/redis/ networks: From be5b4438faf65a7bb650af083b5cf5c11eec4a0b Mon Sep 17 00:00:00 2001 From: Renovate Bot Date: Fri, 30 Jan 2026 05:55:51 +0000 Subject: [PATCH 80/86] Replace code.forgejo.org/federation/debian Docker tag with data.forgejo.org/federation/debian trixie-cacerts (#1495) Reviewed-on: https://code.forgejo.org/forgejo/end-to-end/pulls/1495 Co-authored-by: Renovate Bot Co-committed-by: Renovate Bot --- federation/scenario-mastodon/compose.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/federation/scenario-mastodon/compose.yaml b/federation/scenario-mastodon/compose.yaml index 655585be..ea7c28a6 100644 --- a/federation/scenario-mastodon/compose.yaml +++ b/federation/scenario-mastodon/compose.yaml @@ -20,7 +20,7 @@ services: profiles: - forgejo_container # built from https://code.forgejo.org/federation/build-mastodon/src/branch/main/debian-containerfile - image: code.forgejo.org/federation/debian:trixie-cacerts + image: data.forgejo.org/federation/debian:trixie-cacerts tmpfs: - /data volumes: From 83c2cbcfad793688c0f4df496f8494a987c58b4b Mon Sep 17 00:00:00 2001 From: viceice Date: Thu, 19 Feb 2026 10:57:55 +0000 Subject: [PATCH 81/86] chore(renovate): separate test actions (#1595) Reviewed-on: https://code.forgejo.org/forgejo/end-to-end/pulls/1595 Co-authored-by: viceice Co-committed-by: viceice --- renovate.json | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/renovate.json b/renovate.json index cd7ea572..17dfc86a 100644 --- a/renovate.json +++ b/renovate.json @@ -2,5 +2,13 @@ "$schema": "https://docs.renovatebot.com/renovate-schema.json", "extends": [ "local>forgejo/renovate-config" + ], + "packagesRules": [ + { + "description": "Separate test actions", + "matchFileNames": ["actions/**"], + "additionalBranchPrefix": "actions", + "commitMessageTopic": "{{depName}} (test actions)" + } ] } From ea59d6dbabb5e0cc0bffd05fdccfb2c417a9debc Mon Sep 17 00:00:00 2001 From: Renovate Bot Date: Thu, 19 Feb 2026 10:58:31 +0000 Subject: [PATCH 82/86] Update https://data.forgejo.org/actions/setup-forgejo action to v3.1.6 (#1591) Reviewed-on: https://code.forgejo.org/forgejo/end-to-end/pulls/1591 Co-authored-by: Renovate Bot Co-committed-by: Renovate Bot --- .forgejo/prepare-end-to-end/action.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.forgejo/prepare-end-to-end/action.yml b/.forgejo/prepare-end-to-end/action.yml index bdb69f96..8ae5cdd8 100644 --- a/.forgejo/prepare-end-to-end/action.yml +++ b/.forgejo/prepare-end-to-end/action.yml @@ -15,7 +15,7 @@ runs: /usr/local/bin/garage key: S3 - - uses: https://data.forgejo.org/actions/setup-forgejo@v3.1.4 + - uses: https://data.forgejo.org/actions/setup-forgejo@v3.1.6 with: install-only: true - run: forgejo-binary.sh ensure_user forgejo From 68e5105bfefa98f688f1bc7424fa4cd812d8b3f3 Mon Sep 17 00:00:00 2001 From: viceice Date: Thu, 19 Feb 2026 11:00:40 +0000 Subject: [PATCH 83/86] chore(renovate): typo --- renovate.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/renovate.json b/renovate.json index 17dfc86a..6b4cadc2 100644 --- a/renovate.json +++ b/renovate.json @@ -3,7 +3,7 @@ "extends": [ "local>forgejo/renovate-config" ], - "packagesRules": [ + "packageRules": [ { "description": "Separate test actions", "matchFileNames": ["actions/**"], From 1b43342fa00eb0a56267b0d086622655cce4fa80 Mon Sep 17 00:00:00 2001 From: Renovate Bot Date: Thu, 19 Feb 2026 14:26:22 +0000 Subject: [PATCH 84/86] Update dependency go to v1.25 (#1597) Reviewed-on: https://code.forgejo.org/forgejo/end-to-end/pulls/1597 Reviewed-by: Michael Kriese Co-authored-by: Renovate Bot Co-committed-by: Renovate Bot --- .forgejo/workflows/end-to-end.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.forgejo/workflows/end-to-end.yml b/.forgejo/workflows/end-to-end.yml index 3921e400..3d7c59a6 100644 --- a/.forgejo/workflows/end-to-end.yml +++ b/.forgejo/workflows/end-to-end.yml @@ -23,7 +23,7 @@ jobs: - uses: https://data.forgejo.org/actions/checkout@v4 - uses: https://data.forgejo.org/actions/setup-go@v5 with: - go-version: "1.22" + go-version: "1.25" - name: lib/build.sh id: build run: | From d0470cb8eab4f2d941fa38bbd53a3f0c793ee88e Mon Sep 17 00:00:00 2001 From: Renovate Bot Date: Fri, 20 Feb 2026 11:53:05 +0000 Subject: [PATCH 85/86] Update Node.js to v24 (#1594) Reviewed-on: https://code.forgejo.org/forgejo/end-to-end/pulls/1594 Reviewed-by: Michael Kriese Co-authored-by: Renovate Bot Co-committed-by: Renovate Bot --- .forgejo/workflows/end-to-end.yml | 2 +- Dockerfile | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.forgejo/workflows/end-to-end.yml b/.forgejo/workflows/end-to-end.yml index 3d7c59a6..d5d877f6 100644 --- a/.forgejo/workflows/end-to-end.yml +++ b/.forgejo/workflows/end-to-end.yml @@ -15,7 +15,7 @@ jobs: build: runs-on: docker container: - image: 'data.forgejo.org/oci/node:20-bookworm' + image: 'data.forgejo.org/oci/node:24-bookworm' outputs: built: "${{ steps.build.outputs.built }}" forgejo_versions_json: "${{ steps.build.outputs.forgejo_versions_json }}" diff --git a/Dockerfile b/Dockerfile index 781aa497..e31cb6d8 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,4 +1,4 @@ -FROM data.forgejo.org/oci/node:22-trixie +FROM data.forgejo.org/oci/node:24-trixie ENV PATH=$PATH:/setup-forgejo ENV _CONTAINERS_USERNS_CONFIGURED="" From 10e19db36615ca7eba19923f7998b35bec6cffdb Mon Sep 17 00:00:00 2001 From: Renovate Bot Date: Sat, 21 Feb 2026 02:15:00 +0000 Subject: [PATCH 86/86] Replace Node.js with data.forgejo.org/oci/node 24-trixie (#1604) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [data.forgejo.org/oci/node](https://hub.docker.com/_/node) ([source](https://github.com/nodejs/docker-node)) | container | replacement | `24-bookworm` → `24-trixie` | This is a special PR that replaces `data.forgejo.org/oci/node` with the community suggested minimal stable replacement version. --- ### Configuration 📅 **Schedule**: Branch creation - "" (UTC), Automerge - Between 12:00 AM and 03:59 AM ( * 0-3 * * * ) (UTC). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Renovate Bot](https://github.com/renovatebot/renovate). Reviewed-on: https://code.forgejo.org/forgejo/end-to-end/pulls/1604 Reviewed-by: Mathieu Fenniak Co-authored-by: Renovate Bot Co-committed-by: Renovate Bot --- .forgejo/workflows/end-to-end.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.forgejo/workflows/end-to-end.yml b/.forgejo/workflows/end-to-end.yml index d5d877f6..eab71f76 100644 --- a/.forgejo/workflows/end-to-end.yml +++ b/.forgejo/workflows/end-to-end.yml @@ -15,7 +15,7 @@ jobs: build: runs-on: docker container: - image: 'data.forgejo.org/oci/node:24-bookworm' + image: 'data.forgejo.org/oci/node:24-trixie' outputs: built: "${{ steps.build.outputs.built }}" forgejo_versions_json: "${{ steps.build.outputs.forgejo_versions_json }}"