# Reusable Cobalt CI workflow.

name: main

on:
  workflow_call:
    inputs:
      platform:
        description: 'Cobalt platform.'
        required: true
        type: string
      nightly:
        description: 'Nightly workflow.'
        required: true
        type: string
        default: 'false'
      modular:
        description: 'Whether this is a modular build.'
        required: false
        type: boolean
        default: false

# Global env vars.
env:
  REGISTRY: ghcr.io
  IPV6_AVAILABLE: 0
  LANG: en_US.UTF-8
  IS_BUILDBOT_DOCKER: 1
  #BUILD_ID_SERVER_URL:
  IS_CI: 1
  IS_DOCKER: 1
  NINJA_STATUS: '[%e sec | %f/%t %u remaining | %c/sec | j%r]'
  SCCACHE: 1
  SCCACHE_GCS_BUCKET: cobalt-actions-sccache-windows
  SCCACHE_GCS_OAUTH_URL: http://metadata.google.internal/computeMetadata/v1/instance/service-accounts/default/token
  SCCACHE_GCS_RW_MODE: READ_WRITE
  SCCACHE_IDLE_TIMEOUT: 0 # prevent sccache server from shutting down after long idle.
  STARBOARD_TOOLCHAINS_DIR: /root/starboard-toolchains

concurrency:
  group: '${{ github.workflow }}-${{ github.event_name }}-${{ inputs.platform }} @ ${{ github.event.pull_request.number || github.sha }}'
  cancel-in-progress: true

# A workflow run is made up of one or more jobs that can run sequentially or in parallel
jobs:
  # Generates build matrix based on json configuration file.
  initialize:
    runs-on: ubuntu-latest
    permissions:
      pull-requests: write
    env:
      GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
      GITHUB_PR_REPO_URL: ${{ github.event.pull_request.base.repo.url }}
      GITHUB_EVENT_NUMBER: ${{ github.event.number }}
    # All triggers except draft PRs, unless PR is labeled with runtest
    if: |
      github.event_name != 'pull_request' ||
      (
        github.event.pull_request.draft == false ||
        (
          github.event.action == 'labeled' &&
          github.event.label.name == 'runtest'
        )
      )
    steps:
      - id: Checkout
        uses: kaidokert/checkout@v3.5.999 # Temporary version
        with:
          fetch-depth: 1
          persist-credentials: false
      - name: Remove runtest if exists
        if: github.event_name == 'pull_request'
        continue-on-error: true  # Ignore this step if we cannot remove the label.
        run: |
          set +e
          curl \
            -X DELETE \
            -H "Accept: application/vnd.github+json" \
            -H "Authorization: Bearer ${GITHUB_TOKEN}" \
            ${GITHUB_PR_REPO_URL}/issues/${GITHUB_EVENT_NUMBER}/labels/runtest
        shell: bash
      - id: set-platforms
        run: echo "platforms=$(cat ${GITHUB_WORKSPACE}/.github/config/${{ inputs.platform }}.json | jq -c '.platforms')" >> $GITHUB_ENV
      - id: set-includes
        run: echo "includes=$(cat ${GITHUB_WORKSPACE}/.github/config/${{ inputs.platform }}.json | jq -c '.includes')" >> $GITHUB_ENV
      - id: set-on-device-test
        run: echo "on_device_test=$(cat ${GITHUB_WORKSPACE}/.github/config/${{ inputs.platform }}.json | jq -rc '.on_device_test.enabled')" >> $GITHUB_ENV
      - id: set-on-host-test
        run: echo "on_host_test=$(cat ${GITHUB_WORKSPACE}/.github/config/${{ inputs.platform }}.json | jq -rc '.on_host_test')" >> $GITHUB_ENV
      - id: set-on-host-test-shards
        run: echo "on_host_test_shards=$(cat ${GITHUB_WORKSPACE}/.github/config/${{ inputs.platform }}.json | jq -c '.on_host_test_shards')" >> $GITHUB_ENV
      - id: set-docker-service
        run: echo "docker_service=$(cat ${GITHUB_WORKSPACE}/.github/config/${{ inputs.platform }}.json | jq -rc '.docker_service')" >> $GITHUB_ENV
      - id: set-docker-runner-service
        run: echo "docker_runner_service=$(cat ${GITHUB_WORKSPACE}/.github/config/${{ inputs.platform }}.json | jq -rc '.docker_runner_service')" >> $GITHUB_ENV
    outputs:
      platforms: ${{ env.platforms }}
      includes: ${{ env.includes }}
      on_device_test: ${{ env.on_device_test }}
      on_host_test: ${{ env.on_host_test }}
      on_host_test_shards: ${{ env.on_host_test_shards }}
      docker_service: ${{ env.docker_service }}
      docker_runner_service: ${{ env.docker_runner_service }}
  # Build windows docker images.
  build-docker-image:
    needs: [initialize]
    permissions:
      packages: write
    runs-on: windows-2019
    steps:
      - name: Checkout files
        uses: kaidokert/checkout@v3.5.999
        with:
          fetch-depth: 2
          persist-credentials: false
      - name: Login to Docker Registry ${{env.REGISTRY}}
        uses: docker/login-action@f4ef78c080cd8ba55a85445d5b36e214a81df20a # v2.1.0
        with:
          registry: ${{ env.REGISTRY }}
          username: ${{ github.actor }}
          password: ${{ secrets.GITHUB_TOKEN }}
      - name: Build docker image
        id: build-docker-image
        uses: ./.github/actions/docker_win
        with:
          service: ${{ needs.initialize.outputs.docker_service }}
      - name: Build runner docker image
        id: build-runner-docker-image
        uses: ./.github/actions/docker_win
        with:
          service: ${{ needs.initialize.outputs.docker_runner_service }}
  # Runs builds.
  build:
    needs: [initialize]
    permissions: {}
    runs-on: [self-hosted, win32]
    name: ${{matrix.name}}_${{matrix.config}}
    strategy:
      fail-fast: false
      matrix:
        platform: ${{ fromJson(needs.initialize.outputs.platforms) }}
        include: ${{ fromJson(needs.initialize.outputs.includes) }}
        config: [devel, debug, qa, gold]
    steps:
      - name: Checkout
        uses: kaidokert/checkout@v3.5.999
        with:
          # Use fetch depth of 0 to get full history for a valid build id.
          fetch-depth: 0
          persist-credentials: false
      - name: GN
        uses: ./.github/actions/gn
      - name: Build Cobalt
        uses: ./.github/actions/build
      - name: Upload Nightly Artifacts
        if: ${{ ( inputs.nightly == 'true' || github.event_name == 'schedule' ) && matrix.config != 'debug' }}
        uses: ./.github/actions/upload_nightly_artifacts
      - name: Upload On Host Test Artifacts
        if: ${{ matrix.config == 'devel' && needs.initialize.outputs.on_host_test == 'true' }}
        uses: ./.github/actions/upload_test_artifacts
        with:
          type: onhost
          os: windows

  # Runs on the host unit and integration tests.
  on-host-test:
    needs: [initialize, build]
    permissions: {}
    if: needs.initialize.outputs.on_host_test == 'true'
    runs-on: [self-hosted, win32]
    name: ${{matrix.name}}_${{matrix.shard}}_test
    strategy:
      fail-fast: false
      matrix:
        platform: ${{ fromJson(needs.initialize.outputs.platforms) }}
        shard: ${{ fromJson(needs.initialize.outputs.on_host_test_shards) }}
        config: [devel]
        include: ${{ fromJson(needs.initialize.outputs.includes) }}
    env:
      MODULAR_BUILD: ${{ inputs.modular && 1 || 0 }}
    steps:
      - name: Checkout
        uses: kaidokert/checkout@v3.5.999
        with:
          fetch-depth: 1
          persist-credentials: false
      - name: Run Tests
        uses: ./.github/actions/on_host_test
        with:
          os: windows
