diff --git a/lib/security-announcement.js b/lib/security-announcement.js index 500aae02..eeab460a 100644 --- a/lib/security-announcement.js +++ b/lib/security-announcement.js @@ -1,9 +1,12 @@ +import fs from 'node:fs'; import { NEXT_SECURITY_RELEASE_REPOSITORY, checkoutOnSecurityReleaseBranch, getVulnerabilitiesJSON, + getVulnerabilitiesJSONPath, validateDate, formatDateToYYYYMMDD, + commitAndPushVulnerabilitiesJSON, createIssue } from './security-release/security-release.js'; import auth from './auth.js'; @@ -40,10 +43,21 @@ export default class SecurityAnnouncement { validateDate(content.releaseDate); const releaseDate = new Date(content.releaseDate); - await Promise.all([ + const [dockerIssue, buildIssue] = await Promise.all([ this.createDockerNodeIssue(releaseDate), this.createBuildWGIssue(releaseDate) ]); + + content.buildIssue = buildIssue; + content.dockerIssue = dockerIssue; + + const vulnerabilitiesJSONPath = getVulnerabilitiesJSONPath(); + fs.writeFileSync(vulnerabilitiesJSONPath, JSON.stringify(content, null, 2)); + const commitMessage = 'chore: add build and docker issue link'; + commitAndPushVulnerabilitiesJSON([vulnerabilitiesJSONPath], + commitMessage, { cli: this.cli, repository: this.repository }); + + this.cli.ok('Added docker and build issue in vulnerabilities.json'); } async createBuildWGIssue(releaseDate) { @@ -53,7 +67,7 @@ export default class SecurityAnnouncement { }; const { title, content } = this.createPreleaseAnnouncementIssue(releaseDate, 'build'); - await createIssue(title, content, repository, { cli: this.cli, req: this.req }); + return createIssue(title, content, repository, { cli: this.cli, req: this.req }); } createPreleaseAnnouncementIssue(releaseDate, team) { @@ -71,6 +85,6 @@ export default class SecurityAnnouncement { }; const { title, content } = this.createPreleaseAnnouncementIssue(releaseDate, 'docker'); - await createIssue(title, content, repository, { cli: this.cli, req: this.req }); + return createIssue(title, content, repository, { cli: this.cli, req: this.req }); } } diff --git a/lib/security-release/security-release.js b/lib/security-release/security-release.js index e3c62f8e..e662910a 100644 --- a/lib/security-release/security-release.js +++ b/lib/security-release/security-release.js @@ -107,6 +107,12 @@ export function getVulnerabilitiesJSON(cli) { return file; } +export function getVulnerabilitiesJSONPath() { + const vulnerabilitiesJSONPath = path.join(process.cwd(), + NEXT_SECURITY_RELEASE_FOLDER, 'vulnerabilities.json'); + return vulnerabilitiesJSONPath; +} + export function validateDate(releaseDate) { const value = new Date(releaseDate).valueOf(); if (Number.isNaN(value) || value < 0) { @@ -135,6 +141,7 @@ export async function createIssue(title, content, repository, { cli, req }) { const data = await req.createIssue(title, content, repository); if (data.html_url) { cli.ok(`Created: ${data.html_url}`); + return data.html_url; } else { cli.error(data); process.exit(1);