Backport 10463 to 1.0.latest #2207
Workflow file for this run
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# **what?** | |
# Checks that a file has been committed under the /.changes directory | |
# as a new CHANGELOG entry. Cannot check for a specific filename as | |
# it is dynamically generated by change type and timestamp. | |
# This workflow should not require any secrets since it runs for PRs | |
# from forked repos. | |
# By default, secrets are not passed to workflows running from | |
# a forked repo. | |
# **why?** | |
# Ensure code change gets reflected in the CHANGELOG. | |
# **when?** | |
# This will run for all PRs going into main and *.latest. | |
name: Check Changelog Entry | |
on: | |
pull_request: | |
workflow_dispatch: | |
defaults: | |
run: | |
shell: bash | |
permissions: | |
contents: read | |
pull-requests: write | |
env: | |
changelog_comment: 'Thank you for your pull request! We could not find a changelog entry for this change. For details on how to document a change, see [the contributing guide](https://github.com/dbt-labs/dbt-core/blob/main/CONTRIBUTING.md#adding-changelog-entry).' | |
jobs: | |
changelog: | |
name: changelog | |
runs-on: ubuntu-20.04 | |
steps: | |
- name: Check if changelog file was added | |
# https://github.com/marketplace/actions/paths-changes-filter | |
# For each filter, it sets output variable named by the filter to the text: | |
# 'true' - if any of changed files matches any of filter rules | |
# 'false' - if none of changed files matches any of filter rules | |
# also, returns: | |
# `changes` - JSON array with names of all filters matching any of the changed files | |
uses: dorny/paths-filter@v2 | |
id: filter | |
with: | |
token: ${{ secrets.GITHUB_TOKEN }} | |
filters: | | |
changelog: | |
- added: '.changes/unreleased/**.yaml' | |
- name: Check if comment already exists | |
uses: peter-evans/find-comment@v1 | |
id: changelog_comment | |
with: | |
issue-number: ${{ github.event.pull_request.number }} | |
comment-author: 'github-actions[bot]' | |
body-includes: ${{ env.changelog_comment }} | |
- name: Create PR comment if changelog entry is missing, required, and does nto exist | |
if: | | |
steps.filter.outputs.changelog == 'false' && | |
!contains( github.event.pull_request.labels.*.name, 'Skip Changelog') && | |
steps.changelog_comment.outputs.comment-body == '' | |
uses: peter-evans/create-or-update-comment@v1 | |
with: | |
issue-number: ${{ github.event.pull_request.number }} | |
body: ${{ env.changelog_comment }} | |
- name: Fail job if changelog entry is missing and required | |
if: | | |
steps.filter.outputs.changelog == 'false' && | |
!contains( github.event.pull_request.labels.*.name, 'Skip Changelog') | |
uses: actions/github-script@v6 | |
with: | |
script: core.setFailed('Changelog entry required to merge.') |