name: nightly

on:
  schedule:
    - cron: 0 0 * * *
  push:
    tags:
      # Final Release tags look like: v1.11.0
      - v[0-9]+.[0-9]+.[0-9]+
      # Release candidate tags look like: v1.11.0-rc1
      - v[0-9]+.[0-9]+.[0-9]+-rc[0-9]+
      - ciflow/nightly/*
  workflow_dispatch:


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

jobs:
  get-label-type:
    name: get-label-type
    uses: pytorch/pytorch/.github/workflows/_runner-determinator.yml@release/2.7
    if: ${{ (github.event_name != 'schedule' || github.repository == 'pytorch/pytorch') && github.repository_owner == 'pytorch' }}
    with:
      triggering_actor: ${{ github.triggering_actor }}
      issue_owner: ${{ github.event.pull_request.user.login || github.event.issue.user.login }}
      curr_branch: ${{ github.head_ref || github.ref_name }}
      curr_ref_type: ${{ github.ref_type }}

  docs-build:
    name: docs build
    uses: ./.github/workflows/_linux-build.yml
    needs: get-label-type
    with:
      runner: "${{ needs.get-label-type.outputs.label-type }}linux.2xlarge"
      build-environment: linux-jammy-py3.9-gcc11
      docker-image-name: pytorch-linux-jammy-py3.9-gcc11
    secrets: inherit

  docs-push:
    name: docs push
    uses: ./.github/workflows/_docs.yml
    needs:
      - docs-build
      - get-label-type
    with:
      runner_prefix: "${{ needs.get-label-type.outputs.label-type }}"
      build-environment: linux-jammy-py3.9-gcc11
      docker-image: ${{ needs.docs-build.outputs.docker-image }}
      push: ${{ github.event_name == 'schedule' || github.event_name == 'workflow_dispatch' || (startsWith(github.event.ref, 'refs/tags/v') && !contains(github.event.ref, 'rc')) }}
      run-doxygen: true
    secrets:
      GH_PYTORCHBOT_TOKEN: ${{ secrets.GH_PYTORCHBOT_TOKEN }}

  update-commit-hashes:
    runs-on: ubuntu-latest
    environment: update-commit-hash
    strategy:
      matrix:
        include:
          - repo-name: vision
            repo-owner: pytorch
            branch: main
            pin-folder: .github/ci_commit_pins
          - repo-name: audio
            repo-owner: pytorch
            branch: main
            pin-folder: .github/ci_commit_pins
          - repo-name: executorch
            repo-owner: pytorch
            branch: main
            pin-folder: .ci/docker/ci_commit_pins
          - repo-name: triton
            repo-owner: triton-lang
            branch: main
            pin-folder: .ci/docker/ci_commit_pins
    # Allow this to be triggered on either a schedule or on workflow_dispatch to allow for easier testing
    if: github.repository_owner == 'pytorch' && (github.event_name == 'schedule' || github.event_name == 'workflow_dispatch')
    steps:
      - name: "${{ matrix.repo-owner }}/${{ matrix.repo-name }} update-commit-hash"
        uses: pytorch/test-infra/.github/actions/update-commit-hash@release/2.7
        with:
          repo-owner: ${{ matrix.repo-owner }}
          repo-name: ${{ matrix.repo-name }}
          branch: ${{ matrix.branch }}
          pin-folder: ${{ matrix.pin-folder}}
          updatebot-token: ${{ secrets.UPDATEBOT_TOKEN }}
          pytorchbot-token: ${{ secrets.GH_PYTORCHBOT_TOKEN }}
