AugurProject/augur-ui

View on GitHub
azure-pipelines.yml

Summary

Maintainability
Test Coverage
variables:
  NODE_JS_VERSION: 10.15.0

trigger:
  branches:
    include:
      - master
      - sneakpeak
      - azure/*
  tags:
    include:
      - v*

jobs:
  - job: test_ui
    pool:
      vmImage: 'Ubuntu-16.04'
    steps:
      - task: NodeTool@0
        inputs:
          versionSpec: $(NODE_JS_VERSION)
      - bash: |
          yarn
          yarn lint
          yarn test
          # This is here to confirm the build works.
          # Nothing is done with the resulting artifacts.
          yarn build --dev
        displayName: 'lint, test, and build'
      - task: PublishTestResults@2
        inputs:
          testResultsFormat: 'JUnit'
          testResultsFiles: 'junit.xml'

  - job: deploy_ui_on_master
    dependsOn:
      - test_ui
    strategy:
      maxParallel: 3
      matrix:
        dev:
          RELEASE_ENV: dev
        kovan:
          RELEASE_ENV: kovan
        dev-optimized:
          RELEASE_ENV: dev-optimized
    steps:
      - task: UsePythonVersion@0
        inputs:
          versionSpec: '3.x'
      - task: NodeTool@0
        inputs:
          versionSpec: $(NODE_JS_VERSION)
      - task: Docker@1
        displayName: docker login
        inputs:
          command: login
          containerRegistryType: Container Registry
          dockerRegistryEndpoint: dockerhub-augurproject
      - bash: |
          set -euxo pipefail
          npm run docker:release -- $(RELEASE_ENV)
        displayName: docker release $(RELEASE_ENV)
        env:
          AWS_ACCESS_KEY_ID: $(AWS_KEY_ID)
          AWS_SECRET_ACCESS_KEY: $(AWS_SECRET_KEY)
      - task: Docker@1
        displayName: docker logout
        inputs:
          command: logout
          containerRegistryType: Container Registry
          dockerRegistryEndpoint: dockerhub-augurproject
    condition: |
      and
      (
          succeeded(),
          eq(variables['Build.SourceBranch'], 'refs/heads/master')
      )

  - job: deploy_ui_on_sneakpreview
    dependsOn:
      - test_ui
    steps:
      - task: UsePythonVersion@0
        inputs:
          versionSpec: '3.x'
      - task: NodeTool@0
        inputs:
          versionSpec: $(NODE_JS_VERSION)
      - task: Docker@1
        displayName: docker login
        inputs:
          command: login
          containerRegistryType: Container Registry
          dockerRegistryEndpoint: dockerhub-augurproject
      - bash: |
          set -euxo pipefail
          npm run docker:release -- sneakpeak
        displayName: docker release sneakpeak
        env:
          AWS_ACCESS_KEY_ID: $(AWS_KEY_ID)
          AWS_SECRET_ACCESS_KEY: $(AWS_SECRET_KEY)
      - task: Docker@1
        displayName: docker logout
        inputs:
          command: logout
          containerRegistryType: Container Registry
          dockerRegistryEndpoint: dockerhub-augurproject
    condition: |
      and
      (
          succeeded(),
          eq(variables['Build.SourceBranch'], 'refs/heads/sneakpeak')
      )

  - job: tag_build
    displayName: build tag
    dependsOn:
      - test_ui
    steps:
      - task: UsePythonVersion@0
        inputs:
          versionSpec: '3.x'
      - task: NodeTool@0
        inputs:
          versionSpec: $(NODE_JS_VERSION)
      - task: Docker@1
        displayName: docker login
        inputs:
          command: login
          containerRegistryType: Container Registry
          dockerRegistryEndpoint: dockerhub-augurproject
      - bash: |
          set -euo pipefail
          current_tag=$(git describe --exact-match --tags)
          if [[ -n $current_tag ]]; then
            echo "${current_tag}"
            LATEST_VERSION_REGEX="^[vV]?(0|[1-9][0-9]*)\\.(0|[1-9][0-9]*)\\.(0|[1-9][0-9]*)$"
            DEV_VERSION_REGEX="^[vV]?(0|[1-9][0-9]*)\\.(0|[1-9][0-9]*)\\.(0|[1-9][0-9]*)(\\-[0-9A-Za-z-]+(\\.[0-9A-Za-z-]+)*)?(\\+[0-9A-Za-z-]+(\\.[0-9A-Za-z-]+)*)?$"
            if [[ $current_tag =~ $LATEST_VERSION_REGEX ]]; then
              echo "##vso[task.setvariable variable=npm_tag]latest"
              npm run docker:release -- latest
            elif [[ $current_tag =~ $DEV_VERSION_REGEX ]]; then
              echo "##vso[task.setvariable variable=npm_tag]dev"
            else
              # we should never get here
              echo "tag ${current_tag} doesn't match semver"
              echo "##vso[task.setvariable variable=npm_tag]random"
            fi
          fi
        displayName: set npm tag
      - task: Docker@1
        displayName: docker logout
        inputs:
          command: logout
          containerRegistryType: Container Registry
          dockerRegistryEndpoint: dockerhub-augurproject
      - bash: |
          set -euo pipefail
          yarn
          yarn build
      - task: Npm@1
        inputs:
          command: 'custom' # Options: install, publish, custom
          verbose: true
          customCommand: publish --tag $(npm_tag)
          customRegistry: 'useNpmrc'
          customEndpoint: npmjs-augur-integration
    condition: |
      and
      (
          succeeded(),
          startsWith(variables['build.sourceBranch'], 'refs/tags/v')
      )