Create new release issue #16
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', | |
per_page: 1, | |
head: 'changeset-release/main' | |
}); | |
if (prs.data.length === 0) { | |
core.setFailed('No closed PR found with branch changeset-release/main.'); | |
} else { | |
const pr = prs.data[0]; | |
console.log('Found PR:', pr); | |
const comments = await github.rest.issues.listComments({ | |
owner: 'primer', | |
repo: 'brand', | |
issue_number: pr.number | |
}); | |
const filteredComments = comments.data.filter(comment => comment.user.login !== 'github-actions'); | |
console.log('Filtered comments:', filteredComments); | |
core.setOutput('comments', JSON.stringify(filteredComments)); | |
} | |
- name: Post comments to issue | |
if: success() | |
uses: actions/github-script@v7 | |
with: | |
github-token: ${{ secrets.GITHUB_TOKEN }} | |
script: | | |
const comments = JSON.parse('${{ steps.get_pr_comments.outputs.comments }}'); | |
const issue_number = ${{ steps.created-issue.outputs.number }}; | |
console.log('Posting comments to issue number:', issue_number); | |
for (const comment of comments) { | |
console.log('Posting comment:', comment.body); | |
await github.rest.issues.createComment({ | |
owner: context.repo.owner, | |
repo: context.repo.repo, | |
issue_number: issue_number, | |
body: comment.body | |
}); | |
} |