[CI] Fix nightly build #2341
Workflow file for this run
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# This workflow builds the tensordict docs and deploys them to gh-pages. | |
name: Generate documentation | |
on: | |
push: | |
branches: | |
- nightly | |
- main | |
- release/* | |
tags: | |
- v[0-9]+.[0-9]+.[0-9] | |
- v[0-9]+.[0-9]+.[0-9]+-rc[0-9]+ | |
pull_request: | |
workflow_dispatch: | |
concurrency: | |
# Documentation suggests ${{ github.head_ref }}, but that's only available on pull_request/pull_request_target triggers, so using ${{ github.ref }}. | |
# On master, we want all builds to complete even if merging happens faster to make it easier to discover at which point something broke. | |
group: ${{ github.workflow }}-${{ github.ref == 'refs/heads/main' && format('ci-master-{0}', github.sha) || format('ci-{0}', github.ref) }} | |
cancel-in-progress: true | |
jobs: | |
build-docs: | |
strategy: | |
matrix: | |
python_version: ["3.10"] | |
cuda_arch_version: ["12.1"] | |
uses: pytorch/test-infra/.github/workflows/linux_job_v2.yml@main | |
with: | |
repository: pytorch/tensordict | |
upload-artifact: docs | |
runner: "linux.g5.4xlarge.nvidia.gpu" | |
docker-image: "nvidia/cudagl:11.4.0-base" | |
timeout: 120 | |
script: | | |
set -e | |
set -v | |
apt-get update && apt-get install -y -f git wget gcc g++ dialog apt-utils | |
root_dir="$(pwd)" | |
conda_dir="${root_dir}/conda" | |
env_dir="${root_dir}/env" | |
os=Linux | |
# 1. Install conda at ./conda | |
printf "* Installing conda\n" | |
wget -O miniconda.sh "http://repo.continuum.io/miniconda/Miniconda3-latest-${os}-x86_64.sh" | |
bash ./miniconda.sh -b -f -p "${conda_dir}" | |
eval "$(${conda_dir}/bin/conda shell.bash hook)" | |
printf "* Creating a test environment\n" | |
conda create --prefix "${env_dir}" -y python=3.10 | |
printf "* Activating\n" | |
conda activate "${env_dir}" | |
# 2. upgrade pip, ninja and packaging | |
apt-get install python3-pip unzip -y -f | |
python3 -m pip install --upgrade pip | |
python3 -m pip install setuptools ninja packaging -U | |
# 3. check python version | |
python3 --version | |
# 4. Check git version | |
git version | |
# 5. Install PyTorch | |
python3 -m pip install --pre torch torchvision --index-url https://download.pytorch.org/whl/nightly/cpu -U --quiet --root-user-action=ignore | |
# 6. Install tensordict | |
python3 setup.py develop | |
# 7. Install requirements | |
export TD_GET_DEFAULTS_TO_NONE='1' | |
python3 -m pip install -r docs/requirements.txt --quiet --root-user-action=ignore | |
# 8. Test tensordict installation | |
mkdir _tmp | |
cd _tmp | |
PYOPENGL_PLATFORM=egl MUJOCO_GL=egl python3 -c """from tensordict import *""" | |
cd .. | |
# 9. Set sanitize version | |
if [[ ${{ github.event_name }} == push && (${{ github.ref_type }} == tag || (${{ github.ref_type }} == branch && ${{ github.ref_name }} == release/*)) ]]; then | |
echo '::group::Enable version string sanitization' | |
# This environment variable just has to exist and must not be empty. The actual value is arbitrary. | |
# See docs/source/conf.py for details | |
export TENSORDICT_SANITIZE_VERSION_STR_IN_DOCS=1 | |
echo '::endgroup::' | |
fi | |
# 10. Build doc | |
cd ./docs | |
make docs | |
cd .. | |
cp -r docs/build/html/* "${RUNNER_ARTIFACT_DIR}" | |
echo $(ls "${RUNNER_ARTIFACT_DIR}") | |
if [[ ${{ github.event_name == 'pull_request' }} ]]; then | |
cp -r docs/build/html/* "${RUNNER_DOCS_DIR}" | |
fi | |
upload: | |
needs: build-docs | |
if: github.repository == 'pytorch/tensordict' && github.event_name == 'push' && | |
((github.ref_type == 'branch' && github.ref_name == 'main') || github.ref_type == 'tag') | |
permissions: | |
contents: write | |
uses: pytorch/test-infra/.github/workflows/linux_job.yml@main | |
with: | |
repository: pytorch/tensordict | |
download-artifact: docs | |
ref: gh-pages | |
test-infra-ref: main | |
script: | | |
set -euo pipefail | |
REF_TYPE=${{ github.ref_type }} | |
REF_NAME=${{ github.ref_name }} | |
if [[ "${REF_TYPE}" == branch ]]; then | |
if [[ "${REF_NAME}" == main ]]; then | |
TARGET_FOLDER="${REF_NAME}" | |
# Bebug: | |
# else | |
# TARGET_FOLDER="release-doc" | |
fi | |
elif [[ "${REF_TYPE}" == tag ]]; then | |
case "${REF_NAME}" in | |
*-rc*) | |
echo "Aborting upload since this is an RC tag: ${REF_NAME}" | |
exit 0 | |
;; | |
*) | |
# Strip the leading "v" as well as the trailing patch version. For example: | |
# 'v0.15.2' -> '0.15' | |
TARGET_FOLDER=$(echo "${REF_NAME}" | sed 's/v\([0-9]\+\)\.\([0-9]\+\)\.[0-9]\+/\1.\2/') | |
;; | |
esac | |
fi | |
echo "Target Folder: ${TARGET_FOLDER}" | |
mkdir -p "${TARGET_FOLDER}" | |
rm -rf "${TARGET_FOLDER}"/* | |
echo $(ls "${RUNNER_ARTIFACT_DIR}") | |
rsync -a "${RUNNER_ARTIFACT_DIR}"/ "${TARGET_FOLDER}" | |
git add "${TARGET_FOLDER}" || true | |
if [[ "${TARGET_FOLDER}" == "main" ]] ; then | |
mkdir -p _static | |
rm -rf _static/* | |
cp -r "${TARGET_FOLDER}"/_static/* _static | |
git add _static || true | |
fi | |
git config user.name 'pytorchbot' | |
git config user.email '[email protected]' | |
git config http.postBuffer 524288000 | |
git commit -m "auto-generating sphinx docs" || true | |
git push |