Release MergeRequest generator for GitLab
Gem Version test Maintainability Coverage Status
This is inspired by the git-pr-release
- Ruby v2.6+
- GitLab v8.17.0+
- GitLab API v4+
$ gem install gitlab_mr_release
Copy setting files. And edit these files.
$ gitlab_mr_release init create .env.gitlab create gitlab_mr_release.md.erb
see lib/templates/
$ gitlab_mr_release create --source=develop --target=master --labels=release MergeRequest is created [Title] Release develop -> master [Description] # MergeRequests * [ ] !7 Add fresh @sue445 [Url] http://example.com/your/project/merge_requests/15
description is accepted MergeRequests title between --source and --target
$ gitlab_mr_release help create Usage: gitlab_mr_release create Options: -s, [--source=SOURCE] # Source branch (e.g. develop) -t, [--target=TARGET] # Target branch (e.g. master) [--title=TITLE] # MergeRequest title (default. 'Release :timestamp :source -> :target') -l, [--labels=LABELS] # Labels for MR as a comma-separated list (e.g. 'label1,label2') Create merge requrst
Some options can be specified in both the command arguments and environment variables
--source,DEFAULT_SOURCE_BRANCH(either one is required)- Source branch (e.g.
develop)
- Source branch (e.g.
--target,DEFAULT_TARGET_BRANCH(either one is required)- Target branch (e.g.
master)
- Target branch (e.g.
--title- MergeRequest title (default. 'Release :timestamp :source -> :target')
--labels,DEFAULT_LABELS- Labels for MR as a comma-separated list (e.g.
label1,label2, default. no labels)
- Labels for MR as a comma-separated list (e.g.
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
TEMPLATE_FILE=gitlab_mr_release.md.erb
DEFAULT_TITLE=Release <%= Time.now %> <%= source_branch %> -> <%= target_branch %>
current .env.gitlab
GITLAB_PROJECT_NAME=group/name
TEMPLATE_FILE=gitlab_mr_release.md.erb
DEFAULT_SOURCE_BRANCH=develop
DEFAULT_TARGET_BRANCH=master
DEFAULT_LABELS=release
If defined both ~/.env.gitlab and current .env.gitlab, current .env.gitlab is priority
# MergeRequests <% merge_requests.each do |mr| -%> * [ ] !<%= mr.iid %> <%= mr.title %> @<%= mr.author.username %> <% end -%>
merge_requests is array of MergeRequest
DEFAULT_TITLE=Release <%= Time.now %> <%= source_branch %> -> <%= target_branch %>
DEFAULT_TITLE supports erb.
source_branchis--sourceorDEFAULT_SOURCE_BRANCHtarget_branchis--targetinDEFAULT_TARGET_BRANCH
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_mr_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.
Bug reports and pull requests are welcome on GitHub at https://github.com/sue445/gitlab_mr_release.
The gem is available as open source under the terms of the MIT License.