mirror of
https://github.com/nextcloud/server.git
synced 2026-04-06 17:47:41 -04:00
and allow regular cypress tests to run on forks (no secret leaked) add consistent gating for changes remove empty matrix option skip performance workflow on forks without it looking like it's failing Signed-off-by: Anna Larch <anna@nextcloud.com>
111 lines
4.2 KiB
YAML
111 lines
4.2 KiB
YAML
# SPDX-FileCopyrightText: 2022 Nextcloud GmbH and Nextcloud contributors
|
|
# SPDX-License-Identifier: MIT
|
|
name: Update 3rdparty command
|
|
|
|
on:
|
|
issue_comment:
|
|
types: created
|
|
|
|
permissions:
|
|
contents: read
|
|
|
|
jobs:
|
|
rebase:
|
|
runs-on: ubuntu-latest
|
|
permissions:
|
|
contents: none
|
|
pull-requests: read
|
|
|
|
# On pull requests and if the comment starts with `/update-3rdparty`
|
|
if: github.event.issue.pull_request != '' && startsWith(github.event.comment.body, '/update-3rdparty')
|
|
|
|
steps:
|
|
- name: Add reaction on start
|
|
uses: peter-evans/create-or-update-comment@e8674b075228eee787fea43ef493e45ece1004c9 # v3.0.1
|
|
with:
|
|
token: ${{ secrets.COMMAND_BOT_PAT }}
|
|
repository: ${{ github.event.repository.full_name }}
|
|
comment-id: ${{ github.event.comment.id }}
|
|
reactions: '+1'
|
|
|
|
# issue_comment events carry no pull_request context in their payload, so we
|
|
# must fetch the PR via the API. This also gives us base.ref for free, avoiding
|
|
# a second API call. The GITHUB_TOKEN needs pull-requests:read (granted above).
|
|
- name: Get pull request metadata
|
|
uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8.0.0
|
|
id: get-pr
|
|
with:
|
|
github-token: ${{ secrets.GITHUB_TOKEN }}
|
|
script: |
|
|
const pull = await github.rest.pulls.get({
|
|
owner: context.repo.owner,
|
|
repo: context.repo.repo,
|
|
pull_number: context.issue.number,
|
|
});
|
|
core.setOutput('head_repo', pull.data.head.repo?.full_name ?? '');
|
|
core.setOutput('base_ref', pull.data.base.ref);
|
|
|
|
- name: Disabled on forks
|
|
if: steps.get-pr.outputs.head_repo != github.repository
|
|
run: |
|
|
echo 'Can not execute /update-3rdparty on forks'
|
|
exit 1
|
|
|
|
- name: Init branch
|
|
uses: xt0rted/pull-request-comment-branch@e8b8daa837e8ea7331c0003c9c316a64c6d8b0b1 # v1
|
|
id: comment-branch
|
|
|
|
- name: Checkout ${{ steps.comment-branch.outputs.head_ref }}
|
|
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
|
with:
|
|
persist-credentials: false
|
|
fetch-depth: 0
|
|
token: ${{ secrets.COMMAND_BOT_PAT }}
|
|
ref: ${{ steps.comment-branch.outputs.head_ref }}
|
|
|
|
- name: Register server reference to fallback to master branch
|
|
run: |
|
|
base_ref="${{ steps.get-pr.outputs.base_ref }}"
|
|
if [[ "$base_ref" == "main" || "$base_ref" == "master" ]]; then
|
|
echo "server_ref=master" >> "$GITHUB_ENV"
|
|
echo "Setting server_ref to master"
|
|
elif [[ "$base_ref" =~ ^stable[0-9]+$ ]]; then
|
|
echo "server_ref=$base_ref" >> "$GITHUB_ENV"
|
|
echo "Setting server_ref to $base_ref"
|
|
else
|
|
echo "Not based on master/main/stable*, so skipping pull 3rdparty command"
|
|
fi
|
|
|
|
- name: Setup git
|
|
run: |
|
|
git config --local user.email 'nextcloud-command@users.noreply.github.com'
|
|
git config --local user.name 'nextcloud-command'
|
|
|
|
- name: Add reaction on failure
|
|
uses: peter-evans/create-or-update-comment@e8674b075228eee787fea43ef493e45ece1004c9 # v3.0.1
|
|
if: ${{ env.server_ref == '' }}
|
|
with:
|
|
token: ${{ secrets.COMMAND_BOT_PAT }}
|
|
repository: ${{ github.event.repository.full_name }}
|
|
comment-id: ${{ github.event.comment.id }}
|
|
reactions: '-1'
|
|
|
|
- name: Pull 3rdparty
|
|
if: ${{ env.server_ref != '' }}
|
|
run: git submodule foreach 'if [ "$sm_path" == "3rdparty" ]; then git pull origin '"'"'${{ env.server_ref }}'"'"'; fi'
|
|
|
|
- name: Commit and push changes
|
|
if: ${{ env.server_ref != '' }}
|
|
run: |
|
|
git add 3rdparty
|
|
git commit -s -m 'Update submodule 3rdparty to latest ${{ env.server_ref }}'
|
|
git push
|
|
|
|
- name: Add reaction on failure
|
|
uses: peter-evans/create-or-update-comment@e8674b075228eee787fea43ef493e45ece1004c9 # v3.0.1
|
|
if: failure()
|
|
with:
|
|
token: ${{ secrets.COMMAND_BOT_PAT }}
|
|
repository: ${{ github.event.repository.full_name }}
|
|
comment-id: ${{ github.event.comment.id }}
|
|
reactions: '-1'
|