Skip to content
Snippets Groups Projects
.gitlab-ci.yml 1.72 KiB
Newer Older
Clayton, Brandon Scott's avatar
Clayton, Brandon Scott committed
variables:
  GITLAB_TOKEN: '${CI_JOB_TOKEN}'
Clayton, Brandon Scott's avatar
Clayton, Brandon Scott committed
  NODE_IMAGE_NAME: ${CODE_REGISTRY_IMAGE}/${CI_PROJECT_NAME}:${CI_COMMIT_REF_SLUG}--node
Clayton, Brandon Scott's avatar
Clayton, Brandon Scott committed

Clayton, Brandon Scott's avatar
Clayton, Brandon Scott committed
stages:
Clayton, Brandon Scott's avatar
Clayton, Brandon Scott committed
  - init
Clayton, Brandon Scott's avatar
Clayton, Brandon Scott committed
  - node-image
Clayton, Brandon Scott's avatar
Clayton, Brandon Scott committed
  - build
Clayton, Brandon Scott's avatar
Clayton, Brandon Scott committed
  - publish

####
Clayton, Brandon Scott's avatar
Clayton, Brandon Scott committed
# Stage: init
Clayton, Brandon Scott's avatar
Clayton, Brandon Scott committed
####
Clayton, Brandon Scott's avatar
Clayton, Brandon Scott committed
Init:
  artifacts:
    paths:
      - node_modules
  image: ${DEVOPS_REGISTRY}usgs/node:16
  script:
Clayton, Brandon Scott's avatar
Clayton, Brandon Scott committed
    - npm ci
Clayton, Brandon Scott's avatar
Clayton, Brandon Scott committed
  stage: init
Clayton, Brandon Scott's avatar
Clayton, Brandon Scott committed

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

Build Node Image:
Clayton, Brandon Scott's avatar
Clayton, Brandon Scott committed
  image: ${DEVOPS_REGISTRY}docker:19.03-git
  needs: []
Clayton, Brandon Scott's avatar
Clayton, Brandon Scott committed
  script:
    - |
      docker build \
Clayton, Brandon Scott's avatar
Clayton, Brandon Scott committed
        --build-arg FROM_IMAGE=${DEVOPS_REGISTRY}usgs/node:16 \
Clayton, Brandon Scott's avatar
Clayton, Brandon Scott committed
        --file "Dockerfile" \
Clayton, Brandon Scott's avatar
Clayton, Brandon Scott committed
        --pull \
        --tag ${NODE_IMAGE_NAME} \
        .
    - docker push ${NODE_IMAGE_NAME}
Clayton, Brandon Scott's avatar
Clayton, Brandon Scott committed
  services:
    - alias: docker
      name: ${DEVOPS_REGISTRY}docker:19.03-dind
Clayton, Brandon Scott's avatar
Clayton, Brandon Scott committed
  stage: node-image
Clayton, Brandon Scott's avatar
Clayton, Brandon Scott committed
  tags:
    - build
  variables:
    DOCKER_DRIVER: overlay2
Clayton, Brandon Scott's avatar
Clayton, Brandon Scott committed

####
Clayton, Brandon Scott's avatar
Clayton, Brandon Scott committed
# Stage: Build
Clayton, Brandon Scott's avatar
Clayton, Brandon Scott committed
####

Clayton, Brandon Scott's avatar
Clayton, Brandon Scott committed
.node:
  image: ${DEVOPS_REGISTRY}usgs/node:16
Clayton, Brandon Scott's avatar
Clayton, Brandon Scott committed
  needs:
Clayton, Brandon Scott's avatar
Clayton, Brandon Scott committed
    - Init
  stage: build
  tags:
    - development

Build:
  extends:
    - .node
Clayton, Brandon Scott's avatar
Clayton, Brandon Scott committed
  script:
    - npm run build

Clayton, Brandon Scott's avatar
Clayton, Brandon Scott committed
Lint Project:
  extends:
    - .node
Clayton, Brandon Scott's avatar
Clayton, Brandon Scott committed
  script:
Clayton, Brandon Scott's avatar
Clayton, Brandon Scott committed
    - npm run lint
Clayton, Brandon Scott's avatar
Clayton, Brandon Scott committed

####
Clayton, Brandon Scott's avatar
Clayton, Brandon Scott committed
# Stage: Publish
Clayton, Brandon Scott's avatar
Clayton, Brandon Scott committed
####

Publish npm:
Clayton, Brandon Scott's avatar
Clayton, Brandon Scott committed
  image: ${NODE_IMAGE_NAME}
Clayton, Brandon Scott's avatar
Clayton, Brandon Scott committed
  only:
Clayton, Brandon Scott's avatar
Clayton, Brandon Scott committed
    - tags
  script:
Clayton, Brandon Scott's avatar
Clayton, Brandon Scott committed
    - git config user.email "${GITLAB_USER_EMAIL}"
    - git config user.name "${GITLAB_USER_NAME}"
Clayton, Brandon Scott's avatar
Clayton, Brandon Scott committed
    - npm run build
    - |
      cat <<-EO_CONFIG > .npmrc
      @${CI_PROJECT_ROOT_NAMESPACE}:registry=https://${CI_SERVER_HOST}/api/v4/projects/${CI_PROJECT_ID}/packages/npm/
      //${CI_SERVER_HOST}/api/v4/projects/${CI_PROJECT_ID}/packages/npm/:_authToken=${CI_JOB_TOKEN}
      EO_CONFIG
Clayton, Brandon Scott's avatar
Clayton, Brandon Scott committed
    - npx standard-version --release-as ${CI_COMMIT_TAG} --skip.commit --skip.changelog
Clayton, Brandon Scott's avatar
Clayton, Brandon Scott committed
    - npm publish --access public
Clayton, Brandon Scott's avatar
Clayton, Brandon Scott committed
  stage: publish
  tags:
    - development