name: Test Documentation on PR on: pull_request: branches: - "main" - "develop" - "feature/**" # any change in the examples folder will trigger check for the corresponding example. paths: - "docs/source/**.md" jobs: # This is for changed example files detect and output a matrix containing all the corresponding directory name. detect-changed-doc: if: | github.event.pull_request.draft == false && github.event.pull_request.base.repo.full_name == 'hpcaitech/ColossalAI' && github.event_name == 'pull_request' runs-on: [self-hosted, ubuntu-latest] outputs: any_changed: ${{ steps.changed-files.outputs.any_changed }} changed_files: ${{ steps.changed-files.outputs.all_changed_files }} concurrency: group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}-detect-change cancel-in-progress: true name: Detect changed example files steps: - uses: actions/checkout@v3 with: fetch-depth: 0 ref: ${{ github.event.pull_request.head.sha }} - name: Locate base commit id: locate-base-sha run: | curBranch=$(git rev-parse --abbrev-ref HEAD) commonCommit=$(git merge-base origin/main $curBranch) echo $commonCommit echo "baseSHA=$commonCommit" >> $GITHUB_OUTPUT - name: Get all changed example files id: changed-files uses: tj-actions/changed-files@v35 with: base_sha: ${{ steps.locate-base-sha.outputs.baseSHA }} files: | ./docs/source/**/*.md # If no file is changed, it will prompt an error and shows the matrix do not have value. check-changed-doc: # Add this condition to avoid executing this job if the trigger event is workflow_dispatch. if: | github.event.pull_request.draft == false && github.event.pull_request.base.repo.full_name == 'hpcaitech/ColossalAI' && github.event_name == 'pull_request' && needs.detect-changed-doc.outputs.any_changed == 'true' name: Test the changed Doc needs: detect-changed-doc runs-on: [self-hosted, ubuntu-latest] container: image: image-cloud.luchentech.com/hpcaitech/pytorch-cuda:2.2.2-12.1.0 options: --gpus all --rm timeout-minutes: 30 defaults: run: shell: bash concurrency: group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}-run-doctest cancel-in-progress: true steps: - name: Checkout ColossalAI-Documentation uses: actions/checkout@v2 with: path: "./ColossalAI-Documentation" repository: "hpcaitech/ColossalAI-Documentation" - name: Install Docer run: | pip install -v ./ColossalAI-Documentation/doc-build/third_party/hf-doc-builder pip install -v ./ColossalAI-Documentation/doc-build - name: Checkout ColossalAI uses: actions/checkout@v3 - name: Install Doc Test Requirements run: | source activate pytorch conda env update --file docs/conda-doc-test-deps.yml --prune pip install -r docs/requirements-doc-test.txt - name: Install ColossalAI run: | source activate pytorch BUILD_EXT=1 pip install -v -e . - name: Test the Doc run: | source activate pytorch for file in ${{ needs.detect-changed-doc.outputs.changed_files }}; do echo "Testing $file now..." docer test -p $file done env: NCCL_SHM_DISABLE: 1