name: Cancel Previous Runs on: [push, pull_request] defaults: run: shell: bash jobs: cancel: name: Cancel Previous Runs runs-on: ubuntu-latest timeout-minutes: 3 # Don't run this job for zulip/zulip pushes since we # want to run those jobs. if: ${{ github.event_name != 'push' || github.event.repository.full_name != 'zulip/zulip' }} steps: # We get workflow IDs from GitHub API so we don't have to maintain # a hard-coded list of IDs which need to be updated when a workflow # is added or removed. And, workflow IDs are different for other forks # so this is required. - name: Get workflow IDs. id: workflow_ids env: # This is in / format e.g. zulip/zulip REPOSITORY: ${{ github.repository }} run: | workflow_api_url=https://api.github.com/repos/$REPOSITORY/actions/workflows curl $workflow_api_url -o workflows.json script="const {workflows} = require('./workflows'); \ const ids = workflows.map(workflow => workflow.id); \ console.log(ids.join(','));" ids=$(node -e "$script") echo "::set-output name=ids::$ids" - uses: styfle/cancel-workflow-action@0.4.1 with: workflow_id: ${{ steps.workflow_ids.outputs.ids }} access_token: ${{ github.token }}