From 8a238b2709faabcd9df87dc0e5e40cdd259d179f Mon Sep 17 00:00:00 2001 From: Martin Walter Date: Thu, 8 Nov 2018 09:48:29 +0100 Subject: [PATCH] [QPE-138] Updating versioning for zip-file and feature branches --- .circleci/config.yml | 34 ++++++-- .gitignore | 1 + gulpfile.js | 13 ++- package-lock.json | 158 ++++++++++++++++++++++++++++++++++ package.json | 1 + scripts/bump-version.sh | 27 ++++-- scripts/create-release.sh | 9 +- scripts/get-bumped-version.sh | 7 ++ scripts/get-latest-version.sh | 0 scripts/install-ghr.sh | 0 scripts/print-version.sh | 10 --- settings.js | 1 + 12 files changed, 230 insertions(+), 31 deletions(-) mode change 100644 => 100755 scripts/bump-version.sh mode change 100644 => 100755 scripts/create-release.sh create mode 100755 scripts/get-bumped-version.sh mode change 100644 => 100755 scripts/get-latest-version.sh mode change 100644 => 100755 scripts/install-ghr.sh delete mode 100644 scripts/print-version.sh diff --git a/.circleci/config.yml b/.circleci/config.yml index eb96521..e1131b4 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -22,16 +22,33 @@ jobs: name: Run tests command: npm run test-once + bump-version: + <<: *defaults + steps: + - checkout + - run: + name: Bump version + command: scripts/bump-version.sh $GITHUB_ORG $GITHUB_REPO + - persist_to_workspace: + root: ~/qlik-network-chart + paths: + - BUMPED_VERSION + build: <<: *defaults steps: - checkout + - attach_workspace: + at: ~/qlik-network-chart - run: name: Install dependencies command: npm install - run: name: Build and package - command: npm run build + command: | + export VERSION=$(scripts/get-bumped-version.sh) + echo "Version: ${VERSION}" + npm run build environment: NODE_ENV: production - persist_to_workspace: @@ -39,8 +56,8 @@ jobs: paths: - build - store_artifacts: - path: build/qlik-network-chart.zip - destination: qlik-network-chart.zip + path: build + destination: build deploy: <<: *defaults steps: @@ -52,16 +69,22 @@ jobs: command: scripts/install-ghr.sh - run: name: Create GitHub Release - command: scripts/create-release.sh $GITHUB_ORG $GITHUB_REPO $PACKAGE_NAME + command: | + export VERSION=$(scripts/get-bumped-version.sh) + echo "Version: ${VERSION}" + scripts/create-release.sh $GITHUB_ORG $GITHUB_REPO $PACKAGE_NAME $VERSION workflows: version: 2 master_flow: jobs: - test - - build: + - bump-version: requires: - test + - build: + requires: + - bump-version - deploy: requires: - build @@ -69,3 +92,4 @@ workflows: branches: only: - master + - project-configuration diff --git a/.gitignore b/.gitignore index b38db2f..b469b66 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,3 @@ node_modules/ build/ +BUMPED_VERSION diff --git a/gulpfile.js b/gulpfile.js index 256c84f..129ee09 100644 --- a/gulpfile.js +++ b/gulpfile.js @@ -5,6 +5,7 @@ var settings = require('./settings'); var webpackConfig = require('./webpack.config'); var webpack = require('webpack'); var WebpackDevServer = require('webpack-dev-server'); +var jeditor = require("gulp-json-editor"); gulp.task('remove-build-folder', function(){ return del([settings.buildDestination], { force: true }); @@ -12,7 +13,7 @@ gulp.task('remove-build-folder', function(){ gulp.task('zip-build', function(){ return gulp.src(settings.buildDestination + '/**/*') - .pipe(zip(settings.name + '.zip')) + .pipe(zip(settings.name + '_' + settings.version + '.zip')) .pipe(gulp.dest(settings.buildDestination)); }); @@ -32,8 +33,16 @@ gulp.task('webpack-build', done => { }); }); +gulp.task('update-qext-version', function () { + return gulp.src("./build/" + settings.name + ".qext") + .pipe(jeditor({ + 'version': settings.version + })) + .pipe(gulp.dest("./build")); +}) + gulp.task('build', - gulp.series('remove-build-folder', 'webpack-build', 'zip-build') + gulp.series('remove-build-folder', 'webpack-build', 'update-qext-version', 'zip-build') ); gulp.task('watch', () => new Promise((resolve, reject) => { diff --git a/package-lock.json b/package-lock.json index 53c297b..57aa07c 100644 --- a/package-lock.json +++ b/package-lock.json @@ -739,6 +739,18 @@ "integrity": "sha512-shAmDyaQC4H92APFoIaVDHCx5bStIocgvbwQyxPRrbUY20V1EYTbSDchWbuwlMG3V17cprZhA6+78JfB+3DTPw==", "dev": true }, + "@types/node": { + "version": "10.12.3", + "resolved": "https://registry.npmjs.org/@types/node/-/node-10.12.3.tgz", + "integrity": "sha512-sfGmOtSMSbQ/AKG8V9xD1gmjquC9awIIZ/Kj309pHb2n3bcRAcGMQv5nJ6gCXZVsneGE4+ve8DXKRCsrg3TFzg==", + "dev": true + }, + "@types/semver": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@types/semver/-/semver-5.5.0.tgz", + "integrity": "sha512-41qEJgBH/TWgo5NFSvBCJ1qkoi3Q6ONSF2avrHq1LVEZfYpdHmj0y9SuTK+u9ZhG1sYQKBL1AWXKyLWP4RaUoQ==", + "dev": true + }, "@webassemblyjs/ast": { "version": "1.7.11", "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.7.11.tgz", @@ -923,6 +935,12 @@ "integrity": "sha512-FZdkNBDqBRHKQ2MEbSC17xnPFOhZxeJ2YGSfr2BKf3sujG49Qe3bB+rGCwQfIaA7WHnGeGkSijX4FuBCdrzW/g==", "dev": true }, + "abbrev": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", + "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==", + "dev": true + }, "accepts": { "version": "1.3.5", "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.5.tgz", @@ -2393,6 +2411,16 @@ "typedarray": "^0.0.6" } }, + "config-chain": { + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/config-chain/-/config-chain-1.1.12.tgz", + "integrity": "sha512-a1eOIcu8+7lUInge4Rpf/n4Krkf3Dd9lqhljRzII1/Zno/kRtUWnznPO3jOKBmTEktkt3fkxisUcivoj0ebzoA==", + "dev": true, + "requires": { + "ini": "^1.3.4", + "proto-list": "~1.2.1" + } + }, "connect": { "version": "3.6.6", "resolved": "https://registry.npmjs.org/connect/-/connect-3.6.6.tgz", @@ -2809,6 +2837,12 @@ "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=", "dev": true }, + "deepmerge": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-2.2.1.tgz", + "integrity": "sha512-R9hc1Xa/NOBi9WRVUWg19rl1UB7Tt4kuPd+thNJgFZoxXsTz7ncaPaeIm+40oSGuP33DfMb4sZt1QIGiJzC4EA==", + "dev": true + }, "default-compare": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/default-compare/-/default-compare-1.0.0.tgz", @@ -2963,6 +2997,12 @@ "integrity": "sha1-8NZtA2cqglyxtzvbP+YjEMjlUrc=", "dev": true }, + "detect-indent": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-5.0.0.tgz", + "integrity": "sha1-OHHMCmoALow+Wzz38zYmRnXwa50=", + "dev": true + }, "detect-node": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.0.4.tgz", @@ -3133,6 +3173,28 @@ "safer-buffer": "^2.1.0" } }, + "editorconfig": { + "version": "0.15.2", + "resolved": "https://registry.npmjs.org/editorconfig/-/editorconfig-0.15.2.tgz", + "integrity": "sha512-GWjSI19PVJAM9IZRGOS+YKI8LN+/sjkSjNyvxL5ucqP9/IqtYNXBaQ/6c/hkPNYQHyOHra2KoXZI/JVpuqwmcQ==", + "dev": true, + "requires": { + "@types/node": "^10.11.7", + "@types/semver": "^5.5.0", + "commander": "^2.19.0", + "lru-cache": "^4.1.3", + "semver": "^5.6.0", + "sigmund": "^1.0.1" + }, + "dependencies": { + "commander": { + "version": "2.19.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.19.0.tgz", + "integrity": "sha512-6tvAOO+D6OENvRAh524Dh9jcfKTYDQAqvqezbCW82xj5X0pSrcpxtvRKHLG0yBY6SD7PSDrJaj+0AiOcKVd1Xg==", + "dev": true + } + } + }, "ee-first": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", @@ -5316,6 +5378,52 @@ } } }, + "gulp-json-editor": { + "version": "2.4.3", + "resolved": "https://registry.npmjs.org/gulp-json-editor/-/gulp-json-editor-2.4.3.tgz", + "integrity": "sha512-cSYh93dbSxIEXiuC0eHUBkrAJA0jS7pWGZ/x0uUt0Hu1xxUt5QuT7C2+wJE0q2YWtlOTz/lxD+HFHP15/Th7lg==", + "dev": true, + "requires": { + "deepmerge": "^2.2.1", + "detect-indent": "^5.0.0", + "js-beautify": "^1.8.8", + "plugin-error": "^1.0.1", + "through2": "^3.0.0" + }, + "dependencies": { + "ansi-colors": { + "version": "1.1.0", + "resolved": "http://registry.npmjs.org/ansi-colors/-/ansi-colors-1.1.0.tgz", + "integrity": "sha512-SFKX67auSNoVR38N3L+nvsPjOE0bybKTYbkf5tRvushrAPQ9V75huw0ZxBkKVeRU9kqH3d6HA4xTckbwZ4ixmA==", + "dev": true, + "requires": { + "ansi-wrap": "^0.1.0" + } + }, + "plugin-error": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/plugin-error/-/plugin-error-1.0.1.tgz", + "integrity": "sha512-L1zP0dk7vGweZME2i+EeakvUNqSrdiI3F91TwEoYiGrAfUXmVv6fJIq4g82PAXxNsWOp0J7ZqQy/3Szz0ajTxA==", + "dev": true, + "requires": { + "ansi-colors": "^1.0.1", + "arr-diff": "^4.0.0", + "arr-union": "^3.1.0", + "extend-shallow": "^3.0.2" + } + }, + "through2": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/through2/-/through2-3.0.0.tgz", + "integrity": "sha512-8B+sevlqP4OiCjonI1Zw03Sf8PuV1eRsYQgLad5eonILOdyeRsY27A/2Ze8IlvlMvq31OH+3fz/styI7Ya62yQ==", + "dev": true, + "requires": { + "readable-stream": "2 || 3", + "xtend": "~4.0.1" + } + } + } + }, "gulp-zip": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/gulp-zip/-/gulp-zip-4.2.0.tgz", @@ -6320,6 +6428,18 @@ "integrity": "sha512-3/xSmG/d35hf80BEN66Y6g9Ca5l/Isdeg/j6zvbTYlTzeKinzmaTM4p9am5kYqOmE05D7s1t8FGjzdSnbUbceA==", "dev": true }, + "js-beautify": { + "version": "1.8.8", + "resolved": "https://registry.npmjs.org/js-beautify/-/js-beautify-1.8.8.tgz", + "integrity": "sha512-qVNq7ZZ7ZbLdzorvSlRDadS0Rh5oyItaE95v6I4wbbuSiijxn7SnnsV6dvKlcXuO2jX7lK8tn9fBulx34K/Ejg==", + "dev": true, + "requires": { + "config-chain": "~1.1.5", + "editorconfig": "^0.15.0", + "mkdirp": "~0.5.0", + "nopt": "~4.0.1" + } + }, "js-levenshtein": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/js-levenshtein/-/js-levenshtein-1.1.4.tgz", @@ -7353,6 +7473,16 @@ "semver": "^5.3.0" } }, + "nopt": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-4.0.1.tgz", + "integrity": "sha1-0NRoWv1UFRk8jHUFYC0NF81kR00=", + "dev": true, + "requires": { + "abbrev": "1", + "osenv": "^0.1.4" + } + }, "normalize-package-data": { "version": "2.4.0", "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.4.0.tgz", @@ -7681,6 +7811,12 @@ "integrity": "sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc=", "dev": true }, + "os-homedir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", + "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=", + "dev": true + }, "os-locale": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-3.0.1.tgz", @@ -7698,6 +7834,16 @@ "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", "dev": true }, + "osenv": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/osenv/-/osenv-0.1.5.tgz", + "integrity": "sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==", + "dev": true, + "requires": { + "os-homedir": "^1.0.0", + "os-tmpdir": "^1.0.0" + } + }, "p-defer": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/p-defer/-/p-defer-1.0.0.tgz", @@ -8420,6 +8566,12 @@ "integrity": "sha1-mEcocL8igTL8vdhoEputEsPAKeM=", "dev": true }, + "proto-list": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/proto-list/-/proto-list-1.2.4.tgz", + "integrity": "sha1-IS1b/hMYMGpCD2QCuOJv85ZHqEk=", + "dev": true + }, "proxy-addr": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.4.tgz", @@ -9273,6 +9425,12 @@ "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", "dev": true }, + "sigmund": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/sigmund/-/sigmund-1.0.1.tgz", + "integrity": "sha1-P/IfGYytIXX587eBhT/ZTQ0ZtZA=", + "dev": true + }, "signal-exit": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", diff --git a/package.json b/package.json index 2a4e7f2..90d1605 100644 --- a/package.json +++ b/package.json @@ -27,6 +27,7 @@ "eslint-loader": "2.1.1", "file-loader": "2.0.0", "gulp": "4.0.0", + "gulp-json-editor": "2.4.3", "gulp-zip": "4.2.0", "jasmine-core": "3.3.0", "karma": "3.1.1", diff --git a/scripts/bump-version.sh b/scripts/bump-version.sh old mode 100644 new mode 100755 index 15bdc4e..b402988 --- a/scripts/bump-version.sh +++ b/scripts/bump-version.sh @@ -5,18 +5,27 @@ join_by () { local IFS="$1"; shift; echo "$*"; } -# get version from repo -OLD_VERSION="$(scripts/get-latest-version.sh $1 $2)" +if [ "${CIRCLE_BRANCH}" == "master" ]; then + # get version from repo + OLD_VERSION="$(scripts/get-latest-version.sh $1 $2)" + echo "Latest GitHub release version: ${OLD_VERSION}" -# split into array -IFS='.' read -ra ARRAY_VERSION <<< "$OLD_VERSION" + # split into array + IFS='.' read -ra ARRAY_VERSION <<< "$OLD_VERSION" -# bump minor -ARRAY_VERSION[1]=$((ARRAY_VERSION[1]+1)) + # bump minor + ARRAY_VERSION[1]=$((ARRAY_VERSION[1]+1)) -# join into string -NEW_VERSION=$(join_by . ${ARRAY_VERSION[@]}) -echo "$NEW_VERSION" + # join into string + NEW_VERSION=$(join_by . ${ARRAY_VERSION[@]}) +elif [[ ! -z "${CIRCLE_BRANCH}" && ! -z "${CIRCLE_BUILD_NUM}" ]]; then + NEW_VERSION="$(echo ${CIRCLE_BRANCH} | sed -e 's/\//-/g')_${CIRCLE_BUILD_NUM}" +else + NEW_VERSION="dev" +fi + +echo "Bumped version: ${NEW_VERSION}" +echo "${NEW_VERSION}" > BUMPED_VERSION # Usage diff --git a/scripts/create-release.sh b/scripts/create-release.sh old mode 100644 new mode 100755 index cbcba5f..ab0ff25 --- a/scripts/create-release.sh +++ b/scripts/create-release.sh @@ -1,11 +1,10 @@ #!/bin/bash set -o errexit -echo "Bumping version from: $(scripts/print-version.sh $1 $2)" -VERSION="$(scripts/bump-version.sh $1 $2)" -echo "to: $VERSION" -$HOME/bin/ghr -t ${ghoauth} -u ${CIRCLE_PROJECT_USERNAME} -r ${CIRCLE_PROJECT_REPONAME} -c ${CIRCLE_SHA1} -delete ${VERSION} "./build/$3.zip" +echo "Creating release for version: $VERSION" +echo "Artifact name: ./build/${3}_${VERSION}.zip" +$HOME/bin/ghr -t ${ghoauth} -u ${CIRCLE_PROJECT_USERNAME} -r ${CIRCLE_PROJECT_REPONAME} -c ${CIRCLE_SHA1} -delete ${VERSION} "./build/${3}_${4}.zip" # Usage -# $ create-release.sh qlik-oss qsSimpleKPI qlik-multi-kpi +# $ create-release.sh qlik-oss qsSimpleKPI qlik-multi-kpi 0.3.1 diff --git a/scripts/get-bumped-version.sh b/scripts/get-bumped-version.sh new file mode 100755 index 0000000..f8209f4 --- /dev/null +++ b/scripts/get-bumped-version.sh @@ -0,0 +1,7 @@ +#!/bin/bash +set -o errexit + +echo "$(head -n 1 BUMPED_VERSION)" + +# Usage +# $ get-bumped-version.sh diff --git a/scripts/get-latest-version.sh b/scripts/get-latest-version.sh old mode 100644 new mode 100755 diff --git a/scripts/install-ghr.sh b/scripts/install-ghr.sh old mode 100644 new mode 100755 diff --git a/scripts/print-version.sh b/scripts/print-version.sh deleted file mode 100644 index d5ccfe0..0000000 --- a/scripts/print-version.sh +++ /dev/null @@ -1,10 +0,0 @@ -#!/bin/bash -set -o errexit - -VERSION="$(scripts/get-latest-version.sh $1 $2)" - -echo ${VERSION} - -# Usage -# $ print-version.sh qlik-oss qsSimpleKPI -# 0.12.0 diff --git a/settings.js b/settings.js index 293e4c2..82cbfa7 100644 --- a/settings.js +++ b/settings.js @@ -7,6 +7,7 @@ module.exports = { buildDestination: process.env.BUILD_PATH || defaultBuildDestination, mode: process.env.NODE_ENV || 'development', name: packageJSON.name, + version: process.env.VERSION || 'local-dev', url: process.env.BUILD_URL || defaultBuildDestination, port: 8082 };