binhonglee/GlobeTrotte

View on GitHub
azure-pipelines.yml

Summary

Maintainability
Test Coverage
variables:
  HOMEBREW_NO_INSTALL_CLEANUP: 1
  HOMEBREW_NO_AUTO_UPDATE: 1

trigger:
  branches:
    exclude:
    - prod

jobs:
- job: Build
  pool:
    vmImage: $(imageName)
  strategy:
    matrix:
      ubuntu-node-16-go-1-16-6:
        imageName: "ubuntu-latest"
        nodeVersion: "16.13.1"
        goVersion: "1.16.6"
      mac-node-16-go-1-16-6:
        imageName: "macos-latest"
        nodeVersion: "16.13.1"
        goVersion: "1.16.6"

  steps:
  - task: GoTool@0
    inputs:
      version: $(goVersion)
  - task: NodeTool@0.200.0
    inputs:
      versionSpec: $(nodeVersion)

  - task: Cache@2.198.0
    inputs:
      key: "pnpm_store | $(Agent.OS) | package.json"
      path: "/home/vsts/.local/share/pnpm/store/v3"
    condition: eq(variables['Agent.OS'], 'Linux')
    displayName: Cache pnpm-store (Ubuntu)

  - task: Cache@2.198.0
    inputs:
      key: "pnpm_store | $(Agent.OS) | package.json"
      path: "/Users/runner/Library/pnpm/store/v3"
    condition: eq(variables['Agent.OS'], 'Darwin')
    displayName: Cache pnpm-store (MacOS)

  - script: ./scripts/setup.sh
    displayName: Run install script

  - script: |
      DIR=$(basename $CURRENT_DIR)
      sed -i "s/\"GlobeTrotte\"/\"$DIR\"/g" src/wings/wings.json
      cat src/wings/wings.json
    env:
      CURRENT_DIR: $(Pipeline.Workspace)
    condition: eq(variables['Agent.OS'], 'Linux')
    displayName: Fix src/wings/wings.json (Ubuntu)

  - script: |
      brew install gnu-sed
      DIR=$(basename $CURRENT_DIR)
      gsed -i "s/\"GlobeTrotte\"/\"$DIR\"/g" src/wings/wings.json
      cat src/wings/wings.json
    env:
      CURRENT_DIR: $(Pipeline.Workspace)
    condition: eq(variables['Agent.OS'], 'Darwin')
    displayName: Fix src/wings/wings.json (MacOS)

  - script: ./pleasew build --show_all_output //...
    displayName: Build all

  - script: ./pleasew lint
    displayName: Lint changes

  - script: |
      git checkout src/wings/wings.json go.sum go.mod pnpm-lock.yaml
      ./scripts/leftover.sh
    displayName: Check for leftover

- job: E2E
  pool:
    vmImage: $(imageName)
  strategy:
    matrix:
      ubuntu-node-16-go-1-16-6:
        imageName: "ubuntu-latest"
        nodeVersion: "16.13.1"
        goVersion: "1.16.6"
      # mac-node-16-go-1-16-6:
      #   imageName: "macos-latest"
      #   nodeVersion: "16.13.1"
      #   goVersion: "1.16.6"

  steps:
  - task: GoTool@0
    inputs:
      version: $(goVersion)
  - task: NodeTool@0.200.0
    inputs:
      versionSpec: $(nodeVersion)

  - task: Cache@2.198.0
    inputs:
      key: "pnpm_store | $(Agent.OS) | package.json"
      path: "/home/vsts/.local/share/pnpm/store/v3"
    condition: eq(variables['Agent.OS'], 'Linux')
    displayName: Cache pnpm-store (Ubuntu)

  - task: Cache@2.198.0
    inputs:
      key: "pnpm_store | $(Agent.OS) | package.json"
      path: "/Users/runner/Library/pnpm/store/v3"
    condition: eq(variables['Agent.OS'], 'Darwin')
    displayName: Cache pnpm-store (MacOS)

  - script: ./scripts/setup.sh
    displayName: Run install script

  - script: pnpm i --no-frozen-lockfile
    displayName: Install pnpm

  - script: |
      DIR=$(basename $CURRENT_DIR)
      sed -i "s/\"GlobeTrotte\"/\"$DIR\"/g" src/wings/wings.json
      cat src/wings/wings.json
    env:
      CURRENT_DIR: $(Pipeline.Workspace)
    condition: eq(variables['Agent.OS'], 'Linux')
    displayName: Fix src/wings/wings.json (Ubuntu)

  - script: |
      brew install gnu-sed
      DIR=$(basename $CURRENT_DIR)
      gsed -i "s/\"GlobeTrotte\"/\"$DIR\"/g" src/wings/wings.json
      cat src/wings/wings.json
    env:
      CURRENT_DIR: $(Pipeline.Workspace)
    condition: eq(variables['Agent.OS'], 'Darwin')
    displayName: Fix src/wings/wings.json (MacOS)

  - script: ./pleasew build "//src/turbine:main"
    displayName: Build turbine

  - script: pnpm run -r preflight
    displayName: Prepare for serve

  - script: ./pleasew run "//src/turbine:main" &
    displayName: Run turbine on background
  - script: sleep 1
  - script: pnpm run -r serve:plz &
    displayName: Run cockpit on background
  - script: sleep 1
  - script: pnpm run install_playwright --no-frozen-lockfile
    displayName: Install playwright
  - script: pnpm run -r test:playwright --coverage=false
    displayName: Run playwright e2e tests

- job: turbine
  pool:
    vmImage: $(imageName)
  strategy:
    matrix:
      ubuntu-node-16-go-1-16-6:
        imageName: "ubuntu-latest"
        nodeVersion: "16.13.1"
        goVersion: "1.16.6"
      mac-node-16-go-1-16-6:
        imageName: "macos-latest"
        nodeVersion: "16.13.1"
        goVersion: "1.16.6"

  steps:
  - task: GoTool@0
    inputs:
      version: $(goVersion)

  - script: ./scripts/setup.sh -gqc
    displayName: Run install script

  - script: |
      DIR=$(basename $CURRENT_DIR)
      sed -i "s/\"GlobeTrotte\"/\"$DIR\"/g" src/wings/wings.json
      cat src/wings/wings.json
    env:
      CURRENT_DIR: $(Pipeline.Workspace)
    condition: eq(variables['Agent.OS'], 'Linux')
    displayName: Fix src/wings/wings.json (Ubuntu)

  - script: |
      brew install gnu-sed
      DIR=$(basename $CURRENT_DIR)
      gsed -i "s/\"GlobeTrotte\"/\"$DIR\"/g" src/wings/wings.json
      cat src/wings/wings.json
    env:
      CURRENT_DIR: $(Pipeline.Workspace)
    condition: eq(variables['Agent.OS'], 'Darwin')
    displayName: Fix src/wings/wings.json (MacOS)

  - script: ./pleasew go_mod
    displayName: Regenerate third_party/go/BUILD file
  - script: ./pleasew cover --show_all_output //src/turbine/...
    displayName: Test turbine (with coverage)

- job: cockpit
  pool:
    vmImage: $(imageName)
  strategy:
    matrix:
      ubuntu-node-16-go-1-16-6:
        imageName: "ubuntu-latest"
        nodeVersion: "16.13.1"
        goVersion: "1.16.6"
      mac-node-16-go-1-16-6:
        imageName: "macos-latest"
        nodeVersion: "16.13.1"
        goVersion: "1.16.6"

  steps:
  - task: NodeTool@0.200.0
    inputs:
      versionSpec: $(nodeVersion)

  - task: Cache@2.198.0
    inputs:
      key: "pnpm_store | $(Agent.OS) | package.json"
      path: "/home/vsts/.local/share/pnpm/store/v3"
    condition: eq(variables['Agent.OS'], 'Linux')
    displayName: Cache pnpm-store (Ubuntu)

  - task: Cache@2.198.0
    inputs:
      key: "pnpm_store | $(Agent.OS) | package.json"
      path: "/Users/runner/Library/pnpm/store/v3"
    condition: eq(variables['Agent.OS'], 'Darwin')
    displayName: Cache pnpm-store (MacOS)

  # - script: ./scripts/setup.sh -n
  #   displayName: Run install script

  - script: npm i -g pnpm@7.1.0 && pnpm i
    displayName: Install pnpm

  - script: |
      DIR=$(basename $CURRENT_DIR)
      sed -i "s/\"GlobeTrotte\"/\"$DIR\"/g" src/wings/wings.json
      cat src/wings/wings.json
    env:
      CURRENT_DIR: $(Pipeline.Workspace)
    condition: eq(variables['Agent.OS'], 'Linux')
    displayName: Fix src/wings/wings.json (Ubuntu)

  - script: |
      brew install gnu-sed
      DIR=$(basename $CURRENT_DIR)
      gsed -i "s/\"GlobeTrotte\"/\"$DIR\"/g" src/wings/wings.json
      cat src/wings/wings.json
    env:
      CURRENT_DIR: $(Pipeline.Workspace)
    condition: eq(variables['Agent.OS'], 'Darwin')
    displayName: Fix src/wings/wings.json (MacOS)

  - script: pnpm run -r test:vitest --coverage=false
    displayName: Test cockpit
  - script: pnpm run -r check:tsc
    displayName: Cockpit typecheck