.azure-pipelines.yml 6.56 KiB
variables:
  YARN_CACHE_FOLDER: $(Pipeline.Workspace)/.yarn
  AZURE_CACHE_FOLDER: $(Pipeline.Workspace)/.azure-cache
pr:
  - master
  - releases/*
trigger:
  branches:
    include:
    - '*'
  tags:
    include:
    - "*"
jobs:
  - job: Windows
    pool:
      vmImage: windows-2019
    strategy:
      matrix:
        node_12.x:
          node_version: 12.x
    steps:
      - powershell: |
          $CI_BUILD_TAG = git describe --tags
          Write-Output ("##vso[task.setvariable variable=CI_BUILD_TAG;]$CI_BUILD_TAG")
        displayName: 'Set the tag name as an environment variable'
        condition: "and(succeeded(), startsWith(variables['Build.SourceBranch'], 'refs/tags/'))"
      - task: NodeTool@0
        inputs:
          versionSpec: $(node_version)
        displayName: Install Node.js
      - task: CacheBeta@0
        inputs:
          key: yarn | $(Agent.OS) | yarn.lock
          path: $(YARN_CACHE_FOLDER)
          cacheHitVar: CACHE_RESTORED
        displayName: Cache Yarn packages
      - script: make install-deps
        displayName: Install dependencies
      - script: make build-npm
        displayName: Generate npm package
      - script: make build-extensions
        displayName: Build bundled extensions
      - script: make integration-win
        displayName: Run integration tests
      - script: make test-extensions
        displayName: Run In-tree Extension tests
      - script: make build
        condition: "and(succeeded(), startsWith(variables['Build.SourceBranch'], 'refs/tags/'))"
        displayName: Build
        env:
          WIN_CSC_LINK: $(WIN_CSC_LINK)
          WIN_CSC_KEY_PASSWORD: $(WIN_CSC_KEY_PASSWORD)
          GH_TOKEN: $(GH_TOKEN)
  - job: macOS
    pool:
      vmImage: macOS-10.14
    strategy:
      matrix:
        node_12.x:
          node_version: 12.x
    steps:
      - script: CI_BUILD_TAG=`git describe --tags` && echo "##vso[task.setvariable variable=CI_BUILD_TAG]$CI_BUILD_TAG"
        displayName: Set the tag name as an environment variable
        condition: "and(succeeded(), startsWith(variables['Build.SourceBranch'], 'refs/tags/'))"
      - task: NodeTool@0
        inputs:
          versionSpec: $(node_version)
        displayName: Install Node.js
      - task: CacheBeta@0
        inputs:
          key: cache | $(Agent.OS) | yarn.lock
          path: $(AZURE_CACHE_FOLDER)
          cacheHitVar: CACHE_RESTORED
        displayName: Cache Yarn packages
      - bash: |
          mkdir -p "$YARN_CACHE_FOLDER"
          tar -xzf "$AZURE_CACHE_FOLDER/yarn-cache.tar.gz" -C /
        displayName: "Unpack cache"
        condition: eq(variables.CACHE_RESTORED, 'true')
      - script: make install-deps
        displayName: Install dependencies
      - script: make build-npm
        displayName: Generate npm package
      - script: make build-extensions
        displayName: Build bundled extensions
      - script: make test
        displayName: Run tests
      - script: make integration-mac
        displayName: Run integration tests
      - script: make test-extensions
        displayName: Run In-tree Extension tests
      - script: make build
        condition: "and(succeeded(), startsWith(variables['Build.SourceBranch'], 'refs/tags/'))"
        displayName: Build
        env:
          APPLEID: $(APPLEID)
          APPLEIDPASS: $(APPLEIDPASS)
          CSC_LINK: $(CSC_LINK)
          CSC_KEY_PASSWORD: $(CSC_KEY_PASSWORD)
          GH_TOKEN: $(GH_TOKEN)
      - bash: |
          mkdir -p "$AZURE_CACHE_FOLDER"
          tar -czf "$AZURE_CACHE_FOLDER/yarn-cache.tar.gz" "$YARN_CACHE_FOLDER"
        displayName: Pack cache
  - job: Linux
    pool:
      vmImage: ubuntu-16.04
    strategy:
      matrix:
        node_12.x:
          node_version: 12.x
    steps:
      - script: CI_BUILD_TAG=`git describe --tags` && echo "##vso[task.setvariable variable=CI_BUILD_TAG]$CI_BUILD_TAG"
        displayName: Set the tag name as an environment variable
        condition: "and(succeeded(), startsWith(variables['Build.SourceBranch'], 'refs/tags/'))"
      - task: NodeTool@0
        inputs:
          versionSpec: $(node_version)
        displayName: Install Node.js
      - task: CacheBeta@0
        inputs:
          key: cache | $(Agent.OS) | yarn.lock
          path: $(AZURE_CACHE_FOLDER)
          cacheHitVar: CACHE_RESTORED
        displayName: Cache Yarn packages
      - bash: |
          mkdir -p "$YARN_CACHE_FOLDER"
          tar -xzf "$AZURE_CACHE_FOLDER/yarn-cache.tar.gz" -C /
        displayName: "Unpack cache"
        condition: eq(variables.CACHE_RESTORED, 'true')
      - script: make install-deps
        displayName: Install dependencies
      - script: make test-extensions
        displayName: Run In-tree Extension tests
      - script: make lint
        displayName: Lint
      - script: make build-npm
        displayName: Generate npm package
      - script: make build-extensions
        displayName: Build bundled extensions
      - script: make test
        displayName: Run tests
      - bash: |
          sudo apt-get update
          sudo apt-get install libgconf-2-4 conntrack -y
          curl -LO https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64
          sudo install minikube-linux-amd64 /usr/local/bin/minikube
          sudo minikube start --driver=none
          # Although the kube and minikube config files are in placed $HOME they are owned by root
          sudo chown -R $USER $HOME/.kube $HOME/.minikube
        displayName: Install integration test dependencies
      - script: xvfb-run --auto-servernum --server-args='-screen 0, 1600x900x24' make integration-linux
        displayName: Run integration tests
      - bash: |
          sudo chown root:root /
          sudo apt-get update && sudo apt-get install -y snapd
          sudo snap install snapcraft --classic
          echo -n "${SNAP_LOGIN}" | base64 -i -d > snap_login
          snapcraft login --with snap_login
        displayName: Setup snapcraft
        condition: "and(succeeded(), startsWith(variables['Build.SourceBranch'], 'refs/tags/'))"
        env:
          SNAP_LOGIN: $(SNAP_LOGIN)
      - script: make build
        displayName: Build
        condition: "and(succeeded(), startsWith(variables['Build.SourceBranch'], 'refs/tags/'))"
        env:
          GH_TOKEN: $(GH_TOKEN)
      - script: make publish-npm
        displayName: Publish npm package
        condition: "and(succeeded(), startsWith(variables['Build.SourceBranch'], 'refs/tags/'))"
        env:
          NPM_TOKEN: $(NPM_TOKEN)
      - bash: |
          mkdir -p "$AZURE_CACHE_FOLDER"
          tar -czf "$AZURE_CACHE_FOLDER/yarn-cache.tar.gz" "$YARN_CACHE_FOLDER"
        displayName: Pack cache