|
| 1 | +# ** MODIFY THIS FILE AS REQUIRED ** |
| 2 | +# ** ADD CUSTOM BUILD- & TEST-EXECUTION-COMMANDS HERE ** |
| 3 | +# |
| 4 | +# Building & testing for development and CI environment |
| 5 | +# |
| 6 | +# Following binaries need to be installed and available in your PATH: |
| 7 | +# |
| 8 | +# * jsdoc |
| 9 | +# * jshint |
| 10 | +# * phantomjs |
| 11 | +# * jscoverage-server |
| 12 | +# * node |
| 13 | +# |
| 14 | +# CI-Tools (https://github.com/uxebu/ci-tools) need to be installed in: |
| 15 | +# |
| 16 | +# /opt/ci-tools |
| 17 | +# |
| 18 | +# The Jenkins-CI environment is executing the task `ci-run`: |
| 19 | +# |
| 20 | +# make ci-run |
| 21 | + |
| 22 | +ifndef TEST_RUNNER |
| 23 | + # CHANGE HERE, IF THE DEFAULT TEST-RUNNER IS SOMEWHERE ELSE |
| 24 | + TEST_RUNNER=test/runner.html |
| 25 | + TEST_RUNNER_COMPARE=test/runner-compare.html |
| 26 | + TEST_RUNNER_QC=test/runner-qc.html |
| 27 | + TEST_RUNNER_BUILD=test/runner-build.html |
| 28 | +endif |
| 29 | + |
| 30 | +ifndef WORKSPACE |
| 31 | + WORKSPACE=${CURDIR} |
| 32 | +endif |
| 33 | + |
| 34 | +ifndef PROJECT_NAME |
| 35 | + PROJECT_NAME = $(shell basename ${WORKSPACE}) |
| 36 | +endif |
| 37 | + |
| 38 | +CURRENT_USER = $(shell whoami) |
| 39 | + |
| 40 | +ifndef BASE_URL |
| 41 | + BASE_URL=http://localhost/${CURRENT_USER}/${PROJECT_NAME} |
| 42 | +endif |
| 43 | + |
| 44 | +ifdef JOB_URL |
| 45 | + # jenkins env URL params end with "/" |
| 46 | + BASE_URL=${JOB_URL}ws |
| 47 | +endif |
| 48 | + |
| 49 | +ifdef GIT_BRANCH |
| 50 | + SUB_DIR=/${shell echo ${GIT_BRANCH} | sed "s/origin\///"} |
| 51 | +endif |
| 52 | + |
| 53 | +# You can install the CI-Tools on your machine: https://github.com/uxebu/ci-tools |
| 54 | +ifndef CI_TOOLS_DIR |
| 55 | + CI_TOOLS_DIR=/opt/ci-tools |
| 56 | +endif |
| 57 | + |
| 58 | +ifndef TEMP_DIR |
| 59 | + TEMP_DIR=${WORKSPACE}/tmp |
| 60 | +endif |
| 61 | + |
| 62 | +ifndef DIST_DIR |
| 63 | + DIST_DIR=${WORKSPACE}/dist |
| 64 | +endif |
| 65 | + |
| 66 | +CLOSURE=java -jar lib/closure/compiler.jar |
| 67 | +CLOSURE_AMD=${CLOSURE} \ |
| 68 | + --transform_amd_modules \ |
| 69 | + --process_common_js_modules \ |
| 70 | + --common_js_module_path_prefix src \ |
| 71 | + --output_wrapper '(function(){%output%}());' |
| 72 | +CLOSURE_FINALIZE=${CLOSURE} |
| 73 | +CLOSURE_PRETTY=${CLOSURE} --formatting PRETTY_PRINT --compilation_level WHITESPACE_ONLY |
| 74 | + |
| 75 | +default: build |
| 76 | + |
| 77 | +jshint: mktemp |
| 78 | + - jshint ${WORKSPACE}/src/ --config config/jshint.json > ${TEMP_DIR}/jshint-report.txt |
| 79 | + |
| 80 | +coverage: mktemp |
| 81 | + ${CI_TOOLS_DIR}/bin/coverage_phantom.sh ${TEST_RUNNER} ${WORKSPACE} |
| 82 | + |
| 83 | +test: mktemp |
| 84 | + phantomjs --load-plugins=yes ${CI_TOOLS_DIR}/script/phantom_runner.js ${BASE_URL}/${TEST_RUNNER_BUILD} ${TEMP_DIR} 1 jasmine | grep -q "Testcase passed" |
| 85 | + phantomjs --load-plugins=yes ${CI_TOOLS_DIR}/script/phantom_runner.js ${BASE_URL}/${TEST_RUNNER} ${TEMP_DIR} 0 jasmine |
| 86 | + phantomjs --load-plugins=yes ${CI_TOOLS_DIR}/script/phantom_runner.js ${BASE_URL}/${TEST_RUNNER_COMPARE} ${TEMP_DIR} 0 jasmine |
| 87 | + phantomjs --load-plugins=yes ${CI_TOOLS_DIR}/script/phantom_runner.js ${BASE_URL}/${TEST_RUNNER_QC} ${TEMP_DIR} 0 qc |
| 88 | + |
| 89 | +syntux-diff: mktemp |
| 90 | + ${CI_TOOLS_DIR}/bin/syntux_diff.sh ${WORKSPACE}/src ${TEMP_DIR} |
| 91 | + |
| 92 | +profile: mktemp |
| 93 | + cd ${WORKSPACE}/example/profiling && npm install |
| 94 | + - ${WORKSPACE}/example/profiling/run.js \ |
| 95 | + -b ${BUILD_NUMBER} \ |
| 96 | + -d 10000 \ |
| 97 | + -e ${BASE_URL}/test/bonsai_executor_src.html \ |
| 98 | + -j ${JOB_NAME} \ |
| 99 | + -r http://riak.ux:8098/riak/profile \ |
| 100 | + ${WORKSPACE}/test/profile \ |
| 101 | + |
| 102 | +doc: mkjsdoc |
| 103 | + jsdoc -r -d ${WORKSPACE}/jsdoc${SUB_DIR} ${WORKSPACE}/src || true |
| 104 | + |
| 105 | +build: clean mkdist |
| 106 | + ${CLOSURE_AMD} --common_js_entry_module bootstrapper/_build/worker.js \ |
| 107 | + src/bootstrapper/_build/worker.js \ |
| 108 | + `find src -name '*.js' -not -path 'src/bootstrapper/_dev/*' -not -path 'src/bootstrapper/_build/*' -not -path 'src/bootstrapper/context/socketio/*' -not -path 'src/bootstrapper/context/iframe/*' -not -path 'src/bootstrapper/context/node/*'` | ${CLOSURE_PRETTY} > ${DIST_DIR}/bonsai.js |
| 109 | + echo "/*" > ${DIST_DIR}/bonsai.min.js |
| 110 | + cat ${WORKSPACE}/LICENSE >> ${DIST_DIR}/bonsai.min.js |
| 111 | + echo "*/" >> ${DIST_DIR}/bonsai.min.js |
| 112 | + cat ${DIST_DIR}/bonsai.js | ${CLOSURE_FINALIZE} >> ${DIST_DIR}/bonsai.min.js |
| 113 | + ${CLOSURE_AMD} --common_js_entry_module bootstrapper/_build/iframe.js \ |
| 114 | + src/bootstrapper/_build/iframe.js \ |
| 115 | + `find src -name '*.js' -not -path 'src/bootstrapper/_dev/*' -not -path 'src/bootstrapper/_build/*' -not -path 'src/bootstrapper/context/socketio/*' -not -path 'src/bootstrapper/context/worker/*' -not -path 'src/bootstrapper/context/node/*'` | ${CLOSURE_PRETTY} > ${DIST_DIR}/bonsai.iframe.js |
| 116 | + echo "/*" > ${DIST_DIR}/bonsai.iframe.min.js |
| 117 | + cat ${WORKSPACE}/LICENSE >> ${DIST_DIR}/bonsai.iframe.min.js |
| 118 | + echo "*/" >> ${DIST_DIR}/bonsai.iframe.min.js |
| 119 | + cat ${DIST_DIR}/bonsai.iframe.js | ${CLOSURE_FINALIZE} >> ${DIST_DIR}/bonsai.iframe.min.js |
| 120 | + |
| 121 | +preview-bundle: build |
| 122 | + mkdir -p ${TEMP_DIR}/preview-bundle/lib |
| 123 | + mkdir -p ${TEMP_DIR}/preview-bundle/example |
| 124 | + mkdir -p ${TEMP_DIR}/preview-bundle/dist |
| 125 | + cp -R example/library ${TEMP_DIR}/preview-bundle/example |
| 126 | + - rm ${TEMP_DIR}/preview-bundle/example/library/movies/assets/*.mp4 |
| 127 | + - rm ${TEMP_DIR}/preview-bundle/example/library/movies/assets/*.m4v |
| 128 | + - rm ${TEMP_DIR}/preview-bundle/example/library/movies/assets/*.ogv |
| 129 | + cp -R dist/*.min.js ${TEMP_DIR}/preview-bundle/dist |
| 130 | + cp -R lib/requirejs ${TEMP_DIR}/preview-bundle/lib |
| 131 | + cd ${TEMP_DIR} && tar czf bonsai-preview.tgz preview-bundle/ |
| 132 | + |
| 133 | +mktemp: |
| 134 | + mkdir -p ${TEMP_DIR} |
| 135 | + |
| 136 | +mkdist: |
| 137 | + mkdir -p ${DIST_DIR} |
| 138 | + |
| 139 | +mkjsdoc: |
| 140 | + mkdir -p ${WORKSPACE}/jsdoc |
| 141 | + |
| 142 | +clean: |
| 143 | + rm -rf ${TEMP_DIR} ${DIST_DIR} |
| 144 | + |
| 145 | +ci-run: clean build test coverage syntux-diff doc jshint profile |
0 commit comments