Skip to content

Create new release issue #17

Create new release issue

Create new release issue #17

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