Files
openstapps/.gitlab-ci.yml
2022-06-23 11:43:59 +02:00

225 lines
4.9 KiB
YAML

image: registry.gitlab.com/openstapps/app
before_script:
- npm ci
default:
tags:
- performance
stages:
- setup
- build
- test
- publish
- deploy
- ui test
setup:
image: registry.gitlab.com/openstapps/projectmanagement/builder
stage: setup
only:
- schedules
variables:
DOCKER_DRIVER: overlay2
services:
- docker:dind
script:
- docker login -u gitlab-ci-token -p $CI_BUILD_TOKEN registry.gitlab.com
- docker build -t registry.gitlab.com/openstapps/app .
- docker push registry.gitlab.com/openstapps/app
cache: {} # disable irrelevant cache for this job
before_script: [] # do not run irrelevant before script for this job
tags:
- dind
build:
stage: build
script:
- npm run build
artifacts:
paths:
- www
except:
- schedules
scheduled-build:
stage: build
script:
- npm run build
only:
- schedules
lint:
stage: build
script:
- npm run lint
unit:
stage: test
script:
- npm run test -- --watch=false --no-progress --code-coverage
artifacts:
paths:
- coverage
# Disabled until redesign is settled
#
# .e2e-chrome:
# image: cypress/browsers:node14.19.0-chrome100-ff99-edge
# stage: test
# script:
# - npm run e2e -- --watch=false --headless=true --browser=chrome
# artifacts:
# when: on_failure
# paths:
# - cypress/videos
# - cypress/screenshots
#
# .e2e-firefox:
# image: cypress/browsers:node14.19.0-chrome100-ff99-edge
# stage: test
# script:
# - npm run e2e -- --watch=false --headless=true --browser=firefox
# artifacts:
# when: on_failure
# paths:
# - cypress/videos
# - cypress/screenshots
#
# ui-chrome:
# extends: .e2e-chrome
# rules:
# - if: $CI_PIPELINE_SOURCE == "merge_request_event"
# when: never
# - if: ($CI_COMMIT_REF_NAME == "develop" || $CI_COMMIT_REF_NAME == "master")
# when: always
# allow_failure: false
# - if: ($CI_COMMIT_REF_NAME != "develop" && $CI_COMMIT_REF_NAME != "master")
# when: never
#
# ui-firefox:
# extends: .e2e-firefox
# rules:
# - if: $CI_PIPELINE_SOURCE == "merge_request_event"
# when: never
# - if: ($CI_COMMIT_REF_NAME == "develop" || $CI_COMMIT_REF_NAME == "master")
# when: always
# allow_failure: false
# - if: ($CI_COMMIT_REF_NAME != "develop" && $CI_COMMIT_REF_NAME != "master")
# when: never
#
# e2e-chrome:
# extends: .e2e-chrome
# stage: ui test
# rules:
# - if: $CI_PIPELINE_SOURCE == "merge_request_event"
# when: never
# - if: ($CI_COMMIT_REF_NAME == "develop" || $CI_COMMIT_REF_NAME == "master")
# when: never
# - if: ($CI_COMMIT_REF_NAME != "develop" && $CI_COMMIT_REF_NAME != "master")
# when: manual
# allow_failure: false
#
# e2e-firefox:
# extends: .e2e-firefox
# stage: ui test
# rules:
# - if: $CI_PIPELINE_SOURCE == "merge_request_event"
# when: never
# - if: ($CI_COMMIT_REF_NAME == "develop" || $CI_COMMIT_REF_NAME == "master")
# when: never
# - if: ($CI_COMMIT_REF_NAME != "develop" && $CI_COMMIT_REF_NAME != "master")
# when: manual
# allow_failure: false
audit:
stage: test
script:
- npm audit
allow_failure: true
except:
- schedules
scheduled-audit:
stage: test
script:
- npm audit
only:
- schedules
pages:
stage: publish
script:
- npm run documentation
- mv docs public
only:
- master
except:
- schedules
artifacts:
paths:
- public
review:
stage: deploy
script:
- npm run build:prod
- .gitlab/ci/enableGitlabReviewToolbar.sh www/index.html "$CI_PROJECT_ID" "$CI_OPEN_MERGE_REQUESTS"
- cp www/index.html www/200.html
- ./node_modules/.bin/surge -p ./www -d https://$CI_PROJECT_PATH_SLUG-$CI_ENVIRONMENT_SLUG.surge.sh/
environment:
name: review/$CI_PROJECT_PATH_SLUG-$CI_COMMIT_REF_NAME
url: https://$CI_PROJECT_PATH_SLUG-$CI_ENVIRONMENT_SLUG.surge.sh/
on_stop: stop_review
tags:
- secrecy
except:
- master
- develop
stop_review:
stage: deploy
variables:
GIT_STRATEGY: none
script:
- ./node_modules/.bin/surge teardown $CI_PROJECT_PATH_SLUG-$CI_ENVIRONMENT_SLUG.surge.sh
when: manual
environment:
name: review/$CI_PROJECT_PATH_SLUG-$CI_COMMIT_REF_NAME
action: stop
tags:
- secrecy
staging:
stage: deploy
script:
- npm run build:prod
- cp www/index.html www/200.html
- ./node_modules/.bin/surge -p ./www -d https://$CI_PROJECT_PATH_SLUG-staging.surge.sh/
environment:
name: staging
url: https://$CI_PROJECT_PATH_SLUG-staging.surge.sh/
only:
- develop
except:
- schedules
tags:
- secrecy
production_demo:
stage: deploy
script:
- npm run build:prod
- cp www/index.html www/200.html
- ./node_modules/.bin/surge -p ./www -d https://$CI_PROJECT_PATH_SLUG.surge.sh/
environment:
name: production
url: https://$CI_PROJECT_PATH_SLUG.surge.sh/
only:
- master
except:
- schedules
tags:
- secrecy