From 24d57226ea7a09093aab7826f655d246e458aabf Mon Sep 17 00:00:00 2001 From: Muhammad Rehan Date: Fri, 21 Mar 2025 18:02:24 +0500 Subject: [PATCH] feat: add semantic release setup --- .../.github/workflows/semantic-release.yaml | 35 +++++++++ {{copier__project_name}}/.releaserc.json | 77 +++++++++++++++++++ {{copier__project_name}}/CHANGELOG.md | 1 + 3 files changed, 113 insertions(+) create mode 100644 {{copier__project_name}}/.github/workflows/semantic-release.yaml create mode 100644 {{copier__project_name}}/.releaserc.json create mode 100644 {{copier__project_name}}/CHANGELOG.md diff --git a/{{copier__project_name}}/.github/workflows/semantic-release.yaml b/{{copier__project_name}}/.github/workflows/semantic-release.yaml new file mode 100644 index 0000000..61fbcca --- /dev/null +++ b/{{copier__project_name}}/.github/workflows/semantic-release.yaml @@ -0,0 +1,35 @@ +name: Semantic Release + +on: + push: + branches: + - main + +permissions: + contents: write + issues: write + +jobs: + semantic-release: + runs-on: ubuntu-latest + environment: dev + steps: + - name: Checkout + uses: actions/checkout@v4 + with: + fetch-depth: 0 + token: ${{ secrets.GITHUB_TOKEN }} + persist-credentials: false + + - name: Setup Node.js + uses: actions/setup-node@v4 + with: + node-version: "lts/*" + + - name: Install Dependencies + run: npm install semantic-release @semantic-release/changelog @semantic-release/git @semantic-release/github @semantic-release/commit-analyzer conventional-changelog-conventionalcommits + + - name: Run Semantic Release + run: npx semantic-release + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} diff --git a/{{copier__project_name}}/.releaserc.json b/{{copier__project_name}}/.releaserc.json new file mode 100644 index 0000000..20ee0ae --- /dev/null +++ b/{{copier__project_name}}/.releaserc.json @@ -0,0 +1,77 @@ +{ + "branches": [ + "main" + ], + "plugins": [ + [ + "@semantic-release/commit-analyzer", + { + "preset": "conventionalcommits" + } + ], + [ + "@semantic-release/release-notes-generator", + { + "preset": "conventionalcommits", + "presetConfig": { + "types": [ + { + "type": "feat", + "section": "Features" + }, + { + "type": "fix", + "section": "Bug Fixes" + }, + { + "type": "chore", + "hidden": true + }, + { + "type": "docs", + "section": "Documentation" + }, + { + "type": "style", + "hidden": true + }, + { + "type": "refactor", + "section": "Refactors" + }, + { + "type": "perf", + "section": "Performance" + }, + { + "type": "test", + "hidden": true + }, + { + "type": "depr", + "section": "Deprecations" + } + ] + } + } + ], + [ + "@semantic-release/changelog", + { + "changelogFile": "CHANGELOG.md", + "changelogTitle": "# Changelog" + } + ], + "@semantic-release/github", + [ + "@semantic-release/git", + { + "assets": [ + "CHANGELOG.md" + ], + "message": "chore(release): ${nextRelease.version} [skip ci]\n\n${nextRelease.notes}" + } + ] + ] + } + \ No newline at end of file diff --git a/{{copier__project_name}}/CHANGELOG.md b/{{copier__project_name}}/CHANGELOG.md new file mode 100644 index 0000000..825c32f --- /dev/null +++ b/{{copier__project_name}}/CHANGELOG.md @@ -0,0 +1 @@ +# Changelog