From 03b5617312bfbbceaf8e0dd0befd7f60e353445b Mon Sep 17 00:00:00 2001 From: FunkeCoder23 <12570656+FunkeCoder23@users.noreply.github.com> Date: Fri, 15 Nov 2024 07:39:15 -0500 Subject: [PATCH] Update release workflow (#219) * add bare-bones contributing guide * remove GITLAB_PAT token instructions as unneeded * add git cliff workflow and config add git cliff information to contributing.md squash --------- Co-authored-by: funkecoder23 --- .github/ISSUE_TEMPLATE/bug_report.md | 4 + .github/workflows/git_cliff.yml | 33 ++++++++ CONTRIBUTING.md | 34 ++++++++ README.md | 24 ------ cliff.toml | 112 +++++++++++++++++++++++++++ 5 files changed, 183 insertions(+), 24 deletions(-) create mode 100644 .github/workflows/git_cliff.yml create mode 100644 CONTRIBUTING.md create mode 100644 cliff.toml diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md index b928996..7d04f54 100644 --- a/.github/ISSUE_TEMPLATE/bug_report.md +++ b/.github/ISSUE_TEMPLATE/bug_report.md @@ -12,6 +12,9 @@ A clear and concise description of what the bug is. **To Reproduce** Steps to reproduce the behavior: +1. +2. +3. **Expected behavior** A clear and concise description of what you expected to happen. @@ -23,6 +26,7 @@ If the logs are short, make sure to triple backtick them, or use https://pastebi **Hardware:** - OS and distro: [e.g. Raspberry Pi OS, Ubuntu, Rocky] - Server: [e.g. VM, Baremetal, Pi] + - Knightcrawler Version: [2.0.xx] **Additional context** Add any other context about the problem here. diff --git a/.github/workflows/git_cliff.yml b/.github/workflows/git_cliff.yml new file mode 100644 index 0000000..bc14b3a --- /dev/null +++ b/.github/workflows/git_cliff.yml @@ -0,0 +1,33 @@ +on: + push: + branches: + - main + workflow_dispatch: + +jobs: + changelog: + name: Generate changelog + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v4 + with: + fetch-depth: 0 + + - name: Generate a changelog + uses: orhun/git-cliff-action@v3 + with: + config: cliff.toml + args: --verbose + env: + OUTPUT: CHANGELOG.md + GITHUB_REPO: ${{ github.repository }} + + - name: Commit + run: | + git config user.name 'github-actions[bot]' + git config user.email 'github-actions[bot]@users.noreply.github.com' + set +e + git add CHANGELOG.md + git commit -m "Update changelog" + git push https://${{ secrets.GITHUB_TOKEN }}@github.com/${{ github.repository }}.git ${{ github.ref }} \ No newline at end of file diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md new file mode 100644 index 0000000..2bbc55e --- /dev/null +++ b/CONTRIBUTING.md @@ -0,0 +1,34 @@ +We use [Meaningful commit messages](https://reflectoring.io/meaningful-commit-messages/) + +Tl;dr: +1. It should answer the question: “What happens if the changes are applied?". +2. Use the imperative, present tense. It is easier to read and scan quickly: +``` +Right: Add feature to alert admin for new user registration +Wrong: Added feature ... (past tense) +``` +3. The summary should always be able to complete the following sentence: +`If applied, this commit will… ` + +We use [git-cliff] for our changelog. + +The breaking flag is set to true when the commit has an exclamation mark after the commit type and scope, e.g.: +`feat(scope)!: this is a breaking change` + +Keywords (Commit messages should start with these): +``` +# Added +add +support +# Removed +remove +delete +# Fixed +test +fix +``` + +Any other commits will fall under the `Changed` category + + +This project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html) \ No newline at end of file diff --git a/README.md b/README.md index 4520625..27c7c2a 100644 --- a/README.md +++ b/README.md @@ -67,30 +67,6 @@ Then set any of the values you wouldd like to customize. By default, Knight Crawler is configured to be *relatively* conservative in its resource usage. If running on a decent machine (16GB RAM, i5+ or equivalent), you can increase some settings to increase consumer throughput. This is especially helpful if you have a large backlog from [importing databases](#importing-external-dumps). -### DebridMediaManager setup (optional) - -There are some optional steps you should take to maximise the number of movies/tv shows we can find. - -We can search DebridMediaManager hash lists which are hosted on GitHub. This allows us to add hundreds of thousands of movies and tv shows, but it requires a Personal Access Token to be generated. The software only needs read access and only for public repositories. To generate one, please follow these steps: - -1. Navigate to GitHub settings -> Developer Settings -> Personal access tokens -> Fine-grained tokens (click [here](https://github.com/settings/tokens?type=beta) for a direct link) -2. Press `Generate new token` -3. Fill out the form (example data below): - ``` - Token name: - KnightCrawler - Expiration: - 90 days - Description: - - Repository access - (checked) Public Repositories (read-only) - ``` -4. Click `Generate token` -5. Take the new token and add it to the bottom of the [stack.env](deployment/docker/stack.env) file - ``` - GITHUB_PAT= - ``` ### Configure external access Please choose which applies to you: diff --git a/cliff.toml b/cliff.toml new file mode 100644 index 0000000..14b2b09 --- /dev/null +++ b/cliff.toml @@ -0,0 +1,112 @@ +# git-cliff ~ configuration file +# https://git-cliff.org/docs/configuration + +[changelog] +# changelog header +header = """ +# Changelog\n +All notable changes to this project will be documented in this file. + +The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), +and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).\n +""" +# template for the changelog body +# https://keats.github.io/tera/docs/#introduction +body = """ +{%- macro remote_url() -%} + https://github.com/{{ remote.github.owner }}/{{ remote.github.repo }} +{%- endmacro -%} + +{% if version -%} + ## [{{ version | trim_start_matches(pat="v") }}] - {{ timestamp | date(format="%Y-%m-%d") }} +{% else -%} + ## [Unreleased] +{% endif -%} + +### Details\ + +{% for group, commits in commits | group_by(attribute="group") %} + #### {{ group | upper_first }} + {%- for commit in commits %} + - {{ commit.message | upper_first | trim }}\ + {% if commit.github.username %} by @{{ commit.github.username }}{%- endif -%} + {% if commit.github.pr_number %} in \ + [#{{ commit.github.pr_number }}]({{ self::remote_url() }}/pull/{{ commit.github.pr_number }}) \ + {%- endif -%} + {% endfor %} +{% endfor %} + +{%- if github.contributors | filter(attribute="is_first_time", value=true) | length != 0 %} + ## New Contributors +{%- endif -%} + +{% for contributor in github.contributors | filter(attribute="is_first_time", value=true) %} + * @{{ contributor.username }} made their first contribution + {%- if contributor.pr_number %} in \ + [#{{ contributor.pr_number }}]({{ self::remote_url() }}/pull/{{ contributor.pr_number }}) \ + {%- endif %} +{%- endfor %}\n +""" +# template for the changelog footer +footer = """ +{%- macro remote_url() -%} + https://github.com/{{ remote.github.owner }}/{{ remote.github.repo }} +{%- endmacro -%} + +{% for release in releases -%} + {% if release.version -%} + {% if release.previous.version -%} + [{{ release.version | trim_start_matches(pat="v") }}]: \ + {{ self::remote_url() }}/compare/{{ release.previous.version }}..{{ release.version }} + {% endif -%} + {% else -%} + [unreleased]: {{ self::remote_url() }}/compare/{{ release.previous.version }}..HEAD + {% endif -%} +{% endfor %} + +""" +# remove the leading and trailing whitespace from the templates +trim = true + +[git] +# parse the commits based on https://www.conventionalcommits.org +conventional_commits = true +# filter out the commits that are not conventional +filter_unconventional = true +# process each line of a commit as an individual commit +split_commits = false +# regex for preprocessing the commit messages +commit_preprocessors = [ + # remove issue numbers from commits + { pattern = '\((\w+\s)?#([0-9]+)\)', replace = "" }, +] +# regex for parsing and grouping commits +commit_parsers = [ + { message = "^.*: add", group = "Added" }, + { message = "^add", group = "Added" }, + { message = "^.*: support", group = "Added" }, + { message = "^support", group = "Added" }, + { message = "^.*: remove", group = "Removed" }, + { message = "^remove", group = "Removed" }, + { message = "^.*: delete", group = "Removed" }, + { message = "^delete", group = "Removed" }, + { message = "^.*: test", group = "Fixed" }, + { message = "^test", group = "Fixed" }, + { message = "^.*: fix", group = "Fixed" }, + { message = "^fix", group = "Fixed" }, + { message = "^.*", group = "Changed" }, +] +# protect breaking changes from being skipped due to matching a skipping commit_parser +protect_breaking_commits = false +# filter out the commits that are not matched by commit parsers +filter_commits = true +# regex for matching git tags +tag_pattern = "v[0-9].*" +# regex for skipping tags +skip_tags = "v0.1.0-beta.1" +# regex for ignoring tags +ignore_tags = "" +# sort the tags topologically +topo_order = false +# sort the commits inside sections by oldest/newest order +sort_commits = "oldest" \ No newline at end of file