Skip to content

Commit d83860f

Browse files
committed
feat: add release_notes outputs
1 parent 9261c0e commit d83860f

5 files changed

Lines changed: 47 additions & 22 deletions

File tree

.github/workflows/release_notes.yaml

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ jobs:
1616

1717
outputs:
1818
enhanced_notes: ${{ steps.release_notes.outputs.enhanced_notes }}
19+
release_notes: ${{ steps.release_notes.outputs.release_notes }}
1920

2021
steps:
2122
- uses: actions/checkout@v4
@@ -41,4 +42,8 @@ jobs:
4142
needs: enhanced_release_notes
4243
steps:
4344
- name: Print Release Notes (Use it as you want)
44-
run: echo "${{ needs.enhanced_release_notes.outputs.enhanced_notes }}"
45+
run: |
46+
echo "---"
47+
echo "${{ needs.enhanced_release_notes.outputs.release_notes }}"
48+
echo "---"
49+
echo "${{ needs.enhanced_release_notes.outputs.enhanced_notes }}"

generate-enhanced-notes/README.md

Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -32,10 +32,13 @@ jobs:
3232
verbose: true
3333

3434
- name: Print Release Notes (Use it as you want)
35-
run: echo "${{ steps.release_notes.outputs.enhanced_notes }}"
35+
run: |
36+
echo "${{ steps.release_notes.outputs.release_notes }}"
37+
echo "---"
38+
echo "${{ steps.release_notes.outputs.enhanced_notes }}"
3639
```
3740
38-
### Inputs (FILTERS)
41+
### Inputs
3942
4043
#### tag_name
4144
**Required** The name of the tag.
@@ -55,6 +58,17 @@ jobs:
5558
#### verbose
5659
**Optional** Whether to print verbose output. Default `false`.
5760

61+
---
62+
### Outputs
63+
64+
#### enhanced_notes
65+
The enhanced release notes.
66+
67+
#### release_notes
68+
The original release notes.
69+
70+
71+
5872
## TODO
5973
- [ ] Add support for multiple languages
6074
- [ ] Add support for multiple models

generate-enhanced-notes/action.yml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,8 @@ inputs:
2727
outputs:
2828
enhanced_notes:
2929
description: The generated release notes.
30+
release_notes:
31+
description: The default release notes.
3032

3133
runs:
3234
using: node16

generate-enhanced-notes/generate_enhanced_notes.js

Lines changed: 22 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,21 @@ const GptService = require('../services/gpt_service.js');
1313

1414
class GenerateEnhancedNotes {
1515

16+
filterPrTitles(input) {
17+
const lines = input.split('\n');
18+
19+
const filteredLines = lines.filter((line) => !/^## What's Changed|^## New Contributors|^\* @|^\*\*Full Changelog\*\*:/.test(line));
20+
21+
const output = filteredLines.map((line) => {
22+
const index = line.lastIndexOf(' by @');
23+
if (index !== -1) {
24+
return line.substring(0, index);
25+
}
26+
return line;
27+
}).filter(Boolean).join('\n');
28+
return output.trim();
29+
}
30+
1631
async call() {
1732

1833
var tagName = core.getInput('tag_name');
@@ -36,13 +51,17 @@ class GenerateEnhancedNotes {
3651

3752
const githubService = new GitHubService(token, owner, repo);
3853
var releasenotes = await githubService.generateReleaseNotes(tagName, previousTagName);
39-
logger.log(`RELEASE NOTES:\n\n${releasenotes}`);
54+
logger.log(`ORIGINAL RELEASE NOTES:\n\n${releasenotes}`);
55+
core.setOutput('release_notes', releasenotes);
56+
57+
var releaseNoteFiltered = this.filterPrTitles(releasenotes);
58+
logger.log(`FILTERED RELEASE NOTES:\n\n${releaseNoteFiltered}`);
4059

4160
const gptService = new GptService(openaiKey);
42-
var enhancedNotes = await gptService.generateReleaseNotes(releasenotes);
61+
var enhancedNotes = await gptService.generateReleaseNotes(releaseNoteFiltered);
4362
logger.log(`ENHANCED RELEASE NOTES:\n\n${enhancedNotes}`);
44-
4563
core.setOutput('enhanced_notes', enhancedNotes);
64+
4665
return enhancedNotes;
4766
}
4867
}

services/github_service.js

Lines changed: 1 addition & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -13,21 +13,6 @@ class GitHubService {
1313
this.repo = repo;
1414
}
1515

16-
filterPrTitles(input) {
17-
const lines = input.split('\n');
18-
19-
const filteredLines = lines.filter((line) => !/^## What's Changed|^## New Contributors|^\* @|^\*\*Full Changelog\*\*:/.test(line));
20-
21-
const output = filteredLines.map((line) => {
22-
const index = line.lastIndexOf(' by @');
23-
if (index !== -1) {
24-
return line.substring(0, index);
25-
}
26-
return line;
27-
}).filter(Boolean).join('\n');
28-
return output.trim();
29-
}
30-
3116
async generateReleaseNotes(tagName, previousTagName) {
3217
try {
3318
const response = await axios.post(`https://api.github.com/repos/${this.owner}/${this.repo}/releases/generate-notes`,
@@ -44,7 +29,7 @@ class GitHubService {
4429

4530
if (response.status === 200) {
4631
var data = response.data.body;
47-
return this.filterPrTitles(data);
32+
return data;
4833
} else {
4934
throw new Error(`Error generating release notes`);
5035
}

0 commit comments

Comments
 (0)