diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 2abfa9d..1d4f644 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -1,8 +1,78 @@ -Npm, Bower, Grunt: +variables: + NPMPATH: "node_modules/.bin" + +stages: + - build + - cleanup_build + - deploy + - cleanup + +.run_deploy: &run_deploy + script: + - chmod +x ./deploy.sh + - ./deploy.sh + +build_job: + stage: build script: - npm install - - bower install - - grunt - tags: + - $NPMPATH/bower install + - $NPMPATH/grunt + tags: + - javascript except: - tags + artifacts: + paths: + - dist/*.min.* + - info/ + - resources/ + - index.html + - manifest.appcache + +cleanup_build_job: + stage: cleanup_build + script: + - rm -rf node_modules + - rm -rf bower_components + - rm -rf dist + when: on_failure + +develop: + stage: deploy + <<: *run_deploy + environment: develop + except: + - tags + - master + - develop + variables: + ENVIRON: develop + TARGET: $WWW_DEPLOY_ROOT_DEVELOP + +staging: + stage: deploy + <<: *run_deploy + environment: staging + only: + - develop + variables: + ENVIRON: staging + TARGET: $WWW_DEPLOY_ROOT_STAGING + +production: + stage: deploy + <<: *run_deploy + environment: production + only: + - master + variables: + ENVIRON: production + TARGET: $WWW_DEPLOY_ROOT_PRODUCTION + +cleanup_job: + stage: cleanup + script: + - rm -rf node_modules + - rm -rf bower_components + when: always diff --git a/deploy.sh b/deploy.sh new file mode 100644 index 0000000..b5515ed --- /dev/null +++ b/deploy.sh @@ -0,0 +1,23 @@ +#!/bin/sh + +declare destination +case "${TARGET}" in + "${WWW_DEPLOY_ROOT_DEVELOP}") + destination="${TARGET}/${CI_BUILD_REF_NAME}" + ;; + "${WWW_DEPLOY_ROOT_STAGING}"|"${WWW_DEPLOY_ROOT_PRODUCTION}") + destination="${TARGET}" + ;; + *) + echo "Invalid TARGET specified. Aborting deployment." + exit 1 + ;; +esac + +rm -rf "${destination}/*" +rm -rf "${destination}/.??*" +mkdir -p "${destination}/dist" +cp -a index.html manifest.appcache info resources "${destination}" +cp -a dist/*.min.* "${destination}/dist" + +echo "Deployment successful."