#
# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements.  See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership.  The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License.  You may obtain a copy of the License at
#
#   http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
# KIND, either express or implied.  See the License for the
# specific language governing permissions and limitations
# under the License.
#

name: CI - Cancel duplicate workflows
on:
  workflow_run:
    # this could be any workflow that is always executed by PUSH/PR operation
    workflows: ["CI - Unit"]
    types: ['requested']

jobs:

  cancel-workflow-runs:
    runs-on: ubuntu-20.04
    steps:
      # the potiuk/cancel-workflow-run action has been allow-listed by
      # the Apache Infrastructure
      - name: cancel duplicate ci-build-macos.yaml
        uses: potiuk/cancel-workflow-runs@953e057dc81d3458935a18d1184c386b0f6b5738
        with:
          token: ${{ secrets.GITHUB_TOKEN }}
          cancelMode: allDuplicates
          workflowFileName: ci-build-macos.yaml
      - name: cancel duplicate ci-go-functions-style.yaml
        uses: potiuk/cancel-workflow-runs@953e057dc81d3458935a18d1184c386b0f6b5738
        with:
          token: ${{ secrets.GITHUB_TOKEN }}
          cancelMode: allDuplicates
          workflowFileName: ci-go-functions-style.yaml
      - name: cancel duplicate ci-go-functions-test.yaml
        uses: potiuk/cancel-workflow-runs@953e057dc81d3458935a18d1184c386b0f6b5738
        with:
          token: ${{ secrets.GITHUB_TOKEN }}
          cancelMode: allDuplicates
          workflowFileName: ci-go-functions-test.yaml
      - name: cancel duplicate ci-pulsar-website-build.yaml
        uses: potiuk/cancel-workflow-runs@953e057dc81d3458935a18d1184c386b0f6b5738
        with:
          token: ${{ secrets.GITHUB_TOKEN }}
          cancelMode: allDuplicates
          workflowFileName: ci-pulsar-website-build.yaml
      - name: cancel duplicate pulsar-ci.yaml
        uses: potiuk/cancel-workflow-runs@953e057dc81d3458935a18d1184c386b0f6b5738
        with:
          token: ${{ secrets.GITHUB_TOKEN }}
          cancelMode: allDuplicates
          workflowFileName: pulsar-ci.yaml
      - name: cancel duplicate ci-documentbot.yml
        uses: potiuk/cancel-workflow-runs@953e057dc81d3458935a18d1184c386b0f6b5738
        with:
          token: ${{ secrets.GITHUB_TOKEN }}
          cancelMode: allDuplicates
          workflowFileName: ci-documentbot.yml
