-
Notifications
You must be signed in to change notification settings - Fork 4.2k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Automatically sync backport changelog to issue #62973
Changes from 6 commits
07cd519
1c89015
f93b069
8593f04
1224442
d1070df
8bb22a2
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,70 @@ | ||
name: Sync Core Backport Issue | ||
|
||
on: | ||
push: | ||
branches: | ||
- trunk | ||
|
||
jobs: | ||
sync-backport-changelog: | ||
name: Sync Core Backport Issue | ||
runs-on: ubuntu-latest | ||
steps: | ||
- uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7 | ||
- name: Sync Issue | ||
uses: actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea # v7.0.1 | ||
with: | ||
script: | | ||
const labelName = '🤖 Sync Backport Changelog'; | ||
const issues = await github.paginate(github.rest.issues.listForRepo, { | ||
owner: context.repo.owner, | ||
repo: context.repo.repo, | ||
labels: [labelName], | ||
state: 'open', | ||
per_page: 1, | ||
}); | ||
|
||
if (issues.length === 0) { | ||
console.log(`No issues found with the "${labelName}" label.`); | ||
return; | ||
} | ||
|
||
const [latestIssue] = issues; | ||
const versionMatch = latestIssue.title.match(/(\d+\.\d+)/); | ||
if (!versionMatch) { | ||
console.log('Could not find a version number in the latest issue title.'); | ||
return; | ||
} | ||
|
||
const version = versionMatch[1]; | ||
console.log(`Latest version: ${version}`); | ||
|
||
const { execSync } = require('child_process'); | ||
const processedChangelog = execSync(`awk '/./ {print ($0 ~ /^[-*]/ ? " " : "- ") $0}' backport-changelog/${version}/*.md`).toString().trim(); | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Could we check the last commit for changes in this directory before doing anything else? Seems like it might save us some API requests. There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. What API requests would it save? I'm already checking if the content is different. There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. The very first one What I'm getting at is that I think that not starting the workflow if it's not necessary is a good idea There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Added an early abort 8bb22a2 |
||
|
||
const startDelimiter = '<!-- START TRUNK BACKPORT CHANGELOG -->'; | ||
const endDelimiter = '<!-- END TRUNK BACKPORT CHANGELOG -->'; | ||
const autoGeneratedContent = `${startDelimiter}\n${processedChangelog}\n${endDelimiter}`; | ||
|
||
const regex = new RegExp(`${startDelimiter}[\\s\\S]*${endDelimiter}`); | ||
let newBody; | ||
|
||
if (regex.test(latestIssue.body)) { | ||
// If delimiters exist, replace the content between them | ||
newBody = latestIssue.body.replace(regex, autoGeneratedContent); | ||
} else { | ||
// If delimiters don't exist, append the new content at the end | ||
newBody = `${latestIssue.body}\n\n${autoGeneratedContent}`; | ||
} | ||
|
||
if (newBody.trim() !== latestIssue.body.trim()) { | ||
await github.rest.issues.update({ | ||
owner: context.repo.owner, | ||
repo: context.repo.repo, | ||
issue_number: latestIssue.number, | ||
body: newBody | ||
}); | ||
console.log('Issue description updated successfully.'); | ||
} else { | ||
console.log('Issue description is already up to date.'); | ||
} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
We don't need commit history for this test, so cleaning up a bit.