# gitzone ci_default
image: registry.gitlab.com/hosttoday/ht-docker-node:npmci
variables:
  GIT_STRATEGY: clone

cache:
  paths:
  - .npmci_cache/
  key: "$CI_BUILD_STAGE"

stages:
- security
- test
- release
- metadata

# ====================
# security stage
# ====================
mirror:
  stage: security
  script:
  - npmci git mirror
  tags:
  - docker
  - notpriv

snyk:
  stage: security
  script:
    - npmci npm prepare
    - npmci command npm install -g snyk
    - npmci command npm install --ignore-scripts
    - npmci command snyk test
  tags:
  - docker
  - notpriv

# ====================
# test stage
# ====================

testStable:
  stage: test
  script:
  - npmci npm prepare
  - npmci node install stable
  - npmci npm install
  - npmci npm test
  coverage: /\d+.?\d+?\%\s*coverage/
  tags:
  - docker
  - priv

testBuild:
  stage: test
  script:
  - npmci npm prepare
  - npmci node install lts
  - npmci npm install
  - npmci command npm run build
  coverage: /\d+.?\d+?\%\s*coverage/
  tags:
  - docker
  - notpriv

release:
  stage: release
  script:
  - npmci node install lts
  - npmci npm publish
  only:
  - tags
  tags:
  - docker
  - notpriv

# ====================
# metadata stage
# ====================
codequality:
  stage: metadata
  allow_failure: true
  script:
    - npmci command npm install -g tslint typescript
    - npmci npm install
    - npmci command "tslint -c tslint.json ./ts/**/*.ts"
  tags:
  - docker
  - priv

trigger:
  stage: metadata
  script:
  - npmci trigger
  only:
  - tags
  tags:
  - docker
  - notpriv

pages:
  image: hosttoday/ht-docker-dbase:npmci
  services:
   - docker:18-dind
  stage: metadata
  script:
    - npmci command npm install -g @gitzone/tsdoc
    - npmci npm prepare
    - npmci npm install
    - npmci command tsdoc
  tags:
    - docker
    - notpriv
  only:
    - tags
  artifacts:
    expire_in: 1 week
    paths:
    - public
  allow_failure: true