Coder Social home page Coder Social logo

hahow / probot-conventional-release Goto Github PK

View Code? Open in Web Editor NEW
59.0 4.0 10.0 724 KB

A GitHub App built with Probot that creates GitHub Release following Conventional Commits

Home Page: https://github.com/apps/conventional-release-bot

License: ISC License

JavaScript 100.00%
probot conventional-commits semantic-release probot-app

probot-conventional-release's Introduction

GitHub Conventional Release Bot

Build Status

A GitHub App built with Probot that creates GitHub Release following Conventional Commits.

Usage

  1. Install and configure the GitHub App: github.com/apps/conventional-release-bot
  2. Add commit that message structure should following Conventional Commits
<type>[optional scope]: <description>

[optional body]

[optional footer]
  1. Push commits (or merged PR) to master branch, and then the GitHub Release will be created

1_luxfee4jnww2lr9_22sdca

  1. Git tags (based on SemVer)
  2. Release date
  3. Release types: Bug Fixes, New Features and BREAKING CHANGES (follow Conventional Commits's type)
  4. Commit's scope (follow Conventional Commits's scope)
  5. Commit's description
  6. Commit's SHA
  7. Commit's author
  8. Diff with last release

Developer Guide

Follow the Configure a GitHub App section of Probot document to create your GitHub App

Requirements

  • node >= 8.9.3
  • yarn >= 1.3.2

Permissions

  • Pull requests Access: Read & write
  • Repository contents Access: Read & write

screen shot 2018-01-08 at 17 53 42

Subscribe to events

  • Pull request

screen shot 2018-01-08 at 12 22 52

Installation

Clone repository:

$ git clone https://github.com/hahow/probot-conventional-release.git

Install packages:

$ yarn install

Run Probot server:

$ yarn start

Deployment

You can deploy the app to Glitch, Heroku or Now.

probot-conventional-release's People

Contributors

amowu avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

probot-conventional-release's Issues

Honor pre 1.0.0 release breaking changes

According to semver the API may change with releases before the 1.0.0 release. https://semver.org/#spec-item-4

I would still like to track the breaking changes being made to the API using conventional commits so we can easily communicate to early adopters that the API did change.

The current behavior is to perform a major release version bump on all BREAKING CHANGES. I propose that for versions < 1.0.0 that BREAKING CHANGE commits only trigger a minor release.

Batch commits into larger release

What is the intended workflow to batch releases with more that a single commit?

As I understand it the purpose of this bot is to determines the new semver tag and creates a new github release with that tag based on new commits to master.

As such a typical workflow of merging to master creates a new release for every commit. This creates lots of noise and make its hard to track what has changed beyond just reading the git log, thus defeating the purpose of the bot.

Is there an intended workflow to batch multiple commits into a single release?

I tried creating a develop branch and setting that branch as the github default. Then new PR and changes would land on the develop branch. Then to create a batched release I created a PR from develop to master. This correctly created a batch release as expected.

But there were a few edge cases that made this workflow not ideal.

  1. We use the Rebase+Merge strategy with Github, as such we want to disable the Merge commits option in Github. But the version diff for the change log generation will break unless we use a merge commit for the merge of develop to master. We can just do the merge commit locally and push it up to Github, but the bot does not seem to trigger on pushes to master that are not part of PRs, (Maybe this is a separate bug?)
  2. By changing the default branch to a develop branch in Github, Github thinks that all the Merge commits in the master branch need to be merged back into the develop branch and suggests merging master back into develop, which should not be necessary. This one can just be ignored if there is no real solution to it.

Both of these issues combined made me think that I was missing something obvious with how this bot was intended to be used. Any pointers on how to manage batched releases with this bot would be great.

Can release note's commits only get from master branch?

When push master directly with new commits, there are some commits which is not included in master also been published on release note.

The error scenario is:

Given v1.0.0 has commit A & B both in develop and master branch
  And hotfix commit C merged into master, feature commit D merged into develop
 When push develop, then push master
 Then commit C, D both show on release note (should be only commit C)

Thanks for helping :)

修改 Commits Parse 規則

原本是在 push master 的時候,拿取上一版 tag 之後的所有 commits 來作 parse,但是萬一最新 merge 的 commits 之中,commit 時間落在在一版 tag 之前,就會發生漏掉的問題。

目前朝向不要用 push master 的方式,改用 pull request merged 的方式拿取所有 commits。

BREAKING CHANGE 無效

我在 commit message 中輸入如下:

BREAKING CHANGE: xxxxxx

merge 進 develop 後, tag 沒有從 0.xx.yy 到 1.0.0

:(

最近好像不會在 PR merge 之後產生新的 Release 了

狀況是這樣:

開 PR 的時候 Bot 一樣會在 PR 裡面留下 merge 後會產生的版本資訊跟描述,但是 PR merge 之後沒有產生新的 release 跟 tag

沒有特別留意,但是可能從六月開始就不會在 merge 的時候自動產生 release 了,會不會是 GitHub 有什麼更新?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.