Create new release issue #17
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
name: Create new release issue | |
on: | |
workflow_dispatch: | |
release: | |
types: [published] | |
jobs: | |
create-issue: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Get latest release | |
id: get_latest_release | |
uses: actions/github-script@v7 | |
with: | |
github-token: ${{ secrets.GITHUB_TOKEN }} | |
script: | | |
const releases = await github.rest.repos.listReleases({ | |
owner: 'primer', | |
repo: 'brand' | |
}); | |
const latestRelease = releases.data.find(release => release.name.includes('@primer/react-brand')); | |
if (!latestRelease) { | |
core.setFailed('No @primer/react-brand release found.'); | |
} else { | |
console.log('Latest release:', latestRelease); | |
core.setOutput('release_name', latestRelease.name); | |
core.setOutput('release_url', latestRelease.html_url); | |
core.setOutput('release_body', latestRelease.body); | |
} | |
- name: Create new release issue | |
if: success() | |
id: created-issue | |
uses: JasonEtco/create-an-issue@v2 | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
release_name: ${{ steps.get_latest_release.outputs.release_name }} | |
release_url: ${{ steps.get_latest_release.outputs.release_url }} | |
release_body: ${{ steps.get_latest_release.outputs.release_body }} | |
with: | |
update_existing: true | |
search_existing: true | |
- name: Get comments from last release | |
if: success() | |
id: get_pr_comments | |
uses: actions/github-script@v7 | |
with: | |
github-token: ${{ secrets.GITHUB_TOKEN }} | |
script: | | |
const prs = await github.rest.pulls.list({ | |
owner: "primer", | |
repo: "brand", | |
state: "closed", | |
sort: "updated", | |
direction: "desc", | |
}); | |
const targetPr = prs.data.find( | |
(pr) => pr.head.ref === "changeset-release/main" | |
); | |
if (!targetPr) { | |
console.error("No closed PR found with branch changeset-release/main."); | |
process.exit(1); | |
} else { | |
const comments = await github.rest.issues.listComments({ | |
owner: "primer", | |
repo: "brand", | |
issue_number: targetPr.number, | |
}); | |
const filteredComments = comments.data.filter( | |
(comment) => | |
comment.user.login !== "github-actions[bot]" && | |
comment.user.login !== "changeset-bot[bot]" | |
); | |
console.log('Filtered comments:', filteredComments); | |
// post comments to issue | |
const issue_number = ${{ steps.created-issue.outputs.number }}; | |
console.log('Posting comments to issue number:', issue_number); | |
for (const comment of filteredComments) { | |
await github.rest.issues.createComment({ | |
owner: 'primer', | |
repo: 'brand-releases', | |
issue_number: issue_number, | |
body: comment.body | |
}); | |
} | |
} |