2025-08-29 08:45:53 +00:00
|
|
|
# Copyright 2025 The Forgejo Authors
|
2023-10-15 16:37:51 +00:00
|
|
|
# SPDX-License-Identifier: MIT
|
2025-08-29 08:45:53 +00:00
|
|
|
#
|
|
|
|
|
# CASCADING_PR_ORIGIN is a token from the https://code.forgejo.org/cascading-pr user
|
|
|
|
|
# with scope write:issue read:repository read:user
|
|
|
|
|
# CASCADING_PR_DESTINATION is a token from the https://code.forgejo.org/cascading-pr user
|
|
|
|
|
# with scope write:issue write:repository read:user
|
|
|
|
|
#
|
|
|
|
|
# To modify this workflow:
|
|
|
|
|
#
|
|
|
|
|
# - push it to the wip-cascade branch on the repository
|
|
|
|
|
# otherwise it will not have access to the secrets required to push
|
|
|
|
|
# the cascading PR
|
|
|
|
|
#
|
|
|
|
|
# - once it works, open a pull request for the sake of keeping track
|
|
|
|
|
# of the change even if the PR won't run it because it will use
|
|
|
|
|
# whatever is in the default branch instead
|
|
|
|
|
#
|
|
|
|
|
# - after it is merged, double check it works by setting the
|
|
|
|
|
# label on a pull request (any pull request will do)
|
|
|
|
|
#
|
|
|
|
|
name: cascade
|
|
|
|
|
|
2023-10-15 16:37:51 +00:00
|
|
|
on:
|
2025-08-29 08:45:53 +00:00
|
|
|
push:
|
|
|
|
|
branches:
|
|
|
|
|
- 'wip-cascade'
|
2023-10-29 17:49:00 +00:00
|
|
|
pull_request_target:
|
2023-10-15 16:37:51 +00:00
|
|
|
types:
|
|
|
|
|
- synchronize
|
2025-08-29 08:45:53 +00:00
|
|
|
- labeled
|
2023-10-15 16:37:51 +00:00
|
|
|
- closed
|
2025-06-30 08:55:10 +00:00
|
|
|
|
|
|
|
|
enable-email-notifications: true
|
|
|
|
|
|
2023-10-15 16:37:51 +00:00
|
|
|
jobs:
|
2025-08-29 08:45:53 +00:00
|
|
|
debug:
|
|
|
|
|
if: >
|
|
|
|
|
vars.DEBUG == 'yes'
|
2023-10-15 16:37:51 +00:00
|
|
|
runs-on: docker
|
2024-11-20 10:50:07 +01:00
|
|
|
container:
|
2025-08-29 08:45:53 +00:00
|
|
|
image: data.forgejo.org/oci/node:22-bookworm
|
|
|
|
|
steps:
|
|
|
|
|
- name: event
|
|
|
|
|
run: |
|
|
|
|
|
cat <<'EOF'
|
|
|
|
|
${{ toJSON(forge.event.pull_request.labels.*.name) }}
|
|
|
|
|
EOF
|
|
|
|
|
cat <<'EOF'
|
|
|
|
|
push => ${{ forge.event_name == 'push' && ( forge.ref_name == 'wip-cascade') }}
|
|
|
|
|
pull_request_target synchornized => ${{ ( forge.event.action == 'synchronized' && contains(forge.event.pull_request.labels.*.name, 'run-end-to-end-tests') ) }}
|
|
|
|
|
pull_request_target label_updated => ${{ ( forge.event.action == 'label_updated' && forge.event.label.name == 'run-end-to-end-tests' ) }}
|
|
|
|
|
contains => ${{ contains(forge.event.pull_request.labels.*.name, 'run-end-to-end-tests') }}
|
|
|
|
|
contains boolean => ${{ contains(forge.event.pull_request.labels.*.name, 'run-end-to-end-tests') == true }}
|
|
|
|
|
EOF
|
|
|
|
|
cat <<'EOF'
|
|
|
|
|
${{ toJSON(forge) }}
|
|
|
|
|
EOF
|
|
|
|
|
|
|
|
|
|
end-to-end:
|
|
|
|
|
#
|
|
|
|
|
# Always run when a commit is pushed to the wip-cascade branch
|
|
|
|
|
# If this is a pull request, run
|
|
|
|
|
# - when the `run-end-to-end-tests` label is set (label_updated) (but not if another label is set or if a label is removed)
|
2025-09-08 00:14:44 +00:00
|
|
|
# - when a new commit is pushed to the pull request (synchronized) if the `run-end-to-end-tests` is already present
|
2025-08-29 08:45:53 +00:00
|
|
|
# - when the pull request is closed, which also happens when it is merged, so that the setup-forgejo & end-to-end pull requests are closed
|
|
|
|
|
#
|
2025-01-30 15:23:22 +00:00
|
|
|
if: >
|
2025-08-29 08:45:53 +00:00
|
|
|
vars.ROLE == 'forgejo-coding' && (
|
|
|
|
|
(
|
|
|
|
|
forge.event_name == 'push' && ( forge.ref_name == 'wip-cascade' )
|
|
|
|
|
) || (
|
|
|
|
|
forge.event_name == 'pull_request_target' && (
|
|
|
|
|
forge.event.action == 'closed' ||
|
2025-09-08 00:14:44 +00:00
|
|
|
( forge.event.action == 'synchronized' && contains(forge.event.pull_request.labels.*.name, 'run-end-to-end-tests') ) ||
|
2025-08-29 08:45:53 +00:00
|
|
|
( forge.event.action == 'label_updated' && forge.event.label.name == 'run-end-to-end-tests' )
|
|
|
|
|
)
|
|
|
|
|
)
|
|
|
|
|
)
|
|
|
|
|
runs-on: docker
|
|
|
|
|
container:
|
|
|
|
|
image: 'code.forgejo.org/oci/node:22-bookworm'
|
2023-10-15 16:37:51 +00:00
|
|
|
steps:
|
2025-09-12 11:04:10 +00:00
|
|
|
- uses: https://data.forgejo.org/actions/cascading-pr@v2.3.0
|
2023-10-15 16:37:51 +00:00
|
|
|
with:
|
2025-08-29 08:45:53 +00:00
|
|
|
origin-url: ${{ forge.server_url }}
|
|
|
|
|
origin-repo: ${{ forge.repository }}
|
2023-10-15 16:37:51 +00:00
|
|
|
origin-token: ${{ secrets.CASCADING_PR_ORIGIN }}
|
2025-07-10 14:41:49 +00:00
|
|
|
origin-pr: ${{ forge.event.pull_request.number }}
|
2025-08-29 08:45:53 +00:00
|
|
|
origin-ref: ${{ forge.event_name == 'push' && forge.event.ref || '' }}
|
|
|
|
|
destination-url: ${{ forge.server_url }}
|
2023-10-15 16:37:51 +00:00
|
|
|
destination-repo: actions/setup-forgejo
|
2023-11-04 14:23:25 +01:00
|
|
|
destination-fork-repo: cascading-pr/setup-forgejo
|
2023-10-15 16:37:51 +00:00
|
|
|
destination-branch: main
|
|
|
|
|
destination-token: ${{ secrets.CASCADING_PR_DESTINATION }}
|
2025-08-29 08:45:53 +00:00
|
|
|
close: true
|
|
|
|
|
verbose: ${{ vars.VERBOSE == 'yes' }}
|
|
|
|
|
debug: ${{ vars.DEBUG == 'yes' }}
|
|
|
|
|
update: .forgejo/cascading-setup-forgejo
|