# 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.label.name || github.event.pull_request.number || github.sha }} @ ${{ github.event.label.name && github.event.pull_request.number || github.event.action }}
  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.action != 'labeled' ||
      github.event.pull_request.merged == false &&
      (
        github.event.action == 'labeled' &&
        github.event.label.name == 'runtest' ||
        github.event.label.name == 'on_device'
      )
    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
        shell: bash
        run: |
          platforms=$(cat ${GITHUB_WORKSPACE}/.github/config/${{ inputs.platform }}.json | jq -c '.platforms')
          echo "platforms=${platforms}" >> $GITHUB_ENV
      - id: set-includes
        shell: bash
        run: |
          includes=$(cat ${GITHUB_WORKSPACE}/.github/config/${{ inputs.platform }}.json | jq -c '.includes')
          echo "includes=${includes}" >> $GITHUB_ENV
      - id: set-on-device-test
        shell: bash
        run: |
          on_device_test=$(cat ${GITHUB_WORKSPACE}/.github/config/${{ inputs.platform }}.json | jq -rc '.on_device_test.enabled')
          echo "on_device_test=${on_device_test}" >> $GITHUB_ENV
      - id: set-on-host-test
        shell: bash
        run: |
          on_host_test=$(cat ${GITHUB_WORKSPACE}/.github/config/${{ inputs.platform }}.json | jq -rc '.on_host_test')
          echo "on_host_test=${on_host_test}" >> $GITHUB_ENV
      - id: set-on-host-test-shards
        shell: bash
        run: |
          on_host_test_shards=$(cat ${GITHUB_WORKSPACE}/.github/config/${{ inputs.platform }}.json | jq -c '.on_host_test_shards')
          echo "on_host_test_shards=${on_host_test_shards}" >> $GITHUB_ENV
      - id: set-docker-service
        shell: bash
        run: |
          docker_service=$(cat ${GITHUB_WORKSPACE}/.github/config/${{ inputs.platform }}.json | jq -rc '.docker_service')
          echo "docker_service=${docker_service}" >> $GITHUB_ENV
      - id: set-docker-runner-service
        shell: bash
        run: |
          docker_runner_service=$(cat ${GITHUB_WORKSPACE}/.github/config/${{ inputs.platform }}.json | jq -rc '.docker_runner_service')
          echo "docker_runner_service=${docker_runner_service}" >> $GITHUB_ENV
      - id: set-runner-tag
        shell: bash
        run: |
          runner_tag=$(cat ${GITHUB_WORKSPACE}/.github/config/${{ inputs.platform }}.json | jq -rc '.runner_tag')
          echo "runner_tag=${runner_tag}" >> $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 }}
      runner_tag: ${{ env.runner_tag }}
  # 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: 0
          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, "${{ needs.initialize.outputs.runner_tag }}"]
    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, "${{ needs.initialize.outputs.runner_tag }}"]
    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
