mirror of
https://gitlab.com/openstapps/openstapps.git
synced 2025-12-13 01:36:22 +00:00
227 lines
5.3 KiB
YAML
227 lines
5.3 KiB
YAML
image: registry.gitlab.com/openstapps/app
|
|
|
|
before_script:
|
|
- npm ci
|
|
|
|
default:
|
|
tags:
|
|
- performance
|
|
interruptible: true
|
|
|
|
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
|
|
interruptible: false
|
|
|
|
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
|
|
|
|
format:
|
|
stage: build
|
|
script:
|
|
- npm run format:check
|
|
|
|
unit:
|
|
stage: test
|
|
script:
|
|
- npm run check-icons
|
|
- npm run test -- --watch=false --no-progress --code-coverage
|
|
coverage: '/Statements[^:]*\:[^:]*\s+([\d\.]+)%/'
|
|
artifacts:
|
|
paths:
|
|
- coverage
|
|
reports:
|
|
coverage_report:
|
|
coverage_format: cobertura
|
|
path: coverage/cobertura-coverage.xml
|
|
|
|
.e2e-chrome:
|
|
image: registry.gitlab.com/openstapps/projectmanagement/cypress
|
|
stage: test
|
|
script:
|
|
- npm run e2e -- --watch=false --headless=true --browser=chrome
|
|
artifacts:
|
|
when: on_failure
|
|
paths:
|
|
- cypress/videos
|
|
- cypress/screenshots
|
|
|
|
.e2e-firefox:
|
|
image: registry.gitlab.com/openstapps/projectmanagement/cypress
|
|
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 == "main")
|
|
when: always
|
|
allow_failure: false
|
|
- if: ($CI_COMMIT_REF_NAME != "develop" && $CI_COMMIT_REF_NAME != "main")
|
|
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 == "main")
|
|
when: always
|
|
allow_failure: false
|
|
- if: ($CI_COMMIT_REF_NAME != "develop" && $CI_COMMIT_REF_NAME != "main")
|
|
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 == "main")
|
|
when: never
|
|
- if: ($CI_COMMIT_REF_NAME != "develop" && $CI_COMMIT_REF_NAME != "main")
|
|
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 == "main")
|
|
when: never
|
|
- if: ($CI_COMMIT_REF_NAME != "develop" && $CI_COMMIT_REF_NAME != "main")
|
|
when: manual
|
|
allow_failure: false
|
|
|
|
audit:
|
|
stage: test
|
|
script:
|
|
- npm audit
|
|
allow_failure: true
|
|
except:
|
|
- schedules
|
|
|
|
scheduled-audit:
|
|
stage: test
|
|
script:
|
|
- npm audit --production
|
|
only:
|
|
- schedules
|
|
|
|
pages:
|
|
stage: publish
|
|
script:
|
|
- npm run documentation
|
|
- mv docs public
|
|
only:
|
|
- main
|
|
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
|
|
rules:
|
|
- if: ($CI_COMMIT_REF_NAME != "develop" && $CI_COMMIT_REF_NAME != "main" && $CI_MERGE_REQUEST_EVENT_TYPE != "merge_train" && ($CI_PIPELINE_SOURCE == "push" || $CI_PIPELINE_SOURCE == "web"))
|
|
|
|
stop_review:
|
|
stage: deploy
|
|
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
|
|
rules:
|
|
- if: ($CI_COMMIT_REF_NAME != "develop" && $CI_COMMIT_REF_NAME != "main" && $CI_MERGE_REQUEST_EVENT_TYPE != "merge_train" && ($CI_PIPELINE_SOURCE == "push" || $CI_PIPELINE_SOURCE == "web"))
|
|
|
|
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
|
|
|
|
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:
|
|
- main
|
|
except:
|
|
- schedules
|