aboutsummaryrefslogtreecommitdiffstats
path: root/.github/workflows/block-outdated-3rdparty.yml
blob: 22280f35e31163ee689af577d44fdfef9ef90b2e (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
# SPDX-FileCopyrightText: 2024 Nextcloud GmbH and Nextcloud contributors
# SPDX-License-Identifier: MIT
name: Block merging with outdated 3rdparty/

on:
  pull_request:
    types: [opened, ready_for_review, reopened, synchronize]

permissions:
  contents: read

concurrency:
  group: block-outdated-3rdparty-${{ github.head_ref || github.run_id }}
  cancel-in-progress: true

jobs:
  block-outdated-3rdparty:
    name: Block merging with outdated 3rdparty/

    runs-on: ubuntu-latest-low

    steps:
      - name: Check requirement
        uses: dorny/paths-filter@de90cc6fb38fc0963ad72b210f1f284cd68cea36 # v3.0.2
        id: changes
        continue-on-error: true
        with:
          filters: |
            src:
              - '3rdparty'
              - 'version.php'

      - name: Checkout
        uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2

      - name: 3rdparty commit hash on current branch
        id: actual
        run: |
          echo "commit=$(git submodule status | grep ' 3rdparty' | egrep -o '[a-f0-9]{40}')" >> "$GITHUB_OUTPUT"

      - name: Last 3rdparty commit on target branch
        id: target
        run: |
          echo "commit=$(git ls-remote https://github.com/nextcloud/3rdparty refs/heads/${{ github.base_ref }} | awk '{ print $1}')" >> "$GITHUB_OUTPUT"

      - name: Compare if 3rdparty commits are different
        run: |
          echo '3rdparty/ seems to not point to the last commit of the dedicated branch:'
          echo 'Branch has: ${{ steps.actual.outputs.commit }}'
          echo '${{ github.base_ref }} has: ${{ steps.target.outputs.commit }}'

      - name: Fail if 3rdparty commits are different
        if: ${{ steps.changes.outputs.src != 'false' && steps.actual.outputs.commit != steps.target.outputs.commit }}
        run: |
          exit 1