diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md new file mode 100644 index 0000000..b8eaf6a --- /dev/null +++ b/.github/PULL_REQUEST_TEMPLATE.md @@ -0,0 +1,26 @@ + + + +## Checklist + +- [ ] The PR has a meaningful title. It will be used to auto-generate the + changelog. + The PR has a meaningful description that sums up the change. It will be + linked in the changelog. +- [ ] PR contains a single logical change (to build a better changelog). +- [ ] Update the documentation. +- [ ] Categorize the PR by adding one of the labels: + `bug`, `enhancement`, `documentation`, `change`, `breaking`, `dependency` + as they show up in the changelog. +- [ ] Link this PR to related issues or PRs. + + diff --git a/.github/changelog-configuration.json b/.github/changelog-configuration.json new file mode 100644 index 0000000..56a090f --- /dev/null +++ b/.github/changelog-configuration.json @@ -0,0 +1,30 @@ +{ + "pr_template": "- ${{TITLE}} (#${{NUMBER}})", + "categories": [ + { + "title": "## 🚀 Features", + "labels": ["enhancement", "feature"] + }, + { + "title": "## 🛠️ Minor Changes", + "labels": ["change"] + }, + { + "title": "## 🔎 Breaking Changes", + "labels": ["breaking"] + }, + { + "title": "## 🐛 Fixes", + "labels": ["bug", "fix"] + }, + { + "title": "## 📄 Documentation", + "labels": ["documentation"] + }, + { + "title": "## 🔗 Dependency Updates", + "labels": ["dependency"] + } + ], + "template": "${{CATEGORIZED_COUNT}} changes since ${{FROM_TAG}}\n\n${{CHANGELOG}}" +} diff --git a/.github/workflows/auto-release.yaml b/.github/workflows/auto-release.yaml new file mode 100644 index 0000000..b6bf69c --- /dev/null +++ b/.github/workflows/auto-release.yaml @@ -0,0 +1,18 @@ +name: Autorelease +on: + pull_request: + types: + - synchronize + - labeled + - unlabeled + - closed + +jobs: + create-release-tag: + runs-on: ubuntu-latest + steps: + - name: Create new tag + uses: projectsyn/pr-label-tag-action@v1 + with: + trigger: | + Release diff --git a/.github/workflows/release.yaml b/.github/workflows/release.yaml new file mode 100644 index 0000000..8cf7be4 --- /dev/null +++ b/.github/workflows/release.yaml @@ -0,0 +1,33 @@ +name: Release +on: + push: + tags: + - v* + workflow_dispatch: + +jobs: + build: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + with: + fetch-depth: "0" + - name: Build changelog from PRs with labels + id: build_changelog + uses: mikepenz/release-changelog-builder-action@v5 + with: + configuration: ".github/changelog-configuration.json" + # PreReleases still get a changelog, but the next full release gets a diff since the last full release, + # combining possible changelogs of all previous PreReleases in between. + # PreReleases show a partial changelog since last PreRelease. + ignorePreReleases: "${{ !contains(github.ref, '-rc') }}" + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + - name: Create Release + uses: ncipollo/release-action@v1 + with: + body: ${{steps.build_changelog.outputs.changelog}} + prerelease: "${{ contains(github.ref, '-rc') }}" + # Ensure target branch for release is "master" + commit: master + token: ${{ secrets.GITHUB_TOKEN }}