Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Adding output to show if check succeeded or failed #51

Merged
merged 3 commits into from
Nov 25, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
40 changes: 40 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,8 @@ The config file is always pulled from the action's context, i.e., the branch fro

See [other ways to specify config file.](#other-ways-to-specify-config-file)

Action returns a single output: `success` that indicates if check has passed or failed.

## Create Workflow

Create a workflow file (eg: `.github/workflows/pr-title-checker.yml`) with the following content:
Expand Down Expand Up @@ -115,6 +117,44 @@ Note that this has to be a url pointing to a valid, raw json file. See [#28](htt
```
This is useful if a repo containing the config file is pulled in a previous step using, for e.g., actions/checkout. See [#36](https://github.com/thehanimo/pr-title-checker/issues/36)

### Using output result

You can use the action output to execute follow up steps e.g. adding a comment.

```yml
steps:
- uses: thehanimo/pr-title-checker@v1.4.1
id: check
continue-on-error: true
with:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
pass_on_octokit_error: false

- name: Add comment to fix PR title
uses: marocchino/sticky-pull-request-comment@v2
if: ${{ steps.check.outputs.success == 'false'}}
with:
header: 'PR Title Check'
recreate: true
message: |
### 🚨 PR Title Needs Formatting
The title of this PR needs to be formatted correctly and include an Azure Boards Reference.
Please update the title to match the format `type: description AB#xxx`. Examples:
* `bugfix: fix typo in README.md AB#123`
* `chore: update dependencies AB#456`
* `feat: add new feature AB#789`
* `chore: fixing build pipeline` - no AB reference

- name: Add comment that PR title is fixed
if: ${{ steps.check.outputs.success == 'true'}}
uses: marocchino/sticky-pull-request-comment@v2
with:
header: 'PR Title Check'
recreate: true
message: |
### ✅ PR Title Formatted Correctly
The title of this PR has been updated to match the correct format. Thank you!
```

## NOTE:
* [`pull_request_target`](https://docs.github.com/en/actions/learn-github-actions/events-that-trigger-workflows#pull_request_target) event trigger should be used (not [`pull_request`](https://docs.github.com/en/actions/learn-github-actions/events-that-trigger-workflows#pull_request)) in order to support checking PRs from forks. This was added in `v1.3.2`. See [#8.](https://github.com/thehanimo/pr-title-checker/issues/8)
Expand Down
3 changes: 3 additions & 0 deletions action.yml
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,9 @@ inputs:
github_configuration_token:
description: the github access token to be used to access the config file using other github_configuration_* parameters. can differ from GITHUB_TOKEN. defaults to GITHUB_TOKEN
required: false
outputs:
success:
description: true if the PR title is valid, false otherwise. Undefined if an error occurred.
runs:
using: node20
main: dist/index.js
4 changes: 4 additions & 0 deletions dist/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -10050,6 +10050,7 @@ const run = ({ configPath, localConfigPath, remoteConfigURL, GitHubConfigOwner,
if (labels[i].name == CHECKS.ignoreLabels[j]) {
core.info(`Ignoring Title Check for label - ${labels[i].name}`);
removeLabel({ labels, name: LABEL.name });
core.setOutput("success", true);
return;
}
}
Expand All @@ -10060,6 +10061,7 @@ const run = ({ configPath, localConfigPath, remoteConfigURL, GitHubConfigOwner,
if (title.startsWith(CHECKS.prefixes[i])) {
removeLabel({ labels, name: LABEL.name });
core.info(MESSAGES.success);
core.setOutput("success", true);
return;
}
}
Expand All @@ -10069,10 +10071,12 @@ const run = ({ configPath, localConfigPath, remoteConfigURL, GitHubConfigOwner,
if (re.test(title)) {
removeLabel({ labels, name: LABEL.name });
core.info(MESSAGES.success);
core.setOutput("success", true);
return;
}
}
yield titleCheckFailed({ config: { LABEL, CHECKS, MESSAGES } });
core.setOutput("success", false);
}
catch (error) {
core.info(error);
Expand Down
4 changes: 4 additions & 0 deletions index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -283,6 +283,7 @@ const run = async ({
if (labels[i].name == CHECKS.ignoreLabels[j]) {
core.info(`Ignoring Title Check for label - ${labels[i].name}`);
removeLabel({ labels, name: LABEL.name });
core.setOutput("success", true);
return;
}
}
Expand All @@ -295,6 +296,7 @@ const run = async ({
if (title.startsWith(CHECKS.prefixes[i])) {
removeLabel({ labels, name: LABEL.name });
core.info(MESSAGES.success);
core.setOutput("success", true);
return;
}
}
Expand All @@ -305,11 +307,13 @@ const run = async ({
if (re.test(title)) {
removeLabel({ labels, name: LABEL.name });
core.info(MESSAGES.success);
core.setOutput("success", true);
return;
}
}

await titleCheckFailed({ config: { LABEL, CHECKS, MESSAGES } });
core.setOutput("success", false);
} catch (error) {
core.info(error);
}
Expand Down
Loading