node-circleci-autorelease v2.2.4
node-circleci-autorelease
Autorelease your node packages.
It looks up the latest commit log and extracts release name.
git commit -m 'release 1.2.3'
git push origin masterCircleCI creates tag 1.2.3.
You can add and remove files for release tag via hooks.
installation
Just run the following command on your Node.js project.
npm install --save-dev node-circleci-autoreleaseinstall cli for global (optional)
Use nca-cli for omitting $(npm bin)/.
npm install -g nca-cliThis tiny module calls local nca command without absolute path (e.g. $(npm bin)/).
As nca-cli itself doesn't contain node-circleci-autorelease, you don't have to consider about version inconsistencies.
Notice: the following sample commands call global nca.
If you skip installing nca-cli, attach $(npm bin)/ before nca command.
usage
1. initializing
nca initTwo setting files will be generated.
.autorelease.yml: config file..releaseignore: files/patterns to be ignored in release. The same format as .gitignore.
You can set current node version with --node option.
nca init --node2. generate circle.yml
nca generateIt creates circle.yml to your current working directory for auto-release.
3. commit and push it
Push to master branch with a specific commit message.
git commit -m 'release X.Y.Z'
git push origin masterThen, CircleCI detects the commit message pattern and creates a tag X.Y.Z
(See version-bumping for automated commit.)
configuration
Edit .autorelease.yml. It will show below format.
hooks:
gh_pages:
pre:
- npm run generate-doc
config:
version_prefix: v
create_gh_pages: true
create_gh_pages: doc
circle:
machine:
environment:
node:
version: 6.2.0There are three fields in this format.
- config: config fields
- hooks: hook commands
- circle: totally compatible with circle.yml
config field
| key | description | default |
|---|---|---|
| git_user_name | user name of the release commit | CircleCI |
| git_user_email | user email of the release commit | circleci@example.com |
| npm_update_depth | --depth option to "npm update" | 0 ( = no run) |
| version_prefix | prefix of tags to be created | v |
| create_branch | create release branch or not | false |
| npm_shrinkwrap | run "npm shrinkwrap" before release | false |
| create_gh_pages | create gh-pages branch or not | false |
| gh_pages_dir | directory to publish on gh-pages | (null) |
npm_update_depth
node-circleci-autorelease tries to update node_modules via npm update everytime after npm install.
npm_update_depth config is the depth of the update.
By default, 0 is set and npm update will never occur.
config:
npm_update_depth: 3version_prefix
To release v1.2.3, you should set
config:
version_prefix: vat your .autorelease.yml and make a commit with message
release 1.2.3npm_shrinkwrap
node-circleci-autorelease tries to fix all the node_modules versions before release
by the executed ones using npm shrinkwrap. To enable this function,
config:
shrinkwrap: truegh-pages configuration
To release gh-pages branch, you should set
config:
create_gh_pages: true
gh_pages_dir: docIf gh_pages_dir is set, only the directory is hosted.
example
---
config:
git_user_name: shinout
git_user_email: shinout310@gmail.com
npm_update_depth: 5
version_prefix: v
create_branch: true
npm_shrinkwrap: true
create_gh_pages: true
gh_pages_dir: dochooks field
You can register commands before/after the following events.
- update_modules: before/after running
npm update - release: before/after releasing process
- gh_pages: before/after creating gh-pages branch
- bmp: before/after bumping (in
nca bmpcommand)
Each section must have "pre" or "post" section containing a command or list of commands.
example
- Convert ES6+ files in src to dist using babel
---
hooks:
update_modules:
post:
- babel src -d dist- Add timestamp
---
hooks:
release:
pre: date "+%s" > timestamp- Add documentation files before release using documentationjs
---
hooks:
gh_pages:
pre: documentation build --format html -o doc src/**/*circle field
Write your custom circle.yml setting here.
Don't write circle.yml directory, nca generate command will generate it automatically.
example
---
circle:
general:
branches:
ignore:
- xxx
machine:
environment:
ABC: 123
dependencies:
post:
- npm run xxx.releaseignore file
Files/patterns to be ignored in release. Format is the same as .gitignore.
example
# dot files
.*
# npm https://www.npmjs.com
node_modules
# documentations
/doc
# source files
/src
# test files
/test
# development tools
/tools
# CircleCI cetting https://circleci.com
circle.yml
# debug logs
*.logversion bumping
node-circleci-autorelease can bump versions with version-bumping tools.
Two bumping tools are available.
- bmp: kt3k/bmp.
- bmp: januswel/yangpao.
gem install bmpor
go get github.com/januswel/yangpaousage
nca bmp p
nca bmp m
nca bmp j
nca bmp rThey update version and commit with a message except running nca bmp r.
These commands also update circle.yml automatically. --skipCircle or its alias -s option skips updating circle.yml.
nca bmp p --skipCirclere-release
nca bmp r doesn't bump version. Instead, it makes an empty commit with the following message:
re-release X.Y.Zwhere X.Y.Z is the current version. This is useful when the last release is failed.
This feature is disabled by default.
bmp hooks
hooks:
bmp:
pre:
- echo "bmp start"
post:
- echo "bmp end"You can set bumping hooks in .autorelease.yml.
npm publish
Enable publishing your project by setting two environment variables at CircleCI.
NPM_AUTH # "_auth" of your .npmrc
NPM_EMAIL # "email" of your .npmrcthen CircleCI automatically runs npm publish.
DRY RUN
DRY_RUN=1 ncaJavaScript API
Run command with args.
es6+
import {run} from 'node-circleci-autorelease'
nca.run(['bmp', 'p', '-s'])commonjs
var nca = require('node-circleci-autorelease')
nca.run(['bmp', 'p', '-s'])Note that 2nd argument should be
LICENSE
MIT
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago