summaryrefslogtreecommitdiff
path: root/.github/workflows/tarball-test.yml
blob: e99c4515c8ad5222608b8a2ab48d545b39c2bc5c (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
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
name: tarball-test
on:
  push:
    paths-ignore:
      - 'doc/**'
      - '**/man/*'
      - '**.md'
      - '**.rdoc'
      - '**/.document'
      - '.*.yml'
  pull_request:
    # Do not use paths-ignore for required status checks
    # https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/collaborating-on-repositories-with-code-quality-features/troubleshooting-required-status-checks#handling-skipped-but-required-checks
  merge_group:
  workflow_dispatch:
    inputs:
      notify-release-channel:
        description: 'Also send failure notifications to SNAPSHOT_SLACK_WEBHOOK_URL (set by tarball-test-schedule).'
        type: boolean
        default: false

concurrency:
  group: ${{ github.workflow }} / ${{ startsWith(github.event_name, 'pull') && github.ref_name || github.sha }}
  cancel-in-progress: ${{ startsWith(github.event_name, 'pull') }}

permissions:
  contents: read

jobs:
  tarball:
    runs-on: ubuntu-latest
    # Cherry-pick to maintenance branches by changing only env.BRANCH below;
    # archname / branch-label / Materialize all derive from it.
    env:
      BRANCH: master
    outputs:
      branch: ${{ env.BRANCH }}
      skip: ${{ steps.skipping.outputs.skip }}
    steps:
      - id: skipping
        run:
          echo 'skip=true' >> $GITHUB_OUTPUT
        if: >-
          ${{(false
          || contains(github.event.head_commit.message, '[DOC]')
          || contains(github.event.pull_request.title, '[DOC]')
          || contains(github.event.pull_request.labels.*.name, 'Documentation')
          || (github.event.pull_request.user.login == 'dependabot[bot]')
          )}}
      - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
        with:
          fetch-depth: 1 # actions/checkout fetches all heads/tags unless > 0
      # tool/make-snapshot derives the branch name from HEAD and looks up
      # the upstream during ChangeLog generation. Detached checkouts
      # (pull_request, merge_group) lack a local branch with tracking, so
      # pin one to HEAD and connect it to the matching origin ref.
      - name: Materialize local branch
        run: |
          git fetch --no-tags --depth=1 origin "+refs/heads/$BASE:refs/remotes/origin/$BASE"
          git checkout -B "$BRANCH" HEAD
          git branch --set-upstream-to="origin/$BASE" "$BRANCH"
        env:
          BASE: ${{ github.base_ref || env.BRANCH }}
      - uses: ./.github/actions/make-snapshot
        with:
          archname: snapshot-${{ env.BRANCH }}
          srcdir: '.'

  ubuntu:
    needs: tarball
    if: ${{ ! needs.tarball.outputs.skip }}
    uses: ./.github/workflows/tarball-ubuntu.yml
    with:
      archname: snapshot-${{ needs.tarball.outputs.branch }}
      notify-release-channel: ${{ github.event_name == 'workflow_dispatch' && inputs.notify-release-channel || false }}
    secrets: inherit

  macos:
    needs: tarball
    if: ${{ ! needs.tarball.outputs.skip }}
    uses: ./.github/workflows/tarball-macos.yml
    with:
      archname: snapshot-${{ needs.tarball.outputs.branch }}
      notify-release-channel: ${{ github.event_name == 'workflow_dispatch' && inputs.notify-release-channel || false }}
    secrets: inherit

  windows:
    needs: tarball
    if: ${{ ! needs.tarball.outputs.skip }}
    uses: ./.github/workflows/tarball-windows.yml
    with:
      archname: snapshot-${{ needs.tarball.outputs.branch }}
      notify-release-channel: ${{ github.event_name == 'workflow_dispatch' && inputs.notify-release-channel || false }}
    secrets: inherit

  non_development:
    needs: tarball
    uses: ./.github/workflows/tarball-non-development.yml
    secrets: inherit