From a24affd6bc0fbe2d451b64f158a8c391d666a169 Mon Sep 17 00:00:00 2001 From: Konrad Szwarc Date: Wed, 22 Feb 2023 20:46:11 +0100 Subject: [PATCH] ci: automatically update version and changelog for Renovate's PRs (#206) --- .github/scripts/update-changelog.js | 19 ++++++++++ .../workflows/dependency-update-changelog.yml | 38 +++++++++++++++++++ CHANGELOG.md | 10 +++++ package-lock.json | 4 +- package.json | 2 +- 5 files changed, 70 insertions(+), 3 deletions(-) create mode 100644 .github/scripts/update-changelog.js create mode 100644 .github/workflows/dependency-update-changelog.yml diff --git a/.github/scripts/update-changelog.js b/.github/scripts/update-changelog.js new file mode 100644 index 0000000..ad58239 --- /dev/null +++ b/.github/scripts/update-changelog.js @@ -0,0 +1,19 @@ +const fs = require('fs'); + +module.exports = (version, prUrl) => { + const changelog = fs.readFileSync('CHANGELOG.md', 'utf8'); + const changelogLines = changelog.split('\n'); + const lastChangeIndex = changelogLines.findIndex((line) => line.startsWith('## [')); + + const textToAppend = ` +## [${version}] - ${new Date().toISOString().split('T')[0]} + +### Dependencies + +- chore(deps): update dependencies ([details](${prUrl})) +`.trim(); + + changelogLines.splice(lastChangeIndex, 0, textToAppend + '\n'); + + fs.writeFileSync('CHANGELOG.md', changelogLines.join('\n')); +}; diff --git a/.github/workflows/dependency-update-changelog.yml b/.github/workflows/dependency-update-changelog.yml new file mode 100644 index 0000000..d486ae4 --- /dev/null +++ b/.github/workflows/dependency-update-changelog.yml @@ -0,0 +1,38 @@ +name: Modify changelog for dependency updates + +on: + pull_request: + types: [labeled] + +jobs: + build: + if: github.event.label.name == 'dependencies' && github.repository == 'KonradSzwarc/devscard' + runs-on: ubuntu-latest + permissions: + contents: write + + steps: + - uses: actions/checkout@v3 + - name: Get project information + id: projectinfo + uses: gregoranders/nodejs-project-info@v0.0.19 + - name: Get next possible versions + id: semvers + uses: WyriHaximus/github-action-next-semvers@v1 + with: + version: ${{ steps.projectinfo.outputs.version }} + - name: Update package.json version + uses: reedyuk/npm-version@1.1.1 + with: + version: ${{ steps.semvers.outputs.patch }} + - name: Update CHANGELOG.md + uses: actions/github-script@v6 + with: + script: | + const script = require('.github/scripts/update-changelog.js'); + const version = '${{ steps.semvers.outputs.patch }}'; + const prUrl = '${{ github.event.pull_request.url }}'; + + script(version, prUrl); + - name: Commit changes + uses: stefanzweifel/git-auto-commit-action@v4 diff --git a/CHANGELOG.md b/CHANGELOG.md index 3abbea6..70028c2 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,12 +2,22 @@ All notable changes to this project will be documented in this file. +## [0.0.4] - 2023-02-22 + +### Workflow + +- ci: automatically update project version and changelog for Renovate's PRs + ## [0.0.3] - 2023-02-21 +### Dependencies + - chore(deps): update dependencies ([details](https://github.com/KonradSzwarc/devscard/pull/202)) ## [0.0.2] - 2023-02-16 +### Dependencies + - chore(deps): update dependencies ([details](https://github.com/KonradSzwarc/devscard/pull/201)) ## [0.0.1] - 2023-02-08 diff --git a/package-lock.json b/package-lock.json index 901f24c..bd30868 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "devscard", - "version": "0.0.2", + "version": "0.0.4", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "devscard", - "version": "0.0.2", + "version": "0.0.4", "hasInstallScript": true, "dependencies": { "@floating-ui/dom": "1.2.1", diff --git a/package.json b/package.json index 779e6a9..688a6f5 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "devscard", "description": "Template for creating a comprehensive virtual CV for developers.", - "version": "0.0.3", + "version": "0.0.4", "private": true, "engines": { "node": ">=14",