name: docs

on:
  push:
    branches:
      - master
  pull_request:

concurrency:
  group: ${{ github.event_name == 'push' && github.ref == 'refs/heads/master' && github.run_id || github.head_ref || github.ref }}-${{ github.workflow }}-${{ github.event_name }}
  cancel-in-progress: true

env:
  BASE_IMAGE: openpilot-base

  BUILD: selfdrive/test/docker_build.sh base

  RUN: docker run --shm-size 1G -v $GITHUB_WORKSPACE:/tmp/openpilot -w /tmp/openpilot -e FILEREADER_CACHE=1 -e PYTHONPATH=/tmp/openpilot -e NUM_JOBS -e JOB_ID -e GITHUB_ACTION -e GITHUB_REF -e GITHUB_HEAD_REF -e GITHUB_SHA -e GITHUB_REPOSITORY -e GITHUB_RUN_ID -v $GITHUB_WORKSPACE/.ci_cache/scons_cache:/tmp/scons_cache -v $GITHUB_WORKSPACE/.ci_cache/comma_download_cache:/tmp/comma_download_cache -v $GITHUB_WORKSPACE/.ci_cache/openpilot_cache:/tmp/openpilot_cache $BASE_IMAGE /bin/sh -c

jobs:
  docs:
    name: build docs
    runs-on: ubuntu-20.04
    timeout-minutes: 45
    steps:
    - uses: actions/checkout@v4
      with:
        submodules: true
    - uses: ./.github/workflows/setup-with-retry
    - name: Build openpilot
      run: |
        ${{ env.RUN }} "scons -j$(nproc)"
    - name: Build docs
      run: |
        ${{ env.RUN }} "apt update && apt install -y doxygen && cd docs && make html"

    - uses: actions/checkout@v4
      if: github.ref == 'refs/heads/master' && github.repository == 'commaai/openpilot'
      with:
        path: openpilot-docs
        ssh-key: ${{ secrets.OPENPILOT_DOCS_KEY }}
        repository: commaai/openpilot-docs
    - name: Push
      if: github.ref == 'refs/heads/master' && github.repository == 'commaai/openpilot'
      run: |
        set -x

        source release/identity.sh

        cd openpilot-docs

        git checkout --orphan tmp
        git rm -rf --cached .

        cp -r ../build/docs/html/ docs/
        touch docs/.nojekyll
        echo -n docs.comma.ai > docs/CNAME
        git add -f .

        git commit -m "build docs"

        # docs live in different repo to not bloat openpilot's full clone size
        git push -f origin gh-pages
