From 4a0ee31376ce60f498a0844e0aa4dd5f5bf321a4 Mon Sep 17 00:00:00 2001 From: Earl Warren Date: Sat, 16 Dec 2023 16:24:55 +0100 Subject: [PATCH] [CI] upload the forgejo under test as an artifact for end-to-end (cherry picked from commit ded1f27ebbae7e5e09973ce15551827cff4a00d1) (cherry picked from commit e452b184557bf170688ca042b3a01af7a233d2ed) [CI] upload the forgejo under test as an artifact for end-to-end (squash) use forgejo-pr cascade a PR to https://code.forgejo.org/forgejo/end-to-end on the forgejo-pr branch which will only run end-to-end tests relevant to a Forgejo PR and not the entire end-to-end suite. (cherry picked from commit 011de92174ad29ee9b3b72d5c845b52ef229f66f) (cherry picked from commit 50290011b255e2a548ed1ef608af947cfc557288) [CI] upload the forgejo under test as an artifact for end-to-end (squash) after build (cherry picked from commit ba35f42e3d1d4ca0132d3edd09c4647940cf5e17) (cherry picked from commit ddf43faecb9a833137dbbb783fddf0b4765b0e87) [CI] upload the forgejo under test as an artifact for end-to-end (squash) do not display env (cherry picked from commit d186ec3db49d8a23d4eb6328e6393c107b166a79) (cherry picked from commit 20e9d4bffb90260dc9699db81ccdd23dd695f8da) [CI] upload the forgejo under test as an artifact for end-to-end (squash) merge feature branches (cherry picked from commit 83cd7a3ad992202c02510e807bdea0f1ab865461) (cherry picked from commit 75fd819ee5161ad9591fe95744e538d805dfb9bb) (cherry picked from commit c6d021692951b1b2dc1209422df766becaa8fe22) --- .forgejo/cascading-pr-end-to-end | 21 +++++ .../workflows/cascade-setup-end-to-end.yml | 82 +++++++++++++++++++ 2 files changed, 103 insertions(+) create mode 100755 .forgejo/cascading-pr-end-to-end create mode 100644 .forgejo/workflows/cascade-setup-end-to-end.yml diff --git a/.forgejo/cascading-pr-end-to-end b/.forgejo/cascading-pr-end-to-end new file mode 100755 index 0000000000..975888b245 --- /dev/null +++ b/.forgejo/cascading-pr-end-to-end @@ -0,0 +1,21 @@ +#!/bin/bash + +set -ex + +end_to_end=$1 +end_to_end_pr=$2 +forgejo=$3 +forgejo_pr=$4 + +head_url=$(jq --raw-output .head.repo.html_url < $forgejo_pr) +test "$head_url" != null +branch=$(jq --raw-output .head.ref < $forgejo_pr) +test "$branch" != null +cd $end_to_end +echo $head_url $branch 7.0.0+0-gitea-1.22.0 > forgejo/sources/1.22 +date > last-upgrade + +base_url=$(jq --raw-output .base.repo.html_url < $forgejo_pr) +test "$base_url" != null +test "$GITHUB_RUN_NUMBER" +echo $base_url/actions/runs/$GITHUB_RUN_NUMBER/artifacts/forgejo > forgejo/binary-url diff --git a/.forgejo/workflows/cascade-setup-end-to-end.yml b/.forgejo/workflows/cascade-setup-end-to-end.yml new file mode 100644 index 0000000000..8f0c736d38 --- /dev/null +++ b/.forgejo/workflows/cascade-setup-end-to-end.yml @@ -0,0 +1,82 @@ +# SPDX-License-Identifier: MIT +on: + pull_request_target: + types: + - labeled + +env: + FEATURE_BRANCHES: "privacy i18n moderation branding dependency" + +jobs: + info: + runs-on: docker + container: + image: node:20-bookworm + steps: + - name: event + run: | + echo github.event.pull_request.head.repo.fork = ${{ github.event.pull_request.head.repo.fork }} + echo github.event.action = ${{ github.event.action }} + echo github.event.pull_request.merged = ${{ github.event.pull_request.merged }} + echo github.event.pull_request.labels.*.name + cat <<'EOF' + ${{ toJSON(github.event.pull_request.labels.*.name) }} + EOF + + build: + if: github.event.action == 'label_updated' && contains(github.event.pull_request.labels.*.name, 'run-end-to-end-tests') + runs-on: docker + container: + image: 'docker.io/node:20-bookworm' + steps: + - uses: https://code.forgejo.org/actions/checkout@v3 + with: + fetch-depth: '0' + show-progress: 'false' + - name: adduser forgejo + run: | + git config --add safe.directory '*' + git config user.email "you@example.com" + git config user.name "Your Name" + adduser --quiet --comment forgejo --disabled-password forgejo + chown -R forgejo:forgejo . + - name: merge feature branches + run: | + su forgejo -c 'set -ex ; for b in ${{ env.FEATURE_BRANCHES }} ; do git merge -m $b origin/forgejo-$b ; done' + - uses: https://code.forgejo.org/actions/setup-go@v4 + with: + go-version: ">=1.21" + - name: make deps-backend + run: | + su forgejo -c 'make deps-backend' + - name: make forgejo + run: | + su forgejo -c 'make generate-backend static-executable && ln gitea forgejo' + env: + TAGS: bindata sqlite sqlite_unlock_notify + - uses: actions/upload-artifact@v3 + with: + name: forgejo + path: forgejo + + cascade: + if: github.event.action == 'label_updated' && contains(github.event.pull_request.labels.*.name, 'run-end-to-end-tests') + needs: [build] + runs-on: docker + container: + image: node:20-bookworm + steps: + - uses: actions/checkout@v4 + - uses: actions/cascading-pr@v1 + with: + origin-url: ${{ env.GITHUB_SERVER_URL }} + origin-repo: ${{ github.repository }} + origin-token: ${{ secrets.END_TO_END_CASCADING_PR_ORIGIN }} + origin-pr: ${{ github.event.pull_request.number }} + destination-url: https://code.forgejo.org + destination-fork-repo: cascading-pr/end-to-end + destination-repo: forgejo/end-to-end + destination-branch: forgejo-pr + destination-token: ${{ secrets.END_TO_END_CASCADING_PR_DESTINATION }} + close-merge: true + update: .forgejo/cascading-pr-end-to-end