variables:
  GITLAB_TOKEN: '${CI_JOB_TOKEN}'
  NODE_IMAGE_NAME: ${CODE_REGISTRY_IMAGE}/${CI_PROJECT_NAME}:${CI_COMMIT_REF_SLUG}

include:
  - project: 'ghsc/hazdev/pipeline-build-template'
    ref: '1.1.3'
    file: 'templates/library.yml'

stages:
  - node-image
  - test
  - publish

# Do not run for merge requests
workflow:
  rules:
    - if: $CI_COMMIT_TAG
    - if: $CI_COMMIT_BRANCH

####
# Template: GitLab runner tags
####
.dev-tags:
  tags:
    - development

####
# Template: Run Node
####

.node:
  image: ${NODE_IMAGE_NAME}
  extends:
    - .tags::development
  before_script:
    - npm ci

####
# Stage: Node Image
####

Build Node Image:
  extends:
    - .dind
    - .tags::build
  script:
    - |
      docker build \
        --build-arg FROM_IMAGE=${DEVOPS_REGISTRY}usgs/node:latest \
        --file "Dockerfile" \
        --pull \
        --tag ${NODE_IMAGE_NAME} \
        .
    - docker push ${NODE_IMAGE_NAME}
  stage: node-image

####
# Stage: test
####

Build Angular:
  stage: test
  extends: .node
  script:
    - cd example
    - npm i
    - npm run build

Lint:
  stage: test
  extends: .node
  script:
    - npm run tslint

####
# Stage: publish
####

Publish npm:
  stage: publish
  image: ${NODE_IMAGE_NAME}
  extends: .dev-tags
  only:
    - tags@ghsc/nshmp/disagg-d3
  before_script:
    - echo '//code.usgs.gov/api/v4/projects/${CI_PROJECT_ID}/packages/npm/:_authToken=${CI_JOB_TOKEN}' >> .npmrc
    - npm ci
    - git config user.email "${GITLAB_USER_EMAIL}"
    - git config user.name "${GITLAB_USER_NAME}"
  script:
    - npx standard-version --release-as ${CI_COMMIT_TAG} --skip.commit --skip.changelog
    - npm publish --access public