Skip to content

Commit

Permalink
Merge pull request #51 from karpikpl/main
Browse files Browse the repository at this point in the history
Adding output to show if check succeeded or failed
  • Loading branch information
thehanimo authored Nov 25, 2024
2 parents 767e507 + 17e25bb commit 62df0ca
Show file tree
Hide file tree
Showing 4 changed files with 51 additions and 0 deletions.
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

0 comments on commit 62df0ca

Please sign in to comment.