Question 029
### Your Pull Request analysis workflow uses multiple code analysis tools and takes about 20 minutes to fully complete. It is triggered on `pull_request` event with `branches` filter set to `master`. Therefore if a developer pushes multiple commits within few minutes multiple workflows are running in parallel. How can you stop all previous workflow runs and only run the one with latest changes?
> https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#example-using-concurrency-to-cancel-any-in-progress-job-or-run
1. [x] Use concurrency with cancel-in-progress
```yaml
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
```
1. [ ] Use concurrency
```yaml
concurrency:
group: ${{ github.ref }}
```
> This would queue runs on that github ref. It will not stop previous runs
1. [ ] Use activity types filter
```yaml
on:
pull_request:
branches:
- master
types: [latest]
```
> There is no such activity type as `latest` for pull_request event
1. [ ] Use cancel-in-progress flag for `pull_request` event
```yaml
on:
pull_request:
branches:
- master
cancel-in-progress: true
```