name: Build
on:
  workflow_dispatch:
  pull_request:
  push:
    branches:
      - main
jobs:
  # Run the full Tilt build and wait for it to converge
  tilt:
    runs-on: tilt-kube-public

    # Cancel previous builds on the same branch/ref. Full runs are expensive
    # and capacity is limited, so we want to avoid running multiple builds
    # in parallel even if it means skipping CI runs on permanent branches
    # (unfortunately, we can't differentiate between temporary and permanent
    # refs without duplicating the entire logic).
    concurrency:
      group: ${{ github.workflow }}-${{ github.ref }}
      cancel-in-progress: true

    steps:
      - uses: actions/checkout@v2
      - name: Expand for link to Tilt dashboard (only available during build)
        run: >
          echo "Tilt progress dashboard: https://$DASHBOARD_URL"
      - run: |
          kubectl config set-context ci --namespace=$DEPLOY_NS
          kubectl config use-context ci

      - run: tilt ci -- --ci --namespace=$DEPLOY_NS --num=1
        timeout-minutes: 60

      # Clean up k8s resources
      - run: kubectl delete --namespace=$DEPLOY_NS service,statefulset,configmap,pod,job --all
        if: always()
