Skip to content
Snippets Groups Projects
.gitlab-ci.yml 14.81 KiB
# workflow
stages:
 - build
 - test
 - integration
 - acceptance
 - release
 - deployment

# default image for jobs
default:
  image: node:11

# cache modules between jobs
cache:
  key: ${CI_COMMIT_REF_SLUG}
  paths:
    - .npm/

## BUILD ##

build:
  stage: build
  before_script:
    - npm ci --cache .npm --prefer-offline --only=production
  script:
    - cp config.sample.json config.json
    - npm run build
  artifacts:
    when: on_success
    expire_in: 1 day
    paths:
      - dist/
  tags:
    - test

## TESTING ##

test:e2e:
  stage: test
  image: cypress/included:4.5.0
  services:
    - name: ${CI_REGISTRY_IMAGE}/server:0.1
  before_script:
    # install missing dependencies
    - npm install -g sirv-cli
     # making sure the process is orphan
    - sirv dist --port 3000 > /dev/null 2>&1 &
  script:
    - cypress run -e CYPRESS_baseUrl=http://localhost:3000
  tags:
    - test

## VALIDATION ##

test1:
  stage: integration
  environment:
    name: test1
    url: https://test1.startinblox.com
  before_script:
    - npm ci --cache .npm --prefer-offline --only=production
  script:
    - echo "$APP_CONFIG_TEST1" > config.json
    - echo "$SSH_DEPLOY_KEY" | tr -d '\r' > gitlab.key && chmod 600 gitlab.key
    - npm run build
    - scp -i gitlab.key -o StrictHostKeyChecking=no -r dist/* test1@astral.startinblox.com:~/front/
  only:
    - /^feature\/.*/
  when: manual