Skip to content

Customizable Changelog Generator for GitLab and GitHub using Milestone

License

Notifications You must be signed in to change notification settings

weikangchia/gitcg

Repository files navigation

Git Changelog Generator

gitcg is a customizable changelog generator for GitLab and GitHub using milestone.

Getting Started

Pre-requisites

  • Install node
  • Install gitcg
    npm install -g gitcg
    

GitLab

  • Get a personal token (scopes: read_api)
  • Store it as a environment variable export GITLAB_TOKEN=<your personal GitLab token>

GitHub

  • Get a personal token (scopes: repo)
  • Store it as a environment variable export GITHUB_TOKEN=<your personal GitHub token>

Usage

USAGE:
    gitcg

OPTIONS:
    -m, --milestone=milestone        title of milestone
    -p, --projectPath=projectPath    path to project
    --config=config                  custom config file name (default is config.json)

Examples

  1. GitHub repo (e.g. https://github.com/weikangchia/gitcg)
gitcg -m "v0.1.0" -p "weikangchia/gitcg"
  1. GitLab repo (e.g. https://gitlab.com/weikangchia/gitcg)
gitcg -m "v0.1.0" -p "weikangchia/gitcg"
  1. Other config files
    If you are managing multiple repo or projects and have different configuration, you could create different configuration files in the config folder and use them.
gitcg -m "v0.1.0" -p "weikangchia/gitcg" --config="config-github.json"
gitcg -m "v0.1.0" -p "weikangchia/gitcg" --config="config-gitlab.json"

Configuration Options

By default gitcg reads all configurable options from config.json at the following location

Unix: ~/.config/gitcg
Windows: %LOCALAPPDATA%\gitcg
Can be overridden with XDG_CONFIG_HOME

Below are the available configurable options.

service

Name Value
type string
mandatory true
supportedValues gitlab, github

Example

{
  "service": "gitlab"
}

serviceUrl

Name Value
type string
mandatory true

Example

{
  "service": "gitlab",
  "serviceUrl": "https://gitlab.com"
}

sections

Name Value
type array
mandatory false

Example

{
  "service": "gitlab",
  "serviceUrl": "https://gitlab.com",
  "sections": []
}

title

Name Value
type string
parent sections
mandatory true

Example

{
  "service": "gitlab",
  "serviceUrl": "https://gitlab.com",
  "sections": [
    {
      "title": ":star2: New Features",
      "labels": ["feature"]
    }
  ]
}

labels

Name Value
type string
parent sections
mandatory true

Example

{
  "service": "gitlab",
  "serviceUrl": "https://gitlab.com",
  "sections": [
    {
      "title": ":star2: New Features",
      "labels": ["feature"]
    }
  ]
}

enableContributorsSection

Name Value
type boolean
mandatory false

Example

{
  "service": "gitlab",
  "serviceUrl": "https://gitlab.com",
  "enableContributorsSection": true,
  "contributorTitle": ":heart: Contributors\nWe'd like to thank all the contributors who worked on this sprint!"
}

contributorsToExclude

Name Value
type array
mandatory false

Example

{
  "service": "gitlab",
  "serviceUrl": "https://gitlab.com",
  "enableContributorsSection": true,
  "contributorsToExclude": ["user1", "user2"],
}

contributorTitle

Name Value
type string
mandatory false

Example

{
  "service": "gitlab",
  "serviceUrl": "https://gitlab.com",
  "enableContributorsSection": true,
  "contributorTitle": ":heart: Contributors\nWe'd like to thank all the contributors who worked on this sprint!"
}

enableExternalIssuesTracker

Name Value
type array
mandatory false

Example

{
  "service": "gitlab",
  "serviceUrl": "https://gitlab.com",
  "enableExternalIssuesTracker": true
}

externalIssuesUrl

Name Value
type string
mandatory false

Example

{
  "service": "gitlab",
  "serviceUrl": "https://gitlab.com",
  "enableExternalIssuesTracker": true,
  "externalIssuesUrl": "https://youtrack.com/issue",
}

externalIssuesProjects

Name Value
type array
mandatory false

Example

{
  "service": "gitlab",
  "serviceUrl": "https://gitlab.com",
  "enableExternalIssuesTracker": true,
  "externalIssuesUrl": "https://youtrack.com/issue",
  "externalIssuesProjects": ["PROJ1", "PROJ2"],
}

enableCommitSha

Name Value
type boolean
mandatory false

Example

{
  "service": "gitlab",
  "serviceUrl": "https://gitlab.com",
  "enableCommitSha": true
}

Example

{
  "service": "github",
  "serviceUrl": "https://github.com",
  "sections": [
    {
      "title": ":star2: New Features",
      "labels": ["feature"]
    },  
    {
      "title": ":bug: Bug Fixes",
      "labels": ["bug"]
    },
    {
      "title": ":barber: Tasks",
      "labels": ["task"]
    },
    {
      "title": ":lock: Security Fixes",
      "labels": ["security"]
    },
    {
      "title": ":arrow_up: Dependency Upgrades",
      "labels": ["dependency-upgrade"]
    }
  ],
  "enableContributorsSection": true,
  "contributorsToExclude": ["renovate_bot"],
  "contributorTitle": ":heart: Contributors\nWe'd like to thank all the contributors who worked on this milestone!",
  "enableExternalIssuesTracker": false,
  "enableCommitSha": true
}

License

Distributed under the MIT License. See LICENSE for more information.

Contributing

Contributions are what make the open source community such an amazing place to be learn, inspire, and create. Any contributions you make are greatly appreciated.

Contact

Wei Kang - weikangchia[@]gmail.com