include:
  - local: 'docs/gitlab-ci-inc.yml'

deploy-docs:
  extends: .docs-base
  stage: deploy
  pages: true
  rules:
    - !reference [.common-rules, rules]
    - !reference [.no_scheduled_pipelines-rules, rules]
    # post-merge pipeline
    - if: '$CI_PROJECT_NAMESPACE == "mesa" && $CI_COMMIT_REF_NAME == $CI_DEFAULT_BRANCH && $CI_COMMIT_BRANCH'
      changes: &docs-or-ci
        - docs/**/*
        - .gitlab-ci.yml
        - src/util/format/**/*
        # All the following source files documentation is extracted from
        # git grep -h ":file: src/" -- docs | sort | uniq
        - src/compiler/nir/nir.h
        - src/intel/isl/**/*
        - src/vulkan/runtime/**/*
      when: always

test-docs:
  extends: .docs-base
  # Cancel job if a newer commit is pushed to the same branch
  interruptible: true
  stage: deploy
  rules:
    - !reference [.common-rules, rules]
    # merge pipeline
    - if: '$CI_PIPELINE_SOURCE == "merge_request_event" && $GITLAB_USER_LOGIN == "marge-bot"'
      when: on_success
    # pre-merge pipeline
    - if: '$CI_PIPELINE_SOURCE == "merge_request_event"'
      when: manual

linkcheck-docs:
  extends:
    - .docs-base
    - .no-auto-retry
  # Cancel job if a newer commit is pushed to the same branch
  interruptible: true
  stage: deploy
  rules:
    - !reference [.common-rules, rules]
    - !reference [.scheduled_pipeline-rules, rules]
    # pre-merge pipeline
    - if: '$CI_PIPELINE_SOURCE == "merge_request_event" && $GITLAB_USER_LOGIN != "marge-bot"'
      when: manual
  allow_failure: true
  script: sphinx-build --quiet --fail-on-warning --builder linkcheck docs public
