GitlabAwesomeRelease
Generate changelog from tags and MergeRequests on GitLabâ„¢
GITLAB is a trademark of GitLab Inc. in the United States and other countries and regions
This is inspired by GitHub Changelog Generator
Example
see CHANGELOG.md
Requirements
- Ruby v2.1+
- GitLab v9.0.0+
- GitLab API v4
Installation
Add this line to your application's Gemfile:
gem 'gitlab_awesome_release'
And then execute:
$ bundle
Or install it yourself as:
$ gem install gitlab_awesome_release
Usage
create_note
generate changelog
$ gitlab_awesome_release create_note --filename=CHANGELOG.md
options
All options can be specified in both the command arguments and environment variables
--gitlab-api-endpoint
,GITLAB_API_ENDPOINT
(either one is required)- GitLab API endpoint (e.g.
http://example.com/api/v4
)
- GitLab API endpoint (e.g.
--gitlab-api-private-token
,GITLAB_API_PRIVATE_TOKEN
(either one is required)- Your private token. see /profile/account
--gitlab-project-name
,GITLAB_PROJECT_NAME
(either one is required)- Target project (e.g.
group/repo_name
)
- Target project (e.g.
--from-tag
,FROM_TAG
- The first tag to create a changelog
- default: oldest tag
--to-tag
,TO_TAG
- The last tag to create a changelog
- default: latest tag
--filename
,FILENAME
- Filepath to changelog file (e.g.
CHANGELOG.md
) - if empty, output to console
- Filepath to changelog file (e.g.
--allow-tag-format
,ALLOW_TAG_FORMAT
- Tag format for release note heading (regular expression pattern)
- default:
^v?[\d.]+
--merge-request-commit-format
,MERGE_REQUEST_COMMIT_FORMAT
- Commit format for matching merge request (regular expression pattern)
- default:
^Merge branch .*See merge request .*\!(\d+)$
--log-level
,LOG_LEVEL
- Log level
(debug|info|warn|error|fatal|unknown)
- default:
info
- Log level
create_latest_note
generate release note only latest version and unreleased
$ gitlab_awesome_release create_latest_note
options
All options can be specified in both the command arguments and environment variables
--gitlab-api-endpoint
,GITLAB_API_ENDPOINT
(either one is required)- GitLab API endpoint (e.g.
http://example.com/api/v4
)
- GitLab API endpoint (e.g.
--gitlab-api-private-token
,GITLAB_API_PRIVATE_TOKEN
(either one is required)- Your private token. see /profile/account
--gitlab-project-name
,GITLAB_PROJECT_NAME
(either one is required)- Target project (e.g.
group/repo_name
)
- Target project (e.g.
--filename
,FILENAME
- Filepath to changelog file (e.g.
CHANGELOG.md
) - if empty, output to console
- Filepath to changelog file (e.g.
--allow-tag-format
,ALLOW_TAG_FORMAT
- Tag format for release note heading (regular expression pattern)
- default:
^v?[\d.]+
--merge-request-commit-format
,MERGE_REQUEST_COMMIT_FORMAT
- Commit format for matching merge request (regular expression pattern)
- default:
^Merge branch .*See merge request .*\!(\d+)$
--log-level
,LOG_LEVEL
- Log level
(debug|info|warn|error|fatal|unknown)
- default:
info
- Log level
marking
Add version label to MergeRequests
example) https://gitlab.com/sue445/gitlab_awesome_release/merge_requests?state=merged
$ gitlab_awesome_release marking --from-tag=v0.1.0 --to-tag=v0.2.0
options
All options can be specified in both the command arguments and environment variables
--gitlab-api-endpoint
,GITLAB_API_ENDPOINT
(either one is required)- GitLab API endpoint (e.g.
http://example.com/api/v4
)
- GitLab API endpoint (e.g.
--gitlab-api-private-token
,GITLAB_API_PRIVATE_TOKEN
(either one is required)- Your private token. see /profile/account
--gitlab-project-name
,GITLAB_PROJECT_NAME
(either one is required)- Target project (e.g.
group/repo_name
)
- Target project (e.g.
--from-tag
,FROM_TAG
(either one is required)- The first tag to marking
--to-tag
,TO_TAG
(either one is required)- The last tag to marking
--label
,LABEL
- Label to be added to the MergeRequest
- default:
--to-tag
orTO_TAG
--log-level
,LOG_LEVEL
- Log level
(debug|info|warn|error|fatal|unknown)
- default:
info
- Log level
ProTip
Environment variables read from ~/.env.gitlab
and current .env.gitlab
~/.env.gitlab
GITLAB_API_ENDPOINT=http://example.com/api/v4
GITLAB_API_PRIVATE_TOKEN=XXXXXXXXXXXXXXXXXXX
ALLOW_TAG_FORMAT=^v?[\d.]+
current .env.gitlab
GITLAB_PROJECT_NAME=group/name
ALLOW_TAG_FORMAT=^v?[\d.]+
If defined both ~/.env.gitlab
and current .env.gitlab
, current .env.gitlab
is priority
Development
After checking out the repo, run bin/setup
to install dependencies. Then, run rake spec
to run the tests. You can also run bin/console
for an interactive prompt that will allow you to experiment. Run bundle exec gitlab_awesome_release
to use the gem in this directory, ignoring other installed copies of this gem.
To install this gem onto your local machine, run bundle exec rake install
. To release a new version, update the version number in version.rb
, and then run bundle exec rake release
, which will create a git tag for the version, push git commits and tags, and push the .gem
file to rubygems.org.
Contributing
Bug reports and pull requests are welcome on GitHub at https://gitlab.com/sue445/gitlab_awesome_release.
License
The gem is available as open source under the terms of the MIT License.