sudo apt-get -qq update
sudo apt-get -qq install openssh-client git
+install_doc_push_script: &install_doc_push_script
+ name: Install the doc push script
+ no_output_timeout: "2m"
+ command: |
+ cat >/home/circleci/project/doc_push_script.sh <<EOL
+ # =================== The following code **should** be executed inside Docker container ===================
+
+ # This is where the local pytorch install in the docker image is located
+ pt_checkout="/var/lib/jenkins/workspace"
+
+ # Since we're cat-ing this file, we need to escape all $'s
+ echo "doc_push_script.sh: Invoked with \$*"
+
+ git clone https://yf225:${GITHUB_PYTORCHBOT_TOKEN}@github.com/pytorch/pytorch.github.io -b site
+ pushd pytorch.github.io
+
+ set -ex
+
+ # Argument 1: Where to copy the built documentation to
+ # (pytorch.github.io/$install_path)
+ install_path="\$1"
+ if [ -z "\$install_path" ]; then
+ echo "error: doc_push_script.sh: install_path (arg1) not specified"
+ exit 1
+ fi
+
+ # Argument 2: What version of the docs we are building.
+ version="\$2"
+ if [ -z "\$version" ]; then
+ echo "error: doc_push_script.sh: version (arg2) not specified"
+ exit 1
+ fi
+
+ is_master_doc=false
+ if [ "\$version" == "master" ]; then
+ is_master_doc=true
+ fi
+
+ # Argument 3: (optional) If present, we will NOT do any pushing. Used for testing.
+ dry_run=false
+ if [ "\$3" != "" ]; then
+ dry_run=true
+ fi
+
+ echo "install_path: \$install_path version: \$version dry_run: \$dry_run"
+
+ export LC_ALL=C
+ export PATH=/opt/conda/bin:$PATH
+
+ rm -rf pytorch || true
+
+ # Get all the documentation sources, put them in one place
+ pushd "\$pt_checkout"
+ git clone https://github.com/pytorch/vision
+ pushd vision
+ conda install -q pillow
+ time python setup.py install
+ popd
+ pushd docs
+ rm -rf source/torchvision
+ cp -r ../vision/docs/source source/torchvision
+
+ # Build the docs
+ pip -q install -r requirements.txt || true
+ if [ "\$is_master_doc" = true ]; then
+ make html
+ else
+ make html-stable
+ fi
+
+ # Move them into the docs repo
+ popd
+ popd
+ git rm -rf "\$install_path" || true
+ mv "\$pt_checkout/docs/build/html" "\$install_path"
+
+ # Add the version handler by search and replace.
+ # XXX: Consider moving this to the docs Makefile or site build
+ if [ "\$is_master_doc" = true ]; then
+ find "\$install_path" -name "*.html" -print0 | xargs -0 perl -pi -w -e "s@master\s+\((\d\.\d\.[A-Fa-f0-9]+\+[A-Fa-f0-9]+)\s+\)@<a href='http://pytorch.org/docs/versions.html'>\1 \▼</a>@g"
+ else
+ find "\$install_path" -name "*.html" -print0 | xargs -0 perl -pi -w -e "s@master\s+\((\d\.\d\.[A-Fa-f0-9]+\+[A-Fa-f0-9]+)\s+\)@<a href='http://pytorch.org/docs/versions.html'>\$version \▼</a>@g"
+ fi
+
+ git add "\$install_path" || true
+ git status
+ git config user.email "soumith+bot@pytorch.org"
+ git config user.name "pytorchbot"
+ # If there aren't changes, don't make a commit; push is no-op
+ git commit -m "auto-generating sphinx docs" || true
+ git status
+
+ if [ "\$dry_run" = false ]; then
+ echo "Pushing to pytorch.github.io:site"
+ git push origin site
+ else
+ echo "Skipping push due to dry_run"
+ fi
+
+ popd
+ # =================== The above code **should** be executed inside Docker container ===================
+ EOL
+ chmod +x /home/circleci/project/doc_push_script.sh
+
setup_ci_environment: &setup_ci_environment
name: Set Up CI Environment
no_output_timeout: "1h"
- run:
<<: *setup_ci_environment
- run:
- name: Doc Push
+ <<: *install_doc_push_script
+ - run:
+ name: Doc Build and Push
no_output_timeout: "1h"
command: |
set -e
- if [[ "${CIRCLE_BRANCH}" != "master" ]]; then
- echo "Skipping doc push..."
- exit 0
- fi
export COMMIT_DOCKER_IMAGE=${DOCKER_IMAGE}-${CIRCLE_SHA1}
echo "DOCKER_IMAGE: "${COMMIT_DOCKER_IMAGE}
docker pull ${COMMIT_DOCKER_IMAGE} >/dev/null
export id=$(docker run -t -d -w /var/lib/jenkins ${COMMIT_DOCKER_IMAGE})
- cat >/home/circleci/project/doc_push_script.sh <<EOL
- # =================== The following code will be executed inside Docker container ===================
- git clone https://yf225:${GITHUB_PYTORCHBOT_TOKEN}@github.com/pytorch/pytorch.github.io -b site
- pushd pytorch.github.io
-
- set -ex
-
- export LC_ALL=C
- export PATH=/opt/conda/bin:$PATH
-
- rm -rf pytorch || true
-
- # Get all the documentation sources, put them in one place
- # TODO: These clones can race
- git clone https://github.com/pytorch/pytorch
- pushd pytorch
- git clone https://github.com/pytorch/vision
- pushd vision
- conda install -q pillow
- time python setup.py install
- popd
- pushd docs
- rm -rf source/torchvision
- cp -r ../vision/docs/source source/torchvision
-
- # Build the docs
- pip -q install -r requirements.txt || true
- make html
-
- # Move them into the docs repo
- popd
- popd
- git rm -rf docs/master || true
- mv pytorch/docs/build/html docs/master
- find docs/master -name "*.html" -print0 | xargs -0 sed -i -E 's/master[[:blank:]]\\([[:digit:]]\\.[[:digit:]]\\.[[:xdigit:]]+\\+[[:xdigit:]]+[[:blank:]]\\)/<a href="http:\\/\\/pytorch.org\\/docs\\/versions.html">& \\▼<\\/a>/g'
- git add docs/master || true
- git status
- git config user.email "soumith+bot@pytorch.org"
- git config user.name "pytorchbot"
- # If there aren't changes, don't make a commit; push is no-op
- git commit -m "auto-generating sphinx docs" || true
- git status
- git push origin site
-
- popd
- # =================== The above code will be executed inside Docker container ===================
- EOL
- chmod +x /home/circleci/project/doc_push_script.sh
docker cp /home/circleci/project/doc_push_script.sh $id:/var/lib/jenkins/workspace/doc_push_script.sh
- export COMMAND='((echo "export JOB_BASE_NAME=${JOB_BASE_NAME}" && echo "source ./workspace/env" && echo "sudo chown -R jenkins workspace && cd workspace && ./doc_push_script.sh") | docker exec -u jenkins -i "$id" bash) 2>&1'
+ if [[ "${CIRCLE_BRANCH}" != "master" ]]; then
+ # Do a dry_run of the docs build. This will build the docs but not push them.
+ export COMMAND='((echo "export JOB_BASE_NAME=${JOB_BASE_NAME}" && echo "source ./workspace/env" && echo "sudo chown -R jenkins workspace && cd workspace && ./doc_push_script.sh docs/master master dry_run") | docker exec -u jenkins -i "$id" bash) 2>&1'
+ else
+ export COMMAND='((echo "export JOB_BASE_NAME=${JOB_BASE_NAME}" && echo "source ./workspace/env" && echo "sudo chown -R jenkins workspace && cd workspace && ./doc_push_script.sh docs/master master") | docker exec -u jenkins -i "$id" bash) 2>&1'
+ fi
echo ${COMMAND} > ./command.sh && unbuffer bash ./command.sh | ts
pytorch_macos_10_13_py3_build: