From 292b24148b40e4e5e00eabe02112ade25a4f82cc Mon Sep 17 00:00:00 2001 From: avivkeller Date: Wed, 15 Oct 2025 14:39:14 -0400 Subject: [PATCH 1/6] feat(cicd): automate the creation of blog posts --- .github/workflows/create-release-post.yml | 50 +++++++++++++++++++++++ apps/site/scripts/release-post/index.mjs | 9 +++- 2 files changed, 57 insertions(+), 2 deletions(-) create mode 100644 .github/workflows/create-release-post.yml diff --git a/.github/workflows/create-release-post.yml b/.github/workflows/create-release-post.yml new file mode 100644 index 0000000000000..da90f453f06ee --- /dev/null +++ b/.github/workflows/create-release-post.yml @@ -0,0 +1,50 @@ +# Security Notes +# Only selected Actions are allowed within this repository. Please refer to (https://github.com/nodejs/nodejs.org/settings/actions) +# for the full list of available actions. If you want to add a new one, please reach out a maintainer with Admin permissions. +# REVIEWERS, please always double-check security practices before merging a PR that contains Workflow changes!! +# AUTHORS, please only use actions with explicit SHA references, and avoid using `@master` or `@main` references or `@version` tags. + +name: Create Release Blog Post + +on: + workflow_dispatch: + inputs: + version: + type: string + +defaults: + run: + # This ensures that the working directory is the root of the repository + working-directory: ./ + +permissions: + contents: write + +jobs: + create-post: + runs-on: ubuntu-latest + + steps: + - uses: nodejs/web-team/actions/setup-environment@2c2897a93eb99b4cdca270729100bc0887c758d9 + with: + pnpm: true + use-version-file: true + + - id: create-release-post + working-directory: apps/site + run: node --run scripts:release-post ${{ inputs.version }} >> $GITHUB_OUTPUT + + - name: Open pull request + uses: gr2m/create-or-update-pull-request-action@b65137ca591da0b9f43bad7b24df13050ea45d1b # v1.10.1 + # Creates a PR or update the Action's existing PR, or + # no-op if the base branch is already up-to-date. + env: + GITHUB_TOKEN: ${{ secrets.GH_USER_TOKEN }} + with: + author: Node.js GitHub Bot + branch: release-${{ steps.create-release-post.output.version }} + body: This PR was generated automatically. + commit-message: 'feat(blog): create post for ${{ steps.create-release-post.output.version }}' + labels: fast-track + title: 'feat(blog): create post for ${{ steps.create-release-post.output.version }}' + update-pull-request-title-and-body: true diff --git a/apps/site/scripts/release-post/index.mjs b/apps/site/scripts/release-post/index.mjs index b7aba6e8ebfec..478b19b1878b7 100644 --- a/apps/site/scripts/release-post/index.mjs +++ b/apps/site/scripts/release-post/index.mjs @@ -234,7 +234,7 @@ const writeToFile = results => { } writeFile(blogPostPath, results.content) - .then(() => resolve(blogPostPath)) + .then(() => resolve([blogPostPath, results])) .catch(error => reject(ERRORS.FAILED_FILE_CREATION(error.message))); }); }; @@ -263,7 +263,12 @@ if (import.meta.url.startsWith('file:')) { .then(formatPost) .then(writeToFile) .then( - filepath => console.log('Release post created:', filepath), + ([filepath, { version }]) => { + console.error('Release post created:', filepath); + if (process.env.GITHUB_OUTPUT) { + console.log(`version=v${version}`); + } + }, error => console.error('Some error occurred here!', error.stack) ); } From e86f998c7db66de55edb0ef1fa5e664721fbb856 Mon Sep 17 00:00:00 2001 From: Aviv Keller Date: Thu, 16 Oct 2025 16:55:31 -0400 Subject: [PATCH 2/6] run url Signed-off-by: Aviv Keller --- .github/workflows/create-release-post.yml | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/.github/workflows/create-release-post.yml b/.github/workflows/create-release-post.yml index da90f453f06ee..fb433e761aebc 100644 --- a/.github/workflows/create-release-post.yml +++ b/.github/workflows/create-release-post.yml @@ -43,7 +43,10 @@ jobs: with: author: Node.js GitHub Bot branch: release-${{ steps.create-release-post.output.version }} - body: This PR was generated automatically. + body: | + Creates a new blog post for ${{ steps.create-release-post.output.version }}. + + Check this workflow's logs at ${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}. commit-message: 'feat(blog): create post for ${{ steps.create-release-post.output.version }}' labels: fast-track title: 'feat(blog): create post for ${{ steps.create-release-post.output.version }}' From 5db96ccceb1472392a9b11bdb6cda5f8d01e3a7d Mon Sep 17 00:00:00 2001 From: avivkeller Date: Sat, 18 Oct 2025 10:51:26 -0400 Subject: [PATCH 3/6] fixup! --- .github/workflows/create-release-post.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/create-release-post.yml b/.github/workflows/create-release-post.yml index fb433e761aebc..a47d4eef22d07 100644 --- a/.github/workflows/create-release-post.yml +++ b/.github/workflows/create-release-post.yml @@ -45,7 +45,7 @@ jobs: branch: release-${{ steps.create-release-post.output.version }} body: | Creates a new blog post for ${{ steps.create-release-post.output.version }}. - + Check this workflow's logs at ${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}. commit-message: 'feat(blog): create post for ${{ steps.create-release-post.output.version }}' labels: fast-track From 2a3d81dcd56332b79f3571981a302a28c97764d0 Mon Sep 17 00:00:00 2001 From: Aviv Keller Date: Sat, 18 Oct 2025 11:02:43 -0400 Subject: [PATCH 4/6] Update .github/workflows/create-release-post.yml Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> Signed-off-by: Aviv Keller --- .github/workflows/create-release-post.yml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/create-release-post.yml b/.github/workflows/create-release-post.yml index a47d4eef22d07..aacd68ad2264f 100644 --- a/.github/workflows/create-release-post.yml +++ b/.github/workflows/create-release-post.yml @@ -42,12 +42,12 @@ jobs: GITHUB_TOKEN: ${{ secrets.GH_USER_TOKEN }} with: author: Node.js GitHub Bot - branch: release-${{ steps.create-release-post.output.version }} + branch: release-${{ steps.create-release-post.outputs.version }} body: | - Creates a new blog post for ${{ steps.create-release-post.output.version }}. + Creates a new blog post for ${{ steps.create-release-post.outputs.version }}. Check this workflow's logs at ${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}. - commit-message: 'feat(blog): create post for ${{ steps.create-release-post.output.version }}' + commit-message: 'feat(blog): create post for ${{ steps.create-release-post.outputs.version }}' labels: fast-track - title: 'feat(blog): create post for ${{ steps.create-release-post.output.version }}' + title: 'feat(blog): create post for ${{ steps.create-release-post.outputs.version }}' update-pull-request-title-and-body: true From 99e3ab1a0fae3c4ff5e1dc9f68509a75f5fbd043 Mon Sep 17 00:00:00 2001 From: avivkeller Date: Sat, 18 Oct 2025 11:37:29 -0400 Subject: [PATCH 5/6] copilot suggestions --- .github/workflows/create-release-post.yml | 7 ++++--- apps/site/scripts/release-post/index.mjs | 11 +++++++---- 2 files changed, 11 insertions(+), 7 deletions(-) diff --git a/.github/workflows/create-release-post.yml b/.github/workflows/create-release-post.yml index aacd68ad2264f..3dbf7127c663c 100644 --- a/.github/workflows/create-release-post.yml +++ b/.github/workflows/create-release-post.yml @@ -10,6 +10,7 @@ on: workflow_dispatch: inputs: version: + description: The version to generate a blog post for. If none provided, use the latest release. type: string defaults: @@ -32,7 +33,7 @@ jobs: - id: create-release-post working-directory: apps/site - run: node --run scripts:release-post ${{ inputs.version }} >> $GITHUB_OUTPUT + run: node --run scripts:release-post ${{ inputs.version }} - name: Open pull request uses: gr2m/create-or-update-pull-request-action@b65137ca591da0b9f43bad7b24df13050ea45d1b # v1.10.1 @@ -47,7 +48,7 @@ jobs: Creates a new blog post for ${{ steps.create-release-post.outputs.version }}. Check this workflow's logs at ${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}. - commit-message: 'feat(blog): create post for ${{ steps.create-release-post.outputs.version }}' + commit-message: "feat(blog): create post for ${{ steps.create-release-post.outputs.version }}" labels: fast-track - title: 'feat(blog): create post for ${{ steps.create-release-post.outputs.version }}' + title: "feat(blog): create post for ${{ steps.create-release-post.outputs.version }}" update-pull-request-title-and-body: true diff --git a/apps/site/scripts/release-post/index.mjs b/apps/site/scripts/release-post/index.mjs index 478b19b1878b7..e55a09ce69fd7 100644 --- a/apps/site/scripts/release-post/index.mjs +++ b/apps/site/scripts/release-post/index.mjs @@ -21,7 +21,7 @@ 'use strict'; import { existsSync, readFileSync } from 'node:fs'; -import { writeFile } from 'node:fs/promises'; +import { writeFile, appendFile } from 'node:fs/promises'; import { resolve } from 'node:path'; import handlebars from 'handlebars'; @@ -263,10 +263,13 @@ if (import.meta.url.startsWith('file:')) { .then(formatPost) .then(writeToFile) .then( - ([filepath, { version }]) => { - console.error('Release post created:', filepath); + async ([filepath, { version }]) => { + console.log('Release post created:', filepath); if (process.env.GITHUB_OUTPUT) { - console.log(`version=v${version}`); + await appendFile( + process.env.GITHUB_OUTPUT, + `version=v${version}\n` + ); } }, error => console.error('Some error occurred here!', error.stack) From 01415ba2c29986129b8e991636cbaf4bde6d4dac Mon Sep 17 00:00:00 2001 From: avivkeller Date: Sat, 18 Oct 2025 11:43:39 -0400 Subject: [PATCH 6/6] fixup! --- .github/workflows/create-release-post.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/create-release-post.yml b/.github/workflows/create-release-post.yml index 3dbf7127c663c..2efa1a877fd6a 100644 --- a/.github/workflows/create-release-post.yml +++ b/.github/workflows/create-release-post.yml @@ -48,7 +48,7 @@ jobs: Creates a new blog post for ${{ steps.create-release-post.outputs.version }}. Check this workflow's logs at ${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}. - commit-message: "feat(blog): create post for ${{ steps.create-release-post.outputs.version }}" + commit-message: 'feat(blog): create post for ${{ steps.create-release-post.outputs.version }}' labels: fast-track - title: "feat(blog): create post for ${{ steps.create-release-post.outputs.version }}" + title: 'feat(blog): create post for ${{ steps.create-release-post.outputs.version }}' update-pull-request-title-and-body: true