name: Release Documentation on: release: types: [published] push: branches: - main paths: - "docs/**" - "python/sglang/version.py" - "python/sglang/**" workflow_dispatch: concurrency: group: release-docs-${{ github.ref }} cancel-in-progress: true env: SGLANG_IS_IN_CI: true jobs: execute-and-deploy: runs-on: 1-gpu-runner if: github.repository == 'sgl-project/sglang' steps: - name: Checkout code uses: actions/checkout@v4 - name: Fetch full git history for release index if: github.event_name == 'release' run: | git fetch --prune --unshallow || git fetch --prune --depth=0 - name: Install dependencies run: | bash scripts/ci/cuda/ci_install_dependency.sh pip install -r docs/requirements.txt apt-get update && apt-get install -y pandoc parallel retry ln -sf "$(which python3)" /usr/bin/python - name: Setup Jupyter Kernel run: | python -m ipykernel install --user --name python3 --display-name "Python 3" - name: Execute notebooks timeout-minutes: 40 run: | cd docs make clean make compile - name: Push HTML to sgl-project.github.io timeout-minutes: 30 env: GITHUB_TOKEN: ${{ secrets.GH_PAT_FOR_DOCUMENTATION }} run: | cd docs make html make markdown python3 wrap_run_llm.py if [[ "${{ github.event_name }}" == "release" ]]; then python3 release_lookup/generate_index.py --output release_lookup/release_index.json # Copy release lookup tool for official docs on published releases. mkdir -p _build/html/release_lookup cp release_lookup/index.html _build/html/release_lookup/ cp release_lookup/release_index.json _build/html/release_lookup/ fi cd _build/html git clone https://$GITHUB_TOKEN@github.com/sgl-project/sgl-project.github.io.git ../sgl-project.github.io --depth 1 if [[ "${{ github.event_name }}" == "release" ]]; then find ../sgl-project.github.io/ -mindepth 1 -not -path "../sgl-project.github.io/.git*" -not -name CNAME -not -name ".jekyll" -not -name ".nojekyll" -delete else find ../sgl-project.github.io/ -mindepth 1 -not -path "../sgl-project.github.io/.git*" -not -path "../sgl-project.github.io/release_lookup*" -not -name CNAME -not -name ".jekyll" -not -name ".nojekyll" -delete fi cp -r * ../sgl-project.github.io cp ../../README.md ../sgl-project.github.io/README.md cd ../sgl-project.github.io git config user.name "sglang-bot" git config user.email "sglangbot@gmail.com" git add . git commit -m "Update $(date +'%Y-%m-%d %H:%M:%S')" git push https://$GITHUB_TOKEN@github.com/sgl-project/sgl-project.github.io.git main cd .. rm -rf sgl-project.github.io