All Projects → saadmk11 → Changelog Ci

saadmk11 / Changelog Ci

Licence: mit
Changelog CI is a GitHub Action that generates changelog, Then the changelog is committed and/or commented to the release Pull request.

Programming Languages

python
139335 projects - #7 most used programming language

Projects that are alternatives of or similar to Changelog Ci

generate-changelog
generates changelog from git based on jira tickets
Stars: ✭ 18 (-73.53%)
Mutual labels:  changelog, continuous-integration, ci
Gocd
Main repository for GoCD - Continuous Delivery server
Stars: ✭ 6,314 (+9185.29%)
Mutual labels:  ci, continuous-integration
Abstruse
Abstruse is a free and open-source CI/CD platform that tests your models and code.
Stars: ✭ 704 (+935.29%)
Mutual labels:  ci, continuous-integration
Androidsdk
🐳 Full-fledged Android SDK Docker Image
Stars: ✭ 776 (+1041.18%)
Mutual labels:  ci, continuous-integration
Concourse
Concourse is a container-based continuous thing-doer written in Go.
Stars: ✭ 6,070 (+8826.47%)
Mutual labels:  ci, continuous-integration
Modern Cpp Template
A template for modern C++ projects using CMake, Clang-Format, CI, unit testing and more, with support for downstream inclusion.
Stars: ✭ 690 (+914.71%)
Mutual labels:  ci, continuous-integration
Github Changelog Generator
Automatically generate change log from your tags, issues, labels and pull requests on GitHub.
Stars: ✭ 6,631 (+9651.47%)
Mutual labels:  github-api, changelog
Buildbot
Python-based continuous integration testing framework; your pull requests are more than welcome!
Stars: ✭ 4,735 (+6863.24%)
Mutual labels:  ci, continuous-integration
Probot Gpg
A GitHub App that enforces GPG signatures on pull requests (no longer maintained)
Stars: ✭ 13 (-80.88%)
Mutual labels:  github-api, pull-requests
Iceci
IceCI is a continuous integration system designed for Kubernetes from the ground up.
Stars: ✭ 29 (-57.35%)
Mutual labels:  ci, continuous-integration
Simpleci
Simple docker-based continuous integration system
Stars: ✭ 61 (-10.29%)
Mutual labels:  ci, continuous-integration
Lambdacd
a library to define a continuous delivery pipeline in code
Stars: ✭ 655 (+863.24%)
Mutual labels:  ci, continuous-integration
Php Censor
PHP Censor is an open source self-hosted continuous integration server for PHP projects.
Stars: ✭ 619 (+810.29%)
Mutual labels:  ci, continuous-integration
Ansible Role Jenkins
Ansible Role - Jenkins CI
Stars: ✭ 689 (+913.24%)
Mutual labels:  ci, continuous-integration
Drone
Drone is a Container-Native, Continuous Delivery Platform
Stars: ✭ 24,287 (+35616.18%)
Mutual labels:  ci, continuous-integration
Toast
Containerize your development and continuous integration environments. 🥂
Stars: ✭ 748 (+1000%)
Mutual labels:  ci, continuous-integration
Fluenttc
🌊 👬 🏢 Integrate with TeamCity fluently
Stars: ✭ 42 (-38.24%)
Mutual labels:  ci, continuous-integration
Xcov
Nice code coverage reporting without hassle
Stars: ✭ 467 (+586.76%)
Mutual labels:  ci, continuous-integration
Bzppx Codepub
暴走皮皮虾之代码发布系统,是现代的持续集成发布系统,由后台管理系统和agent两部分组成,一个运行着的agent就是一个节点,本系统并不是造轮子,是"鸟枪"到"大炮"的创新,对"前朝遗老"的革命.
Stars: ✭ 471 (+592.65%)
Mutual labels:  ci, continuous-integration
Haiku
🚀 Instant Heroku deploys from GitHub branches
Stars: ✭ 17 (-75%)
Mutual labels:  ci, continuous-integration

Changelog CI Banner

GitHub release (latest by date) GitHub Workflow Status GitHub GitHub Marketplace GitHub stars

What is Changelog CI?

Changelog CI is a GitHub Action that generates changelog, Then the changelog is prepended to CHANGELOG.md file and committed and/or commented to the release Pull request.

How Does It Work:

Changelog CI uses python and GitHub API to generate changelog for a repository. First, it tries to get the latest release from the repository (If available). Then, it checks all the pull requests merged after the last release using the GitHub API. After that, it parses the data and generates the changelog. Finally, It writes the generated changelog at the beginning of the CHANGELOG.md (or user-provided filename) file. In addition to that, if a user provides a config (JSON file), Changelog CI parses the user-provided config file and renders the changelog according to users config. Then the changes are committed and/or commented to the release Pull request.

Usage:

To use this Action The pull request title must match with the default regex or the user-provided regex from the config file.

Default Title Regex: ^(?i:release) (title must start with the word "release" (case insensitive))

Default Version Number Regex: This Regex will be checked against a Pull Request title. This follows SemVer (Semantic Versioning) pattern. e.g. 1.0.0, 1.0, v1.0.1 etc.

For more details on Semantic Versioning pattern go to this link: https://regex101.com/r/Ly7O1x/3/

Note: you can provide your own regex through the config file

To Enable Commenting, Disable Committing, Group changelog items and some other options Look at the config file docs.

To integrate Changelog CI with your repositories Actions, Put this step inside your .github/workflows/workflow.yml file:

- name: Run Changelog CI
    uses: saadmk11/[email protected]
    with:
      # Optional, you can provide any name for your changelog file,
      # defaults to ``CHANGELOG.md`` if not provided.
      changelog_filename: MY_CHANGELOG.md
      # Optional, only required when you want more customization
      # e.g: group your changelog by labels with custom titles,
      # different version prefix, pull request title and version number regex etc.
      config_file: changelog-ci-config.json
      # Optional, This will be used to configure git
      # defaults to ``github-actions[bot]`` if not provided.
      committer_username:  'test'
      committer_email:  '[email protected]'
    env:
      # optional, only required for ``private`` repositories
      # and required if the changelog comment 
      # option is turned on through the config file
      GITHUB_TOKEN: ${{secrets.GITHUB_TOKEN}}

Changelog CI Badge:

![Changelog CI Status](https://github.com/<username>/<repo_name>/workflows/Changelog%20CI/badge.svg)

Output:

Changelog CI Status

Config File Usage (Optional):

Changelog CI config file is a JSON file that you can provide to you workflow like this:

with:
  config_file: changelog-ci-config.json

The config file will give you more flexibility and customization options.

Configuration Options:

  • header_prefix: The prefix before the version number. e.g. version: in Version: 1.0.2
  • commit_changelog: Value can be true or false. if not provided defaults to true. If it is set to true then Changelog CI will commit to the release pull request.
  • comment_changelog: Value can be true or false. if not provided defaults to false. If it is set to true then Changelog CI will comment on the release pull request. This requires GITHUB_TOKEN to be added to the workflow.
  • pull_request_title_regex: If the pull request title matches with this regex Changelog CI will generate changelog for it. Otherwise, it will skip the changelog generation. If pull_request_title_regex is not provided defaults to ^(?i:release) (title must start with the word "release" (case-insensitive)).
  • version_regex: This regex tries to find the version number from the pull request title. in case of no match, changelog generation will be skipped. if version_regex is not provided, it defaults to SemVer pattern.
  • group_config: By adding this you can group changelog items by your repository labels with custom titles.
{
  // Custom title for groups
  "title": "Bug Fixes",
  // pull request labels that will match this group
  "labels": ["bug", "bugfix"]
}

See this example output with group_config

See this example output without group_config

Example Config File:

{
  "header_prefix": "Version:",
  "commit_changelog": true,
  "comment_changelog": true,
  "pull_request_title_regex": "^Release",
  "version_regex": "v?([0-9]{1,2})+[.]+([0-9]{1,2})+[.]+([0-9]{1,2})\\s\\(\\d{1,2}-\\d{1,2}-\\d{4}\\)",
  "group_config": [
    {
      "title": "Bug Fixes",
      "labels": ["bug", "bugfix"]
    },
    {
      "title": "Code Improvements",
      "labels": ["improvements", "enhancement"]
    },
    {
      "title": "New Features",
      "labels": ["feature"]
    },
    {
      "title": "Documentation Updates",
      "labels": ["docs", "documentation", "doc"]
    }
  ]
}

In this Example version_regex matches any version number including date (e.g: v1.1.0 (01-23-2018)) in the pull request title. If you don't provide any regex Changelog CI will use default SemVer pattern. e.g. 1.0.1, v1.0.2.

Here pull_request_title_regex will match any pull request title that starts with Release you can match Any Pull Request Title by adding this pull_request_title_regex": ".*",

Click here to see the example output using this config

Example Workflow

name: Changelog CI

# Controls when the action will run. Triggers the workflow on a pull request
on:
  pull_request:
    types: [opened, reopened]

jobs:
  build:
    runs-on: ubuntu-latest

    steps:
      # Checks-out your repository
      - uses: actions/[email protected]

      - name: Run Changelog CI
        uses: saadmk11/[email protected]
        with:
          changelog_filename: CHANGELOG.md
          config_file: changelog-ci-config.json
        # Add this if you are using it on a private repository
        # Or if you have turned on commenting through the config file.
        env:
          GITHUB_TOKEN: ${{secrets.GITHUB_TOKEN}}

Changelog CI in Action (Comment & Commit)

Changelog CI

Example Changelog Output using config file:

Version: v2.1.0 (02-25-2020)

Bug Fixes

  • #53: Keep updating the readme
  • #54: Again updating the Same Readme file

New Features

  • #68: Update README.md

Documentation Updates

  • #66: Docs update

Version: v1.1.0 (01-01-2020)

Bug Fixes

  • #53: Keep updating the readme
  • #54: Again updating the Same Readme file

Documentation Updates

  • #66: Docs update

Example Changelog Output without using config file:

Version: 0.0.2

  • #53: Keep updating the readme
  • #54: Again updating the Same Readme file
  • #55: README update

Version: 0.0.1

  • #43: It feels like testing never ends
  • #35: Testing again and again
  • #44: This is again another test, getting tired
  • #37: This is again another test

License

The code in this project is released under the MIT License.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].