@cedjj/mg-release v1.0.10
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-releaseRequirements
- 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 npmsUsage
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 releaseAdvanced
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.
-tor--typecan be used to indicate other types of increment (MAJOR, MINOR or _PATCH).-vor--versioncan 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). -por--pushindicate whether to push results (branches and tags) tooriginor 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
developusing"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
-devsuffix (like1.0.1-dev). - Commit changes from last step to
developusing"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
7 years ago