@cedjj/mg-release
v1.0.10
Published
Module that enables support for git-flow style releases via gulp
Downloads
3
Readme
gulp-release
A GulpJS plugin that enables support for git-flow style releases. It requires the gitflow command line tool to be installed on your system.
Gitflow
A proposed workflow revolving around the use of git as a central tool. Defines a branching model to follow using best practices and convenience directives.
- See the original concept at nvie.com.
- Read the derivations forged by the people at Atlassian.
Installation
gulp-release
is a GulpJS plugin. It defines custom tasks that group common flow-related behaviors when releasing software using git.
npm i --save-dev gulp-release
Requirements
- gitflow
^1.9.0
- gulp
~3.9
- npm
^3.0.0
# Add node repositories
curl -sL https://deb.nodesource.com/setup_4.x | sudo -E bash -
# Install dependencies
sudo apt-get install git-flow
sudo apt-get install -y nodejs
sudo npm update -g npms
Usage
Simple
In your gulpfile.js
declare:
'use strict';
var gulp = require('gulp');
var release = require('gulp-release');
release.register(gulp);
This will register tasks on your gulp
instance. After that, you'll be able to call (or depend upon) all the tasks described below, such as:
$ gulp release
Advanced
You may pass in an options
configuration object to the register
method to override some or all of the default settings.
'use strict';
var gulp = require('gulp');
var release = require('gulp-release');
release.register(gulp, { packages: ['package.json'] });
Here, the packages
property expects an array of globs that match json
files containing version information (i.e: package.json
, bower.json
, component.json
).
API
register(gulpInst, options)
Declares tasks on the gulpInst
gulp instance. options
is an optional object that can be defined to override the following sensible defaults:
{
tasks: {
release: 'release'
},
messages: {
bump: 'Bump release version',
next: 'Set next development version'
},
packages: ['package.json'] // Supports glob syntax
};
This parameters permits you to configure main task name, commit messages and .json
files containing a .version
attribute that will be bumped on a new release.
Tasks
release
Performs a full, automatic project release. Uses git flow release
internally. Name is configurable.
It's required that your version numbering follows semver specifications.
gulp release [-v --version] [-t --type] [-p --push]
The repository you invoke this task on, must be git flow
enabled. Run git flow init
if you haven't already, before running gulp release
. Otherwise, the task will fail.
- Next release version defaults to PATCH increment.
-t
or--type
can be used to indicate other types of increment (MAJOR, _MINOR or PATCH).-v
or--version
can be used to indicate a specific next version (such as3.2.2-beta
). If left blank, the version from your first configured package file (ie.,package.json
) will be used.- If your current version ends with a suffix, next default version will be that same number without the suffix
- (
0.0.2-dev
->0.0.2
). -p
or--push
indicate whether to push results (branches and tags) toorigin
or not after finishing the release process. Defaults tofalse
.
This recipe will perform the following actions, sequentially:
- Invoke
git flow release start -F <version>
. Where<version>
is either set from a command line argument or read from a package file. - Bump the version on all package files and generate a codename for the release.
- Commit changes from last step to
develop
using"Bump release version"
as message (configurable). - Invoke
git flow release finish -m <codename> <version>
. - Bump the version on all packages files to next development iteration using a
-dev
suffix (like1.0.1-dev
). - Commit changes from last step to
develop
using"Set next development version"
as message (configurable). - If the
-p
(or--push
) flag was set, push all tags and local branches toorigin
.
See the git flow release wiki for details on what's happening under the hood when calling
git flow release start|finish
.
License
MIT