Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Setup Travis CI and npm publish #7

Merged
merged 4 commits into from
Apr 13, 2017
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .npmignore
Original file line number Diff line number Diff line change
@@ -1,2 +1,3 @@
bin
test
example
39 changes: 39 additions & 0 deletions .travis.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
language: node_js
node_js:
- 6.9.1
cache:
directories:
- ~/.nvm
- node_modules
git:
depth: 1
env:
global:
- RELEASE_BRANCH="master"
- MAIN_BRANCHES="master develop"
- secure: kF9ap+mpxH5Hpw4RYbSVEfPw1CZMETVthL8uMfoTvQ29544Ipzsd1aUzSTo7M8MXyhCRlU5Axene0X+9/6awWk90PtleHSvokrpDdQ9I1mGfzRI5FGJLOzYtkT+UDXcinlKB2t8TpWUCRPnmspNJdrClr6QYFFHGynHS66COURMpWu52ZvImt/ISXWOcdfTCyLCMpDPW0s0ve8xAD+ub/FrxRxarYSYsoIfBb2IUYk95wW2g4/IbiFswfZOUcFgYRp7Ihx5LfLDzmDNRfVXBGPcfYWccgp5N7c/W9Zp27r426qdMwbCQohYqxLq71QPtseJlKSPlHlR+Jo5rdGUHtCsTU1R+FOz+rZHHdagPytzXVZrwUofSnUhy+PCgxsW34tdF2PwiKKJ0HK13XtsHPkAESB0UnYl0jmImOaycfTR2ouCXHru64yDIL2pRKeKxwHZVtrEdYfJPiMw+QZKWogCtOaNwSc6orRGtr29jWaMZr43b52hn5wUYZ42iTp4Fx+dJwhFcvF4I6eAT9iAVVvgAl6N+n6eByYPO3jpvuVRvksFlNDoqQJXGEmA14pKbDJih1DJkiYon9UR/oUvSbdu5YbkxynHh90dLETW9UBiDvQcF87hUTOY4JAncQISHWtcfTq/vAnCWmM5/ssSclfdiKQTtoKZW3JpuSt6u4EU=
before_script:
- chmod -R +x bin
- ./bin/version-increment.sh || { exit 1; }
- npm run build
script:
- npm run lint && npm test || { exit 1; }
after_success:
- ./bin/ci/push.sh
- npm run example:build
deploy:
provider: npm
email: alexeybondarenko@me.com
skip_cleanup: true
api_key:
secure: dASyJlh/ZSqV/QTpAteCbWh3baP+1EishSpS1mDOeDWj+eYBmWP29Lehx7IA6/0FFiubSvEx8MFi8Qse0CLXwOlOnqIfSGAmWiy7JN6qRGptUhJWerFLvvdv2Z/pA7YCGoMZkFbzIQq+evce48tV40HY5slP2mHUvRwIbTAtla8Z0ZIepELb69FJiiRA4TtUX4uXPiw1vdphNEZLIYra83D4B+EoK4lzmrqMdBRMZjGd1i1O1rniO184mBjzoA4HvJ7ITIHVsWGiA9cTqc/TJb1edJ16/yxxcrfpDkNoJJZ/bhKkDENlvGPAlJHtImdo9IUo814wUba/Xt2Xhp09MU+2iHfaT0b4eahOegS+iXlIOWTVAsZMUW7wNeidlEe8VSyBpQ3ZT2AHi6LNULfTAnqIJDEWh8POvM9Hj9RF0q1OIuSa3jspbxXfJRadiqbDG68ubsZTrIh8dTsXIb/qIYHLpfXAeGeK2xIUzgWoSB57jGrgAcMkfUOroP2Aa7KLU6R7lOBBgUQSQDYbPmpmh8pF8XvYyAuh4BgeaeMEW70LhPSaDphG1soZqC8TPnlhzPMiUbxtJ9RAuDUj+eO9oNQ6jYTPcg3vwAoJkub2fa+1xlFm46npJBmMDHGkmPIsOfo29Erh4gWxk3/f3wal9yfOt7Gi3WO81IiQhZoXnVk=
on:
branch: master
repo: Nebo15/react-nebo15-currency-input
deploy:
provider: pages
skip_cleanup: true
github_token: $GITHUB_TOKEN # Set in travis-ci.org dashboard
local_dir: example
on:
branch: master
27 changes: 27 additions & 0 deletions bin/ci/push.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
#!/bin/bash
# This setup works with Tavis-CI.

echo "Setting Gih user/password";
git config --global user.email "travis@travis-ci.com";
git config --global user.name "Travis-CI";
git config --global push.default upstream;

REPO_URL="https://$GITHUB_TOKEN@github.com/$TRAVIS_REPO_SLUG.git";
git remote add upstream $REPO_URL

if [ "$TRAVIS_PULL_REQUEST" == "false" ]; then

echo "Version. Commiting version increment.";
git add package.json;
git commit -m "Increment version [ci skip]";

if [ "$TRAVIS_BRANCH" == "$RELEASE_BRANCH" ]; then
./bin/release.sh -t $TRAVIS_BRANCH -l;
fi;

if [[ "$MAIN_BRANCHES" =~ "$TRAVIS_BRANCH" ]]; then
echo "Done. Commiting changes back to repo.";
git push upstream HEAD:$TRAVIS_BRANCH > /dev/null 2>&1;
git push upstream HEAD:$TRAVIS_BRANCH --tags > /dev/null 2>&1;
fi;
fi;
87 changes: 87 additions & 0 deletions bin/release.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,87 @@
#!/bin/bash

# This script simplifies releasing a new Docker image of your release.
# It will run following steps:
# 1. Create git tag with version number specified in package.json
# 2. Tag Docker container that is created by build.sh script to a Docker Hub repo.
# 3. Upload changes to Docker Hub.
#
# Usage:
# ./bin/release.sh -a DOCKER_HUB_ACCOUNT_NAME [-v RELEASE_VERSION -l -f]
# '-l' - create additional tag :latest.
# '-f' - force tag creating when git working tree is not empty.

# Find package.json inside project tree.
# This allows to call bash scripts within any folder inside project.
PROJECT_DIR=$(git rev-parse --show-toplevel)
if [ ! -f "${PROJECT_DIR}/package.json" ]; then
echo "[E] Can't find '${PROJECT_DIR}/package.json'"
echo " Check that you run this script inside git repo or init a new one in project root."
fi

# Extract project name and version from package.json
PROJECT_NAME=$(cat "${PROJECT_DIR}/package.json" \
| grep name \
| head -1 \
| awk -F: '{ print $2 }' \
| sed 's/[",]//g' \
| tr -d '[[:space:]]')
PROJECT_VERSION=$(cat "${PROJECT_DIR}/package.json" \
| grep version \
| head -1 \
| awk -F: '{ print $2 }' \
| sed 's/[",]//g' \
| tr -d '[[:space:]]')
REPO_TAG=$PROJECT_VERSION

# A POSIX variable
OPTIND=1 # Reset in case getopts has been used previously in the shell.

# Default settings
IS_LATEST=0

if git diff-index --quiet HEAD --; then
PASS_GIT=1
# no changes
else
PASS_GIT=0
fi

# Parse ARGS
while getopts "v:la:ft:" opt; do
case "$opt" in
v) PROJECT_VERSION=$OPTARG
;;
t) REPO_TAG=$OPTARG
;;
l) IS_LATEST=1
;;
f) PASS_GIT=1
;;
esac
done

# Get release notes
PREVIOUS_TAG=$(git describe HEAD^1 --abbrev=0 --tags)
GIT_HISTORY=$(git log --no-merges --format="- %s" $PREVIOUS_TAG..HEAD)

if [[ $PREVIOUS_TAG == "" ]]; then
GIT_HISTORY=$(git log --no-merges --format="- %s")
fi;

# Create git tag that matches release version
if [ `git tag --list $PROJECT_VERSION` ]; then
echo "[W] Git tag '${PROJECT_VERSION}' already exists. I won't be created during release."
else
if [ ! $PASS_GIT ]; then
echo "[E] Working tree contains uncommited changes. This may cause wrong relation between image tag and git tag."
echo " You can skip this check with '-f' option."
exit 1
else
echo "[I] Creating git tag '${PROJECT_VERSION}'.."
echo " Release Notes: "
echo $GIT_HISTORY

git tag -a $PROJECT_VERSION -m "${GIT_HISTORY}"
fi
fi
35 changes: 35 additions & 0 deletions bin/version-increment.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
#!/bin/bash

# This script increments patch version number in package.json according to a SEMVER spec.

# Find package.json inside project tree.
# This allows to call bash scripts within any folder inside project.
PROJECT_DIR=$(git rev-parse --show-toplevel)
if [ ! -f "${PROJECT_DIR}/package.json" ]; then
echo "[E] Can't find '${PROJECT_DIR}/package.json'"
echo " Check that you run this script inside git repo or init a new one in project root."
fi

# Extract project name and version from package.json
PROJECT_NAME=$(cat "${PROJECT_DIR}/package.json" \
| grep name \
| head -1 \
| awk -F: '{ print $2 }' \
| sed 's/[",]//g' \
| tr -d '[[:space:]]')
PROJECT_VERSION=$(cat "${PROJECT_DIR}/package.json" \
| grep version \
| head -1 \
| awk -F: '{ print $2 }' \
| sed 's/[",]//g' \
| tr -d '[[:space:]]')

# Increment patch version
# Source: https://github.com/fmahnke/shell-semver/blob/master/increment_version.sh
a=( ${PROJECT_VERSION//./ } )
((a[2]++))
NEW_PROJECT_VERSION="${a[0]}.${a[1]}.${a[2]}"

echo "[I] Incrementing project version from '${PROJECT_VERSION}' to '${NEW_PROJECT_VERSION}' in 'package.json'."
sed -i'' -e "s/\"version\": \"${PROJECT_VERSION}\"/\"version\": \"${NEW_PROJECT_VERSION}\"/g" "${PROJECT_DIR}/package.json"
# Here you can modify other files (for eg. README.md) that contains version.
7 changes: 4 additions & 3 deletions package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "react-nebo15-currency-input",
"version": "1.0.0",
"version": "0.1.0",
"description": "Currency input for React JS",
"main": "lib/react-nebo15-currency-input.min.js",
"scripts": {
Expand Down Expand Up @@ -34,8 +34,9 @@
"estraverse-fb": "^1.3.1",
"jsdom": "^9.12.0",
"mocha": "^2.3.4",
"react-addons-test-utils": "^15.5.1",
"react-dom": "^15.5.3",
"react-addons-test-utils": "15.4.2",
"react-dom": "^15.4.2",
"react-test-renderer": "^15.5.4",
"rimraf": "^2.6.1",
"sinon": "^2.1.0",
"sinon-chai": "^2.9.0",
Expand Down