Skip to content

Create new release issue #16

Create new release issue

Create new release issue #16

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
});
}