From 990f2cba4c6293e29e8d485dc315361aeec9e13f Mon Sep 17 00:00:00 2001 From: Ed Chalstrey Date: Tue, 28 Feb 2023 10:43:06 +0000 Subject: [PATCH 01/38] update VM size note --- docs/roles/system_manager/manage_deployments.md | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/docs/roles/system_manager/manage_deployments.md b/docs/roles/system_manager/manage_deployments.md index 2986287d1e..078d3b3ffb 100644 --- a/docs/roles/system_manager/manage_deployments.md +++ b/docs/roles/system_manager/manage_deployments.md @@ -41,11 +41,16 @@ PS> ./Add_Single_SRD.ps1 -shmId -sreId -ipLastOctet ```{note} -If the new `VM size` you want isn't shown as available in the Azure Portal, it's possible that you'll need to request an increase in the vCPU quota for the VM family before resizing is allowed: +If the new `VM size` you want isn't shown as available in the Azure Portal, there are several steps that can be taken. + +Firstly, try stopping the VM and checking again whether the size you want is available, as this can reveal additional options that aren't shown whilst the VM is running. + +Next, you can try to request an increase in the vCPU quota for the VM family of the desired VM: - Navigate to the Azure Portal and on the subscription page, click `Usage + quotas` under `Settings` - Choose the family appropriate to the VM that you want to resize to, and select a region appropriate for the SRE - Click the pen icon and set the `New Limit` to at least the number of vCPUs required by the VM that you want, the click submit - After the request is accepted, resize the VM as above +- In some cases, the quota increase may require a request to be submitted to Microsoft ``` (add_new_srd)= From ad51af81babf9aa65d69f4a2908330b4d48c1af0 Mon Sep 17 00:00:00 2001 From: Ed Chalstrey Date: Tue, 28 Feb 2023 13:19:55 +0000 Subject: [PATCH 02/38] update note --- docs/roles/system_manager/manage_deployments.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/docs/roles/system_manager/manage_deployments.md b/docs/roles/system_manager/manage_deployments.md index 078d3b3ffb..b6b6233dc0 100644 --- a/docs/roles/system_manager/manage_deployments.md +++ b/docs/roles/system_manager/manage_deployments.md @@ -43,7 +43,7 @@ PS> ./Add_Single_SRD.ps1 -shmId -sreId -ipLastOctet ./Add_Single_SRD.ps1 -shmId -sreId -ipLastOctet ` is the {ref}`secure research environment ID ` for this SRE - where `` is last octet of the IP address (this must be different to any other SRD VMs) +(using_gpus)= + ## {{minidisc}} Using GPUs in SRDs When you {ref}`resize_vm` or {ref}`add_new_srd` size featuring a GPU (N-series in Azure), you'll need to ensure it has an Nvidia GPU (as opposed to AMD or other). From b8e18085f3b05574b5e26561752263f3b9b1a6d5 Mon Sep 17 00:00:00 2001 From: Ed Chalstrey Date: Tue, 28 Feb 2023 13:22:50 +0000 Subject: [PATCH 03/38] changenote to tip and make bold --- docs/roles/system_manager/manage_deployments.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/roles/system_manager/manage_deployments.md b/docs/roles/system_manager/manage_deployments.md index b6b6233dc0..67f7eaa5f2 100644 --- a/docs/roles/system_manager/manage_deployments.md +++ b/docs/roles/system_manager/manage_deployments.md @@ -40,12 +40,12 @@ PS> ./Add_Single_SRD.ps1 -shmId -sreId -ipLastOctet -```{note} +```{tip} If the new `VM size` you want isn't shown as available in the Azure Portal, there are several steps that can be taken. -Firstly, try stopping the VM and checking again whether the size you want is available, as this can reveal additional options that aren't shown whilst the VM is running. For example, when resizing to an N-series VM in Azure, (see {ref}`using_gpus`) we've found that NVIDIA options such as the NVv3-series are not always shown as available. +Firstly, try **stopping the VM** and checking again whether the size you want is available, as this can reveal additional options that aren't shown whilst the VM is running. For example, when resizing to an N-series VM in Azure, (see {ref}`using_gpus`) we've found that NVIDIA options such as the NVv3-series are not always shown as available. -Next, you can try to request an increase in the vCPU quota for the VM family of the desired VM: +Next, you can try to **request an increase** in the vCPU quota for the VM family of the desired VM: - Navigate to the Azure Portal and on the subscription page, click `Usage + quotas` under `Settings` - Choose the family appropriate to the VM that you want to resize to, and select a region appropriate for the SRE - Click the pen icon and set the `New Limit` to at least the number of vCPUs required by the VM that you want, the click submit From 76723b6565e33d3b0fc2d8045e65c122bf6e552d Mon Sep 17 00:00:00 2001 From: Ed Chalstrey Date: Tue, 28 Feb 2023 13:23:49 +0000 Subject: [PATCH 04/38] remove word --- docs/roles/system_manager/manage_deployments.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/roles/system_manager/manage_deployments.md b/docs/roles/system_manager/manage_deployments.md index 67f7eaa5f2..a73e109975 100644 --- a/docs/roles/system_manager/manage_deployments.md +++ b/docs/roles/system_manager/manage_deployments.md @@ -75,7 +75,7 @@ PS> ./Add_Single_SRD.ps1 -shmId -sreId -ipLastOctet Date: Thu, 27 Apr 2023 11:43:57 +0100 Subject: [PATCH 05/38] Add readthedocs configuration --- .readthedocs.yaml | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) create mode 100644 .readthedocs.yaml diff --git a/.readthedocs.yaml b/.readthedocs.yaml new file mode 100644 index 0000000000..f215e317ea --- /dev/null +++ b/.readthedocs.yaml @@ -0,0 +1,20 @@ +# .readthedocs.yaml +# Read the Docs configuration file +# See https://docs.readthedocs.io/en/stable/config-file/v2.html for details + +version: 2 + +build: + os: ubuntu-22.04 + tools: + python: "3" + +sphinx: + configuration: docs/conf.py + +formats: + - pdf + +python: + install: + - requirements: docs/requirements.txt From 57e6f1020c01828f09a93287bd27c4166d324312 Mon Sep 17 00:00:00 2001 From: Jim Madge Date: Thu, 27 Apr 2023 11:47:57 +0100 Subject: [PATCH 06/38] Move sphinx configuration and doc requirements --- docs/{build => }/conf.py | 0 docs/{build => }/requirements.txt | 0 2 files changed, 0 insertions(+), 0 deletions(-) rename docs/{build => }/conf.py (100%) rename docs/{build => }/requirements.txt (100%) diff --git a/docs/build/conf.py b/docs/conf.py similarity index 100% rename from docs/build/conf.py rename to docs/conf.py diff --git a/docs/build/requirements.txt b/docs/requirements.txt similarity index 100% rename from docs/build/requirements.txt rename to docs/requirements.txt From 077db5d5afa7343d07232305c75574475e589151 Mon Sep 17 00:00:00 2001 From: Jim Madge Date: Thu, 27 Apr 2023 11:53:56 +0100 Subject: [PATCH 07/38] Move static and template directories --- docs/{build => }/_static/favicon.ico | Bin docs/{build => }/_static/logo_turing_dark.png | Bin docs/{build => }/_static/logo_turing_light.png | Bin docs/{build => }/_static/overrides.css | 0 docs/{build => }/_static/toggle.js | 0 .../_templates/sidebar-section-navigation.html | 0 docs/{build => }/_templates/sidebar-versions.html | 0 docs/{build => }/_templates/sphinx-version.html | 0 8 files changed, 0 insertions(+), 0 deletions(-) rename docs/{build => }/_static/favicon.ico (100%) rename docs/{build => }/_static/logo_turing_dark.png (100%) rename docs/{build => }/_static/logo_turing_light.png (100%) rename docs/{build => }/_static/overrides.css (100%) rename docs/{build => }/_static/toggle.js (100%) rename docs/{build => }/_templates/sidebar-section-navigation.html (100%) rename docs/{build => }/_templates/sidebar-versions.html (100%) rename docs/{build => }/_templates/sphinx-version.html (100%) diff --git a/docs/build/_static/favicon.ico b/docs/_static/favicon.ico similarity index 100% rename from docs/build/_static/favicon.ico rename to docs/_static/favicon.ico diff --git a/docs/build/_static/logo_turing_dark.png b/docs/_static/logo_turing_dark.png similarity index 100% rename from docs/build/_static/logo_turing_dark.png rename to docs/_static/logo_turing_dark.png diff --git a/docs/build/_static/logo_turing_light.png b/docs/_static/logo_turing_light.png similarity index 100% rename from docs/build/_static/logo_turing_light.png rename to docs/_static/logo_turing_light.png diff --git a/docs/build/_static/overrides.css b/docs/_static/overrides.css similarity index 100% rename from docs/build/_static/overrides.css rename to docs/_static/overrides.css diff --git a/docs/build/_static/toggle.js b/docs/_static/toggle.js similarity index 100% rename from docs/build/_static/toggle.js rename to docs/_static/toggle.js diff --git a/docs/build/_templates/sidebar-section-navigation.html b/docs/_templates/sidebar-section-navigation.html similarity index 100% rename from docs/build/_templates/sidebar-section-navigation.html rename to docs/_templates/sidebar-section-navigation.html diff --git a/docs/build/_templates/sidebar-versions.html b/docs/_templates/sidebar-versions.html similarity index 100% rename from docs/build/_templates/sidebar-versions.html rename to docs/_templates/sidebar-versions.html diff --git a/docs/build/_templates/sphinx-version.html b/docs/_templates/sphinx-version.html similarity index 100% rename from docs/build/_templates/sphinx-version.html rename to docs/_templates/sphinx-version.html From 1e4855e809801b14d39e0fa200aca8303d866b33 Mon Sep 17 00:00:00 2001 From: Jim Madge Date: Thu, 27 Apr 2023 12:03:24 +0100 Subject: [PATCH 08/38] Remove rinoh --- docs/build/emoji_support.rts | 7 ------- docs/build/emoji_support.rtt | 5 ----- docs/conf.py | 25 ------------------------- docs/requirements.txt | 2 -- 4 files changed, 39 deletions(-) delete mode 100644 docs/build/emoji_support.rts delete mode 100644 docs/build/emoji_support.rtt diff --git a/docs/build/emoji_support.rts b/docs/build/emoji_support.rts deleted file mode 100644 index 739d5d729f..0000000000 --- a/docs/build/emoji_support.rts +++ /dev/null @@ -1,7 +0,0 @@ -[STYLESHEET] -name=Emoji Support -description=Small tweaks made to the Sphinx style sheet -base=sphinx - -[VARIABLES] -fallback_typeface=Symbola diff --git a/docs/build/emoji_support.rtt b/docs/build/emoji_support.rtt deleted file mode 100644 index 3c3e005513..0000000000 --- a/docs/build/emoji_support.rtt +++ /dev/null @@ -1,5 +0,0 @@ -[TEMPLATE_CONFIGURATION] -name = Emoji Support -template = article - -stylesheet = emoji_support.rts diff --git a/docs/conf.py b/docs/conf.py index 879ed237cf..d1d891775a 100644 --- a/docs/conf.py +++ b/docs/conf.py @@ -92,7 +92,6 @@ # ones. extensions = [ "myst_parser", - "rinoh.frontend.sphinx", ] # Add any paths that contain templates here, relative to this directory. @@ -170,27 +169,3 @@ emoji_code: emoji.emojize(f":{emoji_code}:", language="alias") for emoji_code in emoji_codes } - -# -- Options for Rinoh ------------------------------------------------------- - -# List of documents to convert to PDF -rinoh_documents = [ - dict( - doc="roles/researcher/user_guide_guacamole", - target="pdf/data_safe_haven_user_guide_guacamole", - title="Data Safe Haven User Guide\nApache Guacamole", - subtitle=pdf_version_string, - date=current_commit_date, - author=author, - template="emoji_support.rtt", - ), - dict( - doc="roles/researcher/user_guide_msrds", - target="pdf/data_safe_haven_user_guide_msrds", - title="Data Safe Haven User Guide\nMicrosoft Remote Desktop", - subtitle=pdf_version_string, - date=current_commit_date, - author=author, - template="emoji_support.rtt", - ), -] diff --git a/docs/requirements.txt b/docs/requirements.txt index a6f3275d8b..6611eb4227 100644 --- a/docs/requirements.txt +++ b/docs/requirements.txt @@ -4,6 +4,4 @@ Jinja2==3.1.2 myst-parser==0.18.1 Pygments==2.14.0 pydata-sphinx-theme==0.12.0 -rinohtype==0.5.4 -rinoh-typeface-symbola==0.1.1 Sphinx==5.3.0 From b3f1aa2a71d55500621fac1fdbef1b17630576dc Mon Sep 17 00:00:00 2001 From: Jim Madge Date: Thu, 27 Apr 2023 13:53:50 +0100 Subject: [PATCH 09/38] Remove build directory --- docs/build/build_all_supported_versions.py | 173 --------------------- docs/build/meta/index.empty.md | 3 - docs/build/meta/index.html | 10 -- docs/build/run_act_build.sh | 68 -------- 4 files changed, 254 deletions(-) delete mode 100755 docs/build/build_all_supported_versions.py delete mode 100644 docs/build/meta/index.empty.md delete mode 100644 docs/build/meta/index.html delete mode 100755 docs/build/run_act_build.sh diff --git a/docs/build/build_all_supported_versions.py b/docs/build/build_all_supported_versions.py deleted file mode 100755 index dd2e565db2..0000000000 --- a/docs/build/build_all_supported_versions.py +++ /dev/null @@ -1,173 +0,0 @@ -#! /usr/bin/env python3 -import argparse -import emoji -import git -import os -import pathlib -import shutil -import subprocess -import sys -import tempfile - -# Set git repository details -development_branch = "develop" -earliest_supported_release = "v4.0.0" - -# --- Parse arguments --- -parser = argparse.ArgumentParser( - prog="python build_docs_all.py", - description="Build documentation for all supported versions", -) -parser.add_argument( - "-o", "--output-dir", help="Directory to store built documentation", required=True -) -parser.add_argument( - "-s", - "--skip-pdfs", - action="store_true", - help="Skip building PDFs (use only for faster testing)", -) -args = parser.parse_args() -skip_pdfs = args.skip_pdfs - -# Create output directory -combined_output_dir = pathlib.Path(args.output_dir).resolve() -if combined_output_dir.exists(): - shutil.rmtree(combined_output_dir) -combined_output_dir.mkdir(parents=True, exist_ok=True) - -# Necessary directories -temp_dir = tempfile.TemporaryDirectory() -build_dir = pathlib.Path(__file__).parent.resolve() -docs_dir = build_dir.parent -build_output_dir = docs_dir / "_output" -config_backup_dir = pathlib.Path(temp_dir.name) / "build_config" - -# Get git repository details -repo = git.Repo(search_parent_directories=True) -repo_name = repo.remotes.origin.url.split(".git")[0].split("/")[-1] - -# Load all release since earliest_supported_release -releases = sorted((t.name for t in repo.tags), reverse=True) -supported_versions = ( - releases[: releases.index(earliest_supported_release) + 1] - + [development_branch] -) -default_version = supported_versions[0] # Latest stable release -current_version = ( - [tag.name for tag in repo.tags if tag.commit == repo.head.commit] - + [branch.name for branch in repo.branches if branch.commit == repo.head.commit] - + [repo.head.commit] -)[0] # Tag or branch name or commit ID if no name is available - -# --- Ensure local repo is clean -- -if repo.is_dirty(untracked_files=True): - print( - "Repo is not clean. Run 'git status' and ensure repo is clean before rerunning this script." - ) - exit(1) - -# --- Backup documentastion build configuration --- -# Backup Sphinx docs build configuration from current branch to ensure -# consistent style and navigation elements for docs across all versions -# NOTE: copytree() requires the destination directory does not exist -# This is why we target a subfolder of the TemporaryDirectory we create -# earlier as the config backup directory -print(f"Backing up build config to: '{config_backup_dir}'") -shutil.copytree(build_dir, config_backup_dir) - -# --- Build docs for all supported versions --- -print(f"Building docs for all supported versions: {supported_versions}") -print(f"Default version: {default_version}") - - -# Flag to bypass Jekyll processing since this is a static html site -open(combined_output_dir / ".nojekyll", "w+").close() - -# Build docs for each branch -for version in supported_versions: - print(f"{emoji.emojize(':hourglass:', language='alias')} Generating docs for version '{version}'...") - - try: - # Checkout repo at this version - repo.git.checkout(version) - - # Restore Sphinx docs build configuration from backup for consistent style, - # clearing any existing build configuration directory content first. - if os.path.exists(build_dir): - shutil.rmtree(build_dir) - shutil.copytree(config_backup_dir, build_dir) - - # Use the first of these files that exists as the index: - # - index.md - # - README.md - # - DSG-user-documentation.md - # - An empty index.md - target = docs_dir / "index.md" - if target.is_file(): - # Use existing index file. Nothing to do. - pass - elif (source := docs_dir / "README.md").is_file(): - # Use docs README - shutil.move(source, target) - elif (source := docs_dir / "DSG-user-documentation.md").is_file(): - # Use docs DSG user documentation - shutil.move(source, target) - else: - # Use empty index file - shutil.copy(build_dir / "meta" / "index.empty.md", target) - - # Clean the output directory - subprocess.run( - ["make", "clean"], - cwd=docs_dir, - check=True, - ) - # Build docs for this version - build_commands = ["make", "html"] - if not skip_pdfs: - build_commands.append("pdf") - subprocess.run( - build_commands, - cwd=docs_dir, - check=True, - ) - # Store docs in the output directory - shutil.copytree(build_output_dir, combined_output_dir / version) - shutil.rmtree(build_output_dir) - - except subprocess.CalledProcessError: - print(f"Error encountered during build for version '{version}'") - raise - else: - print(f"{emoji.emojize(':sparkles:', language='alias')} Successfully built docs for version '{version}'") - finally: - # Revert any changes made to current branch - print(f"Reverting changes made to '{version}'") - repo.git.reset("--hard", "HEAD") - repo.git.clean("-fd") - -# Write top-level index file to redirect to default version of docs -with open(os.path.join(docs_dir, "build", "meta", "index.html"), "r") as file: - filedata = file.read() -filedata = filedata.replace("{{latest_stable}}", default_version) -with open(os.path.join(combined_output_dir, "index.html"), "w+") as file: - file.write(filedata) - -# -- Restore original branch and copy docs to specified output directory -- -print(f"Documentation builds complete for all versions: {supported_versions}") -# Checkout original branch -print(f"Restoring original '{current_version}' branch.") -repo.git.checkout(current_version) -temp_dir.cleanup() - -# Check that all versions have built -n_failures = 0 -for version in supported_versions: - if (combined_output_dir / version / "index.html").is_file(): - print(f"{emoji.emojize(':white_check_mark:', language='alias')} {version} documentation built successfully") - else: - print(f"{emoji.emojize(':x:', language='alias')} {version} documentation failed to build!") - n_failures += 1 - if n_failures: - sys.exit(1) diff --git a/docs/build/meta/index.empty.md b/docs/build/meta/index.empty.md deleted file mode 100644 index 989cf73460..0000000000 --- a/docs/build/meta/index.empty.md +++ /dev/null @@ -1,3 +0,0 @@ -# Safe Haven Documentation - -This release does not have any documentation diff --git a/docs/build/meta/index.html b/docs/build/meta/index.html deleted file mode 100644 index e8db9ab780..0000000000 --- a/docs/build/meta/index.html +++ /dev/null @@ -1,10 +0,0 @@ - - - - Data Safe Haven Documentation - - - -

Please wait while you're redirected to our documentation.

- - \ No newline at end of file diff --git a/docs/build/run_act_build.sh b/docs/build/run_act_build.sh deleted file mode 100755 index 3546d96d63..0000000000 --- a/docs/build/run_act_build.sh +++ /dev/null @@ -1,68 +0,0 @@ -#! /bin/sh - -# Document usage for this script -usage() { - echo "usage: $(basename "$0") -d directory [-h] [-p port]" - echo " -d directory [required] specify directory where output should be stored" - echo " -h display help" - echo " -p port specify port to run webserver on [default: 8080]" - exit 1 -} - -# Read command line arguments, overriding defaults where necessary -target_directory="" -port="8080" -while getopts "d:hp:" option; do - case $option in - d) - target_directory=$OPTARG - ;; - h) - usage - ;; - p) - port=$OPTARG - ;; - \?) - echo "Invalid option: -$OPTARG" >&2 - ;; - esac -done - -# Check that target and output directories exist -target_directory="$(realpath "$target_directory")" -if [ -z "$target_directory" ]; then usage; fi -output_directory="${target_directory:?}/data-safe-haven" -mkdir -p "${output_directory}" - -# Check that output directory is empty -if [ "$(ls -A "$output_directory")" ]; then - while true; do - echo "$output_directory is not empty. Delete its contents? [y/n] " - read -r response - case $response in - [Yy]*) - rm -rf "${output_directory}" - break - ;; - [Nn]*) exit 0 ;; - *) echo "Please answer yes or no." ;; - esac - done -fi - -# Build docs with act -echo "Building docs" -act -j build_docs -C "$(git rev-parse --show-toplevel)" 2>/dev/null - -# Move the docs to a local directory -echo "Moving docs to target directory" -CONTAINER_ID=$(docker container ls -a | grep build-docs | cut -d ' ' -f 1) -echo "Starting container $(docker container start "$CONTAINER_ID")..." -DOCS_DIR=$(dirname "$(docker exec -it "$CONTAINER_ID" /bin/bash -c "find /tmp -type d -name develop")") -docker cp "${CONTAINER_ID}:${DOCS_DIR}/." "${output_directory}" -echo "Stopping container $(docker container stop "$CONTAINER_ID")" - -# Start a Python webserver in local directory -echo "Starting webserver at http://localhost:${port}" -python -m http.server --directory "${target_directory}" "$port" From 111389a1f536aa69d4762b12b2be7a3cca2a4b56 Mon Sep 17 00:00:00 2001 From: Jim Madge Date: Thu, 27 Apr 2023 14:07:30 +0100 Subject: [PATCH 10/38] Remove pdf builds from Makefile --- docs/Makefile | 36 +++++++----------------------------- 1 file changed, 7 insertions(+), 29 deletions(-) diff --git a/docs/Makefile b/docs/Makefile index d3b53ad27d..e96b72c7ae 100644 --- a/docs/Makefile +++ b/docs/Makefile @@ -6,37 +6,15 @@ SPHINXOPTS ?= SPHINXBUILD ?= sphinx-build SOURCEDIR = . -CONFIGDIR = build -TARGETDIR = _output +BUILDDIR = build -# Determine which PDFs to build -# If you want to add a PDF make the following changes -# - Add SOURCE and TARGET variables -# - Add TARGET to PDFTARGETS rule -# - Add a 'TARGET: SOURCE' rule -# - Edit conf.py if you want them to be downloadable -PDFTARGETDIR = $(TARGETDIR)/pdf - -# Put help first so that "make" without argument is like "make help". +# Put it first so that "make" without argument is like "make help". help: - @$(SPHINXBUILD) -M help "$(SOURCEDIR)" "$(TARGETDIR)" $(SPHINXOPTS) $(O) + @$(SPHINXBUILD) -M help "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O) .PHONY: help Makefile -# 'all' will make HTML and PDFs -all: html pdf - -# Use rinoh (via Sphinx) to build PDFs from Markdown -pdf: - make rinoh - rm $(PDFTARGETDIR)/*.rtc - rm $(PDFTARGETDIR)/*.stylelog - -# Ensure that clean also removes the contents of $(PDFTARGETDIR) -clean: - rm -rf $(PDFTARGETDIR)/* - @$(SPHINXBUILD) -M clean "$(SOURCEDIR)" "$(TARGETDIR)" - -# Use Sphinx for other options. $(O) is meant as a shortcut for $(SPHINXOPTS). -.DEFAULT: Makefile - @$(SPHINXBUILD) -b $@ -c "$(CONFIGDIR)" "$(SOURCEDIR)" "$(TARGETDIR)" $(SPHINXOPTS) $(O) +# Catch-all target: route all unknown targets to Sphinx using the new +# "make mode" option. $(O) is meant as a shortcut for $(SPHINXOPTS). +%: Makefile + @$(SPHINXBUILD) -M $@ "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O) From cc86c418415fea85f1007e1f5030565f6764b43e Mon Sep 17 00:00:00 2001 From: Jim Madge Date: Thu, 27 Apr 2023 14:10:40 +0100 Subject: [PATCH 11/38] Disable readthedocs pdf builds At least temporarily to safe time/cpu cycles. --- .readthedocs.yaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.readthedocs.yaml b/.readthedocs.yaml index f215e317ea..d29cf953e9 100644 --- a/.readthedocs.yaml +++ b/.readthedocs.yaml @@ -12,8 +12,8 @@ build: sphinx: configuration: docs/conf.py -formats: - - pdf +# formats: +# - pdf python: install: From 12e6cf596f7969af24fbc2caae5e6d4b428a6392 Mon Sep 17 00:00:00 2001 From: Jim Madge Date: Thu, 27 Apr 2023 14:16:22 +0100 Subject: [PATCH 12/38] Move scriberia figure --- README.md | 2 +- docs/{static => _static}/scriberia_diagram.jpg | Bin docs/index.md | 2 +- 3 files changed, 2 insertions(+), 2 deletions(-) rename docs/{static => _static}/scriberia_diagram.jpg (100%) diff --git a/README.md b/README.md index acad65c38e..9090598d55 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -![Data Safe Haven cartoon by Scriberia for The Alan Turing Institute](docs/static/scriberia_diagram.jpg) +![Data Safe Haven cartoon by Scriberia for The Alan Turing Institute](docs/_static/scriberia_diagram.jpg) # :eyes: What is the Turing Data Safe Haven? diff --git a/docs/static/scriberia_diagram.jpg b/docs/_static/scriberia_diagram.jpg similarity index 100% rename from docs/static/scriberia_diagram.jpg rename to docs/_static/scriberia_diagram.jpg diff --git a/docs/index.md b/docs/index.md index 19caa8d65c..b048a58177 100644 --- a/docs/index.md +++ b/docs/index.md @@ -11,7 +11,7 @@ processes/index.md roles/index.md ``` -```{image} static/scriberia_diagram.jpg +```{image} _static/scriberia_diagram.jpg :alt: Data Safe Haven cartoon by Scriberia for The Alan Turing Institute :align: center ``` From c8369d993601fe1bdf5ca12b889231903c61ec7e Mon Sep 17 00:00:00 2001 From: Jim Madge Date: Thu, 27 Apr 2023 14:19:38 +0100 Subject: [PATCH 13/38] Move docs source to source dir --- .readthedocs.yaml | 2 +- docs/Makefile | 2 +- docs/{ => source}/_static/favicon.ico | Bin docs/{ => source}/_static/logo_turing_dark.png | Bin docs/{ => source}/_static/logo_turing_light.png | Bin docs/{ => source}/_static/overrides.css | 0 docs/{ => source}/_static/scriberia_diagram.jpg | Bin docs/{ => source}/_static/toggle.js | 0 .../_templates/sidebar-section-navigation.html | 0 docs/{ => source}/_templates/sidebar-versions.html | 0 docs/{ => source}/_templates/sphinx-version.html | 0 docs/{ => source}/conf.py | 0 docs/{ => source}/contributing/devops_gap.png | Bin .../contributing/example-conversation-in-issue.png | Bin docs/{ => source}/contributing/gitflow.svg | 0 docs/{ => source}/deployment/build_srd_image.md | 0 docs/{ => source}/deployment/deploy_shm.md | 0 docs/{ => source}/deployment/deploy_shm/AAD.png | Bin .../deploy_shm/aad_authentication_methods.png | Bin .../deployment/deploy_shm/aad_create_admin.png | Bin .../deployment/deploy_shm/aad_creation.png | Bin .../deployment/deploy_shm/aad_global_admin.png | Bin .../deployment/deploy_shm/aad_mfa_settings.png | Bin .../{ => source}/deployment/deploy_shm/aad_sspr.png | Bin .../deployment/deploy_shm/aad_tenant_id.png | Bin .../deploy_shm/catalina_authentication.png | Bin .../deployment/deploy_shm/certificate_details.png | Bin .../deployment/deploy_shm/dc_resource_groups.png | Bin .../deploy_shm/enable_password_writeback.png | Bin .../deployment/deploy_shm/nps_accounting.png | Bin .../deployment/deploy_shm/shm_subdomain_ns.png | Bin .../deployment/deploy_shm/vnet_resource_groups.png | Bin docs/{ => source}/deployment/deploy_sre.md | 0 .../guacamole_aad_app_registration_idtoken.png | Bin .../deploy_sre/guacamole_aad_idtoken_failure.png | Bin .../deployment/deploy_sre/guacamole_desktop.png | Bin .../deployment/deploy_sre/msrds_desktop.png | Bin .../deployment/deploy_sre/sre_subdomain_ns.png | Bin .../deployment/deploy_sre_apache_guacamole.md | 0 .../deployment/deploy_sre_microsoft_rds.md | 0 docs/{ => source}/deployment/index.md | 0 docs/{ => source}/deployment/security_checklist.md | 0 .../aad_additional_security_verification.png | Bin .../aad_mfa_approve_signin_request.png | Bin .../security_checklist/guacamole_srd_desktop.png | Bin .../security_checklist/login_no_mfa_guacamole.png | Bin .../security_checklist/login_no_mfa_msrds.png | Bin .../msrds_dashboard_with_apps.png | Bin .../security_checklist/msrds_failed_to_connect.png | Bin .../security_checklist/msrds_srd_desktop.png | Bin .../security_checklist/nsg_inbound_access.png | Bin .../security_checklist/nsg_outbound_access.png | Bin .../security_checklist/shmdc_website_deny.png | Bin .../security_checklist/shmdc_windows_update.png | Bin .../security_checklist/srd_installed_software.png | Bin .../deployment/security_checklist/srd_no_curl.png | Bin .../security_checklist/srd_no_internet.png | Bin .../security_checklist/srd_no_nslookup.png | Bin .../security_checklist/srd_no_ssh_by_fqdn.png | Bin .../security_checklist/srd_no_ssh_by_ip.png | Bin .../security_checklist/srd_pypi_tier2_allowed.png | Bin .../security_checklist/srd_pypi_tier2_denied.png | Bin .../security_checklist/srd_pypi_tier3_allowed.png | Bin .../security_checklist/srd_pypi_tier3_denied.png | Bin .../security_checklist/ssh_connection_fail.png | Bin .../deployment/snippets/00_symbols.partial.md | 0 .../deployment/snippets/01_prerequisites.partial.md | 0 .../deployment/snippets/02_configuration.partial.md | 0 .../snippets/03_01_remove_data.partial.md | 0 .../snippets/03_02_register_sre.partial.md | 0 .../deployment/snippets/04_01_sre_dns.partial.md | 0 .../deployment/snippets/04_02_manual_dns.partial.md | 0 .../snippets/04_03_deploy_vnet.partial.md | 0 .../snippets/05_storage_accounts.partial.md | 0 .../snippets/06_01_create_user_account.partial.md | 0 .../snippets/07_deploy_webapps.partial.md | 0 .../deployment/snippets/08_databases.partial.md | 0 .../deployment/snippets/09_single_srd.partial.md | 0 .../snippets/10_network_lockdown.partial.md | 0 .../snippets/11_configure_firewall.partial.md | 0 .../snippets/12_configure_monitoring.partial.md | 0 .../deployment/snippets/13_enable_backup.partial.md | 0 .../snippets/14_run_smoke_tests.partial.md | 0 .../deployment/snippets/user_csv_format.partial.md | 0 .../design/architecture/architecture_mirrors.png | Bin docs/{ => source}/design/architecture/index.md | 0 .../design/architecture/safe_haven_architecture.png | Bin .../design/architecture/shm_architecture.png | Bin .../{ => source}/design/architecture/shm_details.md | 0 .../design/architecture/sre_architecture.png | Bin .../{ => source}/design/architecture/sre_details.md | 0 docs/{ => source}/design/index.md | 0 docs/{ => source}/design/security/index.md | 0 docs/{ => source}/design/security/objectives.md | 0 .../design/security/reference_configuration.md | 0 .../design/security/sample_security_controls.png | Bin .../design/security/technical_controls.md | 0 docs/{ => source}/index.md | 0 docs/{ => source}/overview/index.md | 0 docs/{ => source}/overview/sensitivity_tiers.md | 0 docs/{ => source}/overview/what_is_dsh.md | 0 docs/{ => source}/overview/why_use_dsh.md | 0 docs/{ => source}/processes/data_access_controls.md | 0 docs/{ => source}/processes/data_classification.md | 0 docs/{ => source}/processes/data_egress.md | 0 docs/{ => source}/processes/data_handling.md | 0 docs/{ => source}/processes/data_ingress.md | 0 .../processes/data_transfer_protocol.md | 0 docs/{ => source}/processes/index.md | 0 .../processes/software_package_approval.md | 0 .../data_provider_representative/azcopy_warning.png | Bin .../azure_storage_explorer_connect.png | Bin .../azure_storage_explorer_container.png | Bin .../azure_storage_explorer_error.png | Bin .../roles/data_provider_representative/index.md | 0 docs/{ => source}/roles/index.md | 0 docs/{ => source}/roles/investigator/data_egress.md | 0 .../{ => source}/roles/investigator/data_ingress.md | 0 docs/{ => source}/roles/investigator/index.md | 0 docs/{ => source}/roles/programme_manager/index.md | 0 .../roles/project_manager/data_egress.md | 0 .../roles/project_manager/data_ingress.md | 0 docs/{ => source}/roles/project_manager/index.md | 0 .../roles/project_manager/project_lifecycle.md | 0 docs/{ => source}/roles/referee/index.md | 0 .../roles/researcher/available_software.md | 0 docs/{ => source}/roles/researcher/index.md | 0 .../researcher/snippets/01_introduction.partial.md | 0 .../researcher/snippets/02_account_setup.partial.md | 0 .../snippets/03_01_prerequisites.partial.md | 0 .../researcher/snippets/03_02_srd_login.partial.md | 0 .../researcher/snippets/04_using_srd.partial.md | 0 .../researcher/snippets/05_share_files.partial.md | 0 .../roles/researcher/snippets/06_cocalc.partial.md | 0 .../roles/researcher/snippets/07_gitlab.partial.md | 0 .../roles/researcher/snippets/08_codimd.partial.md | 0 .../researcher/snippets/10_databases.partial.md | 0 .../researcher/snippets/11_report_bugs.partial.md | 0 .../researcher/snippets/12_end_matter.partial.md | 0 .../roles/researcher/snippets/13_MFA.partial.md | 0 .../snippets/software_database.partial.md | 0 .../researcher/snippets/software_editors.partial.md | 0 .../snippets/software_languages.partial.md | 0 .../researcher/snippets/software_other.partial.md | 0 .../snippets/software_presentation.partial.md | 0 docs/{ => source}/roles/researcher/user_guide.md | 0 .../user_guide/access_desktop_applications.png | Bin .../researcher/user_guide/account_setup_captcha.png | Bin .../user_guide/account_setup_forgotten_password.png | Bin .../account_setup_mfa_add_authenticator_app.png | Bin ...t_setup_mfa_additional_security_verification.png | Bin .../account_setup_mfa_allow_notifications.png | Bin .../user_guide/account_setup_mfa_app_qrcode.png | Bin ...account_setup_mfa_authenticator_app_approved.png | Bin .../account_setup_mfa_authenticator_app_test.png | Bin .../account_setup_mfa_dashboard_phone_only.png | Bin .../account_setup_mfa_dashboard_two_methods.png | Bin ...account_setup_mfa_download_authenticator_app.png | Bin .../account_setup_mfa_registered_phone.png | Bin .../user_guide/account_setup_mfa_verified_phone.png | Bin .../account_setup_mfa_verifying_phone.png | Bin .../account_setup_more_information_required.png | Bin .../user_guide/account_setup_new_password.png | Bin .../account_setup_new_password_sign_in.png | Bin .../user_guide/account_setup_verify_phone.png | Bin .../user_guide/cocalc_account_creation.png | Bin .../roles/researcher/user_guide/cocalc_homepage.png | Bin .../user_guide/cocalc_security_warning.png | Bin .../researcher/user_guide/codimd_access_options.png | Bin .../roles/researcher/user_guide/codimd_logon.png | Bin .../researcher/user_guide/codimd_publishing.png | Bin .../researcher/user_guide/db_azure_data_studio.png | Bin .../researcher/user_guide/db_dbeaver_mssql.png | Bin .../user_guide/db_dbeaver_postgres_connection.png | Bin .../user_guide/db_dbeaver_postgres_ignore.png | Bin .../researcher/user_guide/gitlab_clone_url.png | Bin .../user_guide/gitlab_merge_request_details.png | Bin .../user_guide/gitlab_new_merge_request.png | Bin .../user_guide/gitlab_screenshot_login.png | Bin .../researcher/user_guide/guacamole_dashboard.png | Bin .../roles/researcher/user_guide/guacamole_mfa.png | Bin .../user_guide/logon_environment_guacamole.png | Bin .../user_guide/logon_environment_msrds.png | Bin .../roles/researcher/user_guide/msrds_dashboard.png | Bin .../user_guide/msrds_no_work_resources.png | Bin .../researcher/user_guide/msrds_srd_connection.png | Bin .../user_guide/msrds_srd_connection_failure.png | Bin .../researcher/user_guide/msrds_srd_rdc_screen.png | Bin .../user_guide/msrds_srd_security_fingerprint.png | Bin .../msrds_unexpected_certificate_error.png | Bin .../researcher/user_guide/srd_login_failure.png | Bin .../researcher/user_guide/srd_login_screen.png | Bin .../researcher/user_guide/srd_xfce_initial.png | Bin .../roles/researcher/user_guide_guacamole.md | 0 .../roles/researcher/user_guide_msrds.md | 0 .../administrator_guide/backup_instances_blobs.png | Bin .../administrator_guide/backup_instances_disks.png | Bin .../administrator_guide/backup_progress_disk_1.png | Bin .../administrator_guide/backup_progress_disk_2.png | Bin .../administrator_guide/backup_progress_disk_3.png | Bin .../administrator_guide/backup_restore_disk.png | Bin .../backup_select_containers_validate_blobs.png | Bin .../backup_select_restore_time_blobs.png | Bin .../backup_select_snapshot_validate_disks.png | Bin .../administrator_guide/backup_swap_disk_after.png | Bin .../administrator_guide/backup_swap_disk_before.png | Bin .../administrator_guide/connect_azure_storage.png | Bin .../internal_mirror_packages.png | Bin .../login_certificate_expiry.png | Bin .../administrator_guide/login_password_login.png | Bin .../administrator_guide/no_recent_connections.png | Bin .../administrator_guide/password_reset_failure.png | Bin .../administrator_guide/read_only_sas_token.png | Bin .../administrator_guide/srd_login_failure.png | Bin .../administrator_guide/srd_login_opening_port.png | Bin .../administrator_guide/srd_login_prompt.png | Bin docs/{ => source}/roles/system_manager/index.md | 0 .../roles/system_manager/manage_costs.md | 0 .../roles/system_manager/manage_data.md | 0 .../roles/system_manager/manage_deployments.md | 0 .../roles/system_manager/manage_users.md | 0 .../roles/system_manager/manage_webapps.md | 0 .../roles/system_manager/migrate_an_shm.md | 0 .../migrate_shm/aad_connection_failure.png | Bin .../system_manager/snippets/01_console.partial.md | 0 225 files changed, 2 insertions(+), 2 deletions(-) rename docs/{ => source}/_static/favicon.ico (100%) rename docs/{ => source}/_static/logo_turing_dark.png (100%) rename docs/{ => source}/_static/logo_turing_light.png (100%) rename docs/{ => source}/_static/overrides.css (100%) rename docs/{ => source}/_static/scriberia_diagram.jpg (100%) rename docs/{ => source}/_static/toggle.js (100%) rename docs/{ => source}/_templates/sidebar-section-navigation.html (100%) rename docs/{ => source}/_templates/sidebar-versions.html (100%) rename docs/{ => source}/_templates/sphinx-version.html (100%) rename docs/{ => source}/conf.py (100%) rename docs/{ => source}/contributing/devops_gap.png (100%) rename docs/{ => source}/contributing/example-conversation-in-issue.png (100%) rename docs/{ => source}/contributing/gitflow.svg (100%) rename docs/{ => source}/deployment/build_srd_image.md (100%) rename docs/{ => source}/deployment/deploy_shm.md (100%) rename docs/{ => source}/deployment/deploy_shm/AAD.png (100%) rename docs/{ => source}/deployment/deploy_shm/aad_authentication_methods.png (100%) rename docs/{ => source}/deployment/deploy_shm/aad_create_admin.png (100%) rename docs/{ => source}/deployment/deploy_shm/aad_creation.png (100%) rename docs/{ => source}/deployment/deploy_shm/aad_global_admin.png (100%) rename docs/{ => source}/deployment/deploy_shm/aad_mfa_settings.png (100%) rename docs/{ => source}/deployment/deploy_shm/aad_sspr.png (100%) rename docs/{ => source}/deployment/deploy_shm/aad_tenant_id.png (100%) rename docs/{ => source}/deployment/deploy_shm/catalina_authentication.png (100%) rename docs/{ => source}/deployment/deploy_shm/certificate_details.png (100%) rename docs/{ => source}/deployment/deploy_shm/dc_resource_groups.png (100%) rename docs/{ => source}/deployment/deploy_shm/enable_password_writeback.png (100%) rename docs/{ => source}/deployment/deploy_shm/nps_accounting.png (100%) rename docs/{ => source}/deployment/deploy_shm/shm_subdomain_ns.png (100%) rename docs/{ => source}/deployment/deploy_shm/vnet_resource_groups.png (100%) rename docs/{ => source}/deployment/deploy_sre.md (100%) rename docs/{ => source}/deployment/deploy_sre/guacamole_aad_app_registration_idtoken.png (100%) rename docs/{ => source}/deployment/deploy_sre/guacamole_aad_idtoken_failure.png (100%) rename docs/{ => source}/deployment/deploy_sre/guacamole_desktop.png (100%) rename docs/{ => source}/deployment/deploy_sre/msrds_desktop.png (100%) rename docs/{ => source}/deployment/deploy_sre/sre_subdomain_ns.png (100%) rename docs/{ => source}/deployment/deploy_sre_apache_guacamole.md (100%) rename docs/{ => source}/deployment/deploy_sre_microsoft_rds.md (100%) rename docs/{ => source}/deployment/index.md (100%) rename docs/{ => source}/deployment/security_checklist.md (100%) rename docs/{ => source}/deployment/security_checklist/aad_additional_security_verification.png (100%) rename docs/{ => source}/deployment/security_checklist/aad_mfa_approve_signin_request.png (100%) rename docs/{ => source}/deployment/security_checklist/guacamole_srd_desktop.png (100%) rename docs/{ => source}/deployment/security_checklist/login_no_mfa_guacamole.png (100%) rename docs/{ => source}/deployment/security_checklist/login_no_mfa_msrds.png (100%) rename docs/{ => source}/deployment/security_checklist/msrds_dashboard_with_apps.png (100%) rename docs/{ => source}/deployment/security_checklist/msrds_failed_to_connect.png (100%) rename docs/{ => source}/deployment/security_checklist/msrds_srd_desktop.png (100%) rename docs/{ => source}/deployment/security_checklist/nsg_inbound_access.png (100%) rename docs/{ => source}/deployment/security_checklist/nsg_outbound_access.png (100%) rename docs/{ => source}/deployment/security_checklist/shmdc_website_deny.png (100%) rename docs/{ => source}/deployment/security_checklist/shmdc_windows_update.png (100%) rename docs/{ => source}/deployment/security_checklist/srd_installed_software.png (100%) rename docs/{ => source}/deployment/security_checklist/srd_no_curl.png (100%) rename docs/{ => source}/deployment/security_checklist/srd_no_internet.png (100%) rename docs/{ => source}/deployment/security_checklist/srd_no_nslookup.png (100%) rename docs/{ => source}/deployment/security_checklist/srd_no_ssh_by_fqdn.png (100%) rename docs/{ => source}/deployment/security_checklist/srd_no_ssh_by_ip.png (100%) rename docs/{ => source}/deployment/security_checklist/srd_pypi_tier2_allowed.png (100%) rename docs/{ => source}/deployment/security_checklist/srd_pypi_tier2_denied.png (100%) rename docs/{ => source}/deployment/security_checklist/srd_pypi_tier3_allowed.png (100%) rename docs/{ => source}/deployment/security_checklist/srd_pypi_tier3_denied.png (100%) rename docs/{ => source}/deployment/security_checklist/ssh_connection_fail.png (100%) rename docs/{ => source}/deployment/snippets/00_symbols.partial.md (100%) rename docs/{ => source}/deployment/snippets/01_prerequisites.partial.md (100%) rename docs/{ => source}/deployment/snippets/02_configuration.partial.md (100%) rename docs/{ => source}/deployment/snippets/03_01_remove_data.partial.md (100%) rename docs/{ => source}/deployment/snippets/03_02_register_sre.partial.md (100%) rename docs/{ => source}/deployment/snippets/04_01_sre_dns.partial.md (100%) rename docs/{ => source}/deployment/snippets/04_02_manual_dns.partial.md (100%) rename docs/{ => source}/deployment/snippets/04_03_deploy_vnet.partial.md (100%) rename docs/{ => source}/deployment/snippets/05_storage_accounts.partial.md (100%) rename docs/{ => source}/deployment/snippets/06_01_create_user_account.partial.md (100%) rename docs/{ => source}/deployment/snippets/07_deploy_webapps.partial.md (100%) rename docs/{ => source}/deployment/snippets/08_databases.partial.md (100%) rename docs/{ => source}/deployment/snippets/09_single_srd.partial.md (100%) rename docs/{ => source}/deployment/snippets/10_network_lockdown.partial.md (100%) rename docs/{ => source}/deployment/snippets/11_configure_firewall.partial.md (100%) rename docs/{ => source}/deployment/snippets/12_configure_monitoring.partial.md (100%) rename docs/{ => source}/deployment/snippets/13_enable_backup.partial.md (100%) rename docs/{ => source}/deployment/snippets/14_run_smoke_tests.partial.md (100%) rename docs/{ => source}/deployment/snippets/user_csv_format.partial.md (100%) rename docs/{ => source}/design/architecture/architecture_mirrors.png (100%) rename docs/{ => source}/design/architecture/index.md (100%) rename docs/{ => source}/design/architecture/safe_haven_architecture.png (100%) rename docs/{ => source}/design/architecture/shm_architecture.png (100%) rename docs/{ => source}/design/architecture/shm_details.md (100%) rename docs/{ => source}/design/architecture/sre_architecture.png (100%) rename docs/{ => source}/design/architecture/sre_details.md (100%) rename docs/{ => source}/design/index.md (100%) rename docs/{ => source}/design/security/index.md (100%) rename docs/{ => source}/design/security/objectives.md (100%) rename docs/{ => source}/design/security/reference_configuration.md (100%) rename docs/{ => source}/design/security/sample_security_controls.png (100%) rename docs/{ => source}/design/security/technical_controls.md (100%) rename docs/{ => source}/index.md (100%) rename docs/{ => source}/overview/index.md (100%) rename docs/{ => source}/overview/sensitivity_tiers.md (100%) rename docs/{ => source}/overview/what_is_dsh.md (100%) rename docs/{ => source}/overview/why_use_dsh.md (100%) rename docs/{ => source}/processes/data_access_controls.md (100%) rename docs/{ => source}/processes/data_classification.md (100%) rename docs/{ => source}/processes/data_egress.md (100%) rename docs/{ => source}/processes/data_handling.md (100%) rename docs/{ => source}/processes/data_ingress.md (100%) rename docs/{ => source}/processes/data_transfer_protocol.md (100%) rename docs/{ => source}/processes/index.md (100%) rename docs/{ => source}/processes/software_package_approval.md (100%) rename docs/{ => source}/roles/data_provider_representative/azcopy_warning.png (100%) rename docs/{ => source}/roles/data_provider_representative/azure_storage_explorer_connect.png (100%) rename docs/{ => source}/roles/data_provider_representative/azure_storage_explorer_container.png (100%) rename docs/{ => source}/roles/data_provider_representative/azure_storage_explorer_error.png (100%) rename docs/{ => source}/roles/data_provider_representative/index.md (100%) rename docs/{ => source}/roles/index.md (100%) rename docs/{ => source}/roles/investigator/data_egress.md (100%) rename docs/{ => source}/roles/investigator/data_ingress.md (100%) rename docs/{ => source}/roles/investigator/index.md (100%) rename docs/{ => source}/roles/programme_manager/index.md (100%) rename docs/{ => source}/roles/project_manager/data_egress.md (100%) rename docs/{ => source}/roles/project_manager/data_ingress.md (100%) rename docs/{ => source}/roles/project_manager/index.md (100%) rename docs/{ => source}/roles/project_manager/project_lifecycle.md (100%) rename docs/{ => source}/roles/referee/index.md (100%) rename docs/{ => source}/roles/researcher/available_software.md (100%) rename docs/{ => source}/roles/researcher/index.md (100%) rename docs/{ => source}/roles/researcher/snippets/01_introduction.partial.md (100%) rename docs/{ => source}/roles/researcher/snippets/02_account_setup.partial.md (100%) rename docs/{ => source}/roles/researcher/snippets/03_01_prerequisites.partial.md (100%) rename docs/{ => source}/roles/researcher/snippets/03_02_srd_login.partial.md (100%) rename docs/{ => source}/roles/researcher/snippets/04_using_srd.partial.md (100%) rename docs/{ => source}/roles/researcher/snippets/05_share_files.partial.md (100%) rename docs/{ => source}/roles/researcher/snippets/06_cocalc.partial.md (100%) rename docs/{ => source}/roles/researcher/snippets/07_gitlab.partial.md (100%) rename docs/{ => source}/roles/researcher/snippets/08_codimd.partial.md (100%) rename docs/{ => source}/roles/researcher/snippets/10_databases.partial.md (100%) rename docs/{ => source}/roles/researcher/snippets/11_report_bugs.partial.md (100%) rename docs/{ => source}/roles/researcher/snippets/12_end_matter.partial.md (100%) rename docs/{ => source}/roles/researcher/snippets/13_MFA.partial.md (100%) rename docs/{ => source}/roles/researcher/snippets/software_database.partial.md (100%) rename docs/{ => source}/roles/researcher/snippets/software_editors.partial.md (100%) rename docs/{ => source}/roles/researcher/snippets/software_languages.partial.md (100%) rename docs/{ => source}/roles/researcher/snippets/software_other.partial.md (100%) rename docs/{ => source}/roles/researcher/snippets/software_presentation.partial.md (100%) rename docs/{ => source}/roles/researcher/user_guide.md (100%) rename docs/{ => source}/roles/researcher/user_guide/access_desktop_applications.png (100%) rename docs/{ => source}/roles/researcher/user_guide/account_setup_captcha.png (100%) rename docs/{ => source}/roles/researcher/user_guide/account_setup_forgotten_password.png (100%) rename docs/{ => source}/roles/researcher/user_guide/account_setup_mfa_add_authenticator_app.png (100%) rename docs/{ => source}/roles/researcher/user_guide/account_setup_mfa_additional_security_verification.png (100%) rename docs/{ => source}/roles/researcher/user_guide/account_setup_mfa_allow_notifications.png (100%) rename docs/{ => source}/roles/researcher/user_guide/account_setup_mfa_app_qrcode.png (100%) rename docs/{ => source}/roles/researcher/user_guide/account_setup_mfa_authenticator_app_approved.png (100%) rename docs/{ => source}/roles/researcher/user_guide/account_setup_mfa_authenticator_app_test.png (100%) rename docs/{ => source}/roles/researcher/user_guide/account_setup_mfa_dashboard_phone_only.png (100%) rename docs/{ => source}/roles/researcher/user_guide/account_setup_mfa_dashboard_two_methods.png (100%) rename docs/{ => source}/roles/researcher/user_guide/account_setup_mfa_download_authenticator_app.png (100%) rename docs/{ => source}/roles/researcher/user_guide/account_setup_mfa_registered_phone.png (100%) rename docs/{ => source}/roles/researcher/user_guide/account_setup_mfa_verified_phone.png (100%) rename docs/{ => source}/roles/researcher/user_guide/account_setup_mfa_verifying_phone.png (100%) rename docs/{ => source}/roles/researcher/user_guide/account_setup_more_information_required.png (100%) rename docs/{ => source}/roles/researcher/user_guide/account_setup_new_password.png (100%) rename docs/{ => source}/roles/researcher/user_guide/account_setup_new_password_sign_in.png (100%) rename docs/{ => source}/roles/researcher/user_guide/account_setup_verify_phone.png (100%) rename docs/{ => source}/roles/researcher/user_guide/cocalc_account_creation.png (100%) rename docs/{ => source}/roles/researcher/user_guide/cocalc_homepage.png (100%) rename docs/{ => source}/roles/researcher/user_guide/cocalc_security_warning.png (100%) rename docs/{ => source}/roles/researcher/user_guide/codimd_access_options.png (100%) rename docs/{ => source}/roles/researcher/user_guide/codimd_logon.png (100%) rename docs/{ => source}/roles/researcher/user_guide/codimd_publishing.png (100%) rename docs/{ => source}/roles/researcher/user_guide/db_azure_data_studio.png (100%) rename docs/{ => source}/roles/researcher/user_guide/db_dbeaver_mssql.png (100%) rename docs/{ => source}/roles/researcher/user_guide/db_dbeaver_postgres_connection.png (100%) rename docs/{ => source}/roles/researcher/user_guide/db_dbeaver_postgres_ignore.png (100%) rename docs/{ => source}/roles/researcher/user_guide/gitlab_clone_url.png (100%) rename docs/{ => source}/roles/researcher/user_guide/gitlab_merge_request_details.png (100%) rename docs/{ => source}/roles/researcher/user_guide/gitlab_new_merge_request.png (100%) rename docs/{ => source}/roles/researcher/user_guide/gitlab_screenshot_login.png (100%) rename docs/{ => source}/roles/researcher/user_guide/guacamole_dashboard.png (100%) rename docs/{ => source}/roles/researcher/user_guide/guacamole_mfa.png (100%) rename docs/{ => source}/roles/researcher/user_guide/logon_environment_guacamole.png (100%) rename docs/{ => source}/roles/researcher/user_guide/logon_environment_msrds.png (100%) rename docs/{ => source}/roles/researcher/user_guide/msrds_dashboard.png (100%) rename docs/{ => source}/roles/researcher/user_guide/msrds_no_work_resources.png (100%) rename docs/{ => source}/roles/researcher/user_guide/msrds_srd_connection.png (100%) rename docs/{ => source}/roles/researcher/user_guide/msrds_srd_connection_failure.png (100%) rename docs/{ => source}/roles/researcher/user_guide/msrds_srd_rdc_screen.png (100%) rename docs/{ => source}/roles/researcher/user_guide/msrds_srd_security_fingerprint.png (100%) rename docs/{ => source}/roles/researcher/user_guide/msrds_unexpected_certificate_error.png (100%) rename docs/{ => source}/roles/researcher/user_guide/srd_login_failure.png (100%) rename docs/{ => source}/roles/researcher/user_guide/srd_login_screen.png (100%) rename docs/{ => source}/roles/researcher/user_guide/srd_xfce_initial.png (100%) rename docs/{ => source}/roles/researcher/user_guide_guacamole.md (100%) rename docs/{ => source}/roles/researcher/user_guide_msrds.md (100%) rename docs/{ => source}/roles/system_manager/administrator_guide/backup_instances_blobs.png (100%) rename docs/{ => source}/roles/system_manager/administrator_guide/backup_instances_disks.png (100%) rename docs/{ => source}/roles/system_manager/administrator_guide/backup_progress_disk_1.png (100%) rename docs/{ => source}/roles/system_manager/administrator_guide/backup_progress_disk_2.png (100%) rename docs/{ => source}/roles/system_manager/administrator_guide/backup_progress_disk_3.png (100%) rename docs/{ => source}/roles/system_manager/administrator_guide/backup_restore_disk.png (100%) rename docs/{ => source}/roles/system_manager/administrator_guide/backup_select_containers_validate_blobs.png (100%) rename docs/{ => source}/roles/system_manager/administrator_guide/backup_select_restore_time_blobs.png (100%) rename docs/{ => source}/roles/system_manager/administrator_guide/backup_select_snapshot_validate_disks.png (100%) rename docs/{ => source}/roles/system_manager/administrator_guide/backup_swap_disk_after.png (100%) rename docs/{ => source}/roles/system_manager/administrator_guide/backup_swap_disk_before.png (100%) rename docs/{ => source}/roles/system_manager/administrator_guide/connect_azure_storage.png (100%) rename docs/{ => source}/roles/system_manager/administrator_guide/internal_mirror_packages.png (100%) rename docs/{ => source}/roles/system_manager/administrator_guide/login_certificate_expiry.png (100%) rename docs/{ => source}/roles/system_manager/administrator_guide/login_password_login.png (100%) rename docs/{ => source}/roles/system_manager/administrator_guide/no_recent_connections.png (100%) rename docs/{ => source}/roles/system_manager/administrator_guide/password_reset_failure.png (100%) rename docs/{ => source}/roles/system_manager/administrator_guide/read_only_sas_token.png (100%) rename docs/{ => source}/roles/system_manager/administrator_guide/srd_login_failure.png (100%) rename docs/{ => source}/roles/system_manager/administrator_guide/srd_login_opening_port.png (100%) rename docs/{ => source}/roles/system_manager/administrator_guide/srd_login_prompt.png (100%) rename docs/{ => source}/roles/system_manager/index.md (100%) rename docs/{ => source}/roles/system_manager/manage_costs.md (100%) rename docs/{ => source}/roles/system_manager/manage_data.md (100%) rename docs/{ => source}/roles/system_manager/manage_deployments.md (100%) rename docs/{ => source}/roles/system_manager/manage_users.md (100%) rename docs/{ => source}/roles/system_manager/manage_webapps.md (100%) rename docs/{ => source}/roles/system_manager/migrate_an_shm.md (100%) rename docs/{ => source}/roles/system_manager/migrate_shm/aad_connection_failure.png (100%) rename docs/{ => source}/roles/system_manager/snippets/01_console.partial.md (100%) diff --git a/.readthedocs.yaml b/.readthedocs.yaml index d29cf953e9..f496f7b191 100644 --- a/.readthedocs.yaml +++ b/.readthedocs.yaml @@ -10,7 +10,7 @@ build: python: "3" sphinx: - configuration: docs/conf.py + configuration: docs/source/conf.py # formats: # - pdf diff --git a/docs/Makefile b/docs/Makefile index e96b72c7ae..a2cf542beb 100644 --- a/docs/Makefile +++ b/docs/Makefile @@ -5,7 +5,7 @@ # from the environment for the first two. SPHINXOPTS ?= SPHINXBUILD ?= sphinx-build -SOURCEDIR = . +SOURCEDIR = source BUILDDIR = build # Put it first so that "make" without argument is like "make help". diff --git a/docs/_static/favicon.ico b/docs/source/_static/favicon.ico similarity index 100% rename from docs/_static/favicon.ico rename to docs/source/_static/favicon.ico diff --git a/docs/_static/logo_turing_dark.png b/docs/source/_static/logo_turing_dark.png similarity index 100% rename from docs/_static/logo_turing_dark.png rename to docs/source/_static/logo_turing_dark.png diff --git a/docs/_static/logo_turing_light.png b/docs/source/_static/logo_turing_light.png similarity index 100% rename from docs/_static/logo_turing_light.png rename to docs/source/_static/logo_turing_light.png diff --git a/docs/_static/overrides.css b/docs/source/_static/overrides.css similarity index 100% rename from docs/_static/overrides.css rename to docs/source/_static/overrides.css diff --git a/docs/_static/scriberia_diagram.jpg b/docs/source/_static/scriberia_diagram.jpg similarity index 100% rename from docs/_static/scriberia_diagram.jpg rename to docs/source/_static/scriberia_diagram.jpg diff --git a/docs/_static/toggle.js b/docs/source/_static/toggle.js similarity index 100% rename from docs/_static/toggle.js rename to docs/source/_static/toggle.js diff --git a/docs/_templates/sidebar-section-navigation.html b/docs/source/_templates/sidebar-section-navigation.html similarity index 100% rename from docs/_templates/sidebar-section-navigation.html rename to docs/source/_templates/sidebar-section-navigation.html diff --git a/docs/_templates/sidebar-versions.html b/docs/source/_templates/sidebar-versions.html similarity index 100% rename from docs/_templates/sidebar-versions.html rename to docs/source/_templates/sidebar-versions.html diff --git a/docs/_templates/sphinx-version.html b/docs/source/_templates/sphinx-version.html similarity index 100% rename from docs/_templates/sphinx-version.html rename to docs/source/_templates/sphinx-version.html diff --git a/docs/conf.py b/docs/source/conf.py similarity index 100% rename from docs/conf.py rename to docs/source/conf.py diff --git a/docs/contributing/devops_gap.png b/docs/source/contributing/devops_gap.png similarity index 100% rename from docs/contributing/devops_gap.png rename to docs/source/contributing/devops_gap.png diff --git a/docs/contributing/example-conversation-in-issue.png b/docs/source/contributing/example-conversation-in-issue.png similarity index 100% rename from docs/contributing/example-conversation-in-issue.png rename to docs/source/contributing/example-conversation-in-issue.png diff --git a/docs/contributing/gitflow.svg b/docs/source/contributing/gitflow.svg similarity index 100% rename from docs/contributing/gitflow.svg rename to docs/source/contributing/gitflow.svg diff --git a/docs/deployment/build_srd_image.md b/docs/source/deployment/build_srd_image.md similarity index 100% rename from docs/deployment/build_srd_image.md rename to docs/source/deployment/build_srd_image.md diff --git a/docs/deployment/deploy_shm.md b/docs/source/deployment/deploy_shm.md similarity index 100% rename from docs/deployment/deploy_shm.md rename to docs/source/deployment/deploy_shm.md diff --git a/docs/deployment/deploy_shm/AAD.png b/docs/source/deployment/deploy_shm/AAD.png similarity index 100% rename from docs/deployment/deploy_shm/AAD.png rename to docs/source/deployment/deploy_shm/AAD.png diff --git a/docs/deployment/deploy_shm/aad_authentication_methods.png b/docs/source/deployment/deploy_shm/aad_authentication_methods.png similarity index 100% rename from docs/deployment/deploy_shm/aad_authentication_methods.png rename to docs/source/deployment/deploy_shm/aad_authentication_methods.png diff --git a/docs/deployment/deploy_shm/aad_create_admin.png b/docs/source/deployment/deploy_shm/aad_create_admin.png similarity index 100% rename from docs/deployment/deploy_shm/aad_create_admin.png rename to docs/source/deployment/deploy_shm/aad_create_admin.png diff --git a/docs/deployment/deploy_shm/aad_creation.png b/docs/source/deployment/deploy_shm/aad_creation.png similarity index 100% rename from docs/deployment/deploy_shm/aad_creation.png rename to docs/source/deployment/deploy_shm/aad_creation.png diff --git a/docs/deployment/deploy_shm/aad_global_admin.png b/docs/source/deployment/deploy_shm/aad_global_admin.png similarity index 100% rename from docs/deployment/deploy_shm/aad_global_admin.png rename to docs/source/deployment/deploy_shm/aad_global_admin.png diff --git a/docs/deployment/deploy_shm/aad_mfa_settings.png b/docs/source/deployment/deploy_shm/aad_mfa_settings.png similarity index 100% rename from docs/deployment/deploy_shm/aad_mfa_settings.png rename to docs/source/deployment/deploy_shm/aad_mfa_settings.png diff --git a/docs/deployment/deploy_shm/aad_sspr.png b/docs/source/deployment/deploy_shm/aad_sspr.png similarity index 100% rename from docs/deployment/deploy_shm/aad_sspr.png rename to docs/source/deployment/deploy_shm/aad_sspr.png diff --git a/docs/deployment/deploy_shm/aad_tenant_id.png b/docs/source/deployment/deploy_shm/aad_tenant_id.png similarity index 100% rename from docs/deployment/deploy_shm/aad_tenant_id.png rename to docs/source/deployment/deploy_shm/aad_tenant_id.png diff --git a/docs/deployment/deploy_shm/catalina_authentication.png b/docs/source/deployment/deploy_shm/catalina_authentication.png similarity index 100% rename from docs/deployment/deploy_shm/catalina_authentication.png rename to docs/source/deployment/deploy_shm/catalina_authentication.png diff --git a/docs/deployment/deploy_shm/certificate_details.png b/docs/source/deployment/deploy_shm/certificate_details.png similarity index 100% rename from docs/deployment/deploy_shm/certificate_details.png rename to docs/source/deployment/deploy_shm/certificate_details.png diff --git a/docs/deployment/deploy_shm/dc_resource_groups.png b/docs/source/deployment/deploy_shm/dc_resource_groups.png similarity index 100% rename from docs/deployment/deploy_shm/dc_resource_groups.png rename to docs/source/deployment/deploy_shm/dc_resource_groups.png diff --git a/docs/deployment/deploy_shm/enable_password_writeback.png b/docs/source/deployment/deploy_shm/enable_password_writeback.png similarity index 100% rename from docs/deployment/deploy_shm/enable_password_writeback.png rename to docs/source/deployment/deploy_shm/enable_password_writeback.png diff --git a/docs/deployment/deploy_shm/nps_accounting.png b/docs/source/deployment/deploy_shm/nps_accounting.png similarity index 100% rename from docs/deployment/deploy_shm/nps_accounting.png rename to docs/source/deployment/deploy_shm/nps_accounting.png diff --git a/docs/deployment/deploy_shm/shm_subdomain_ns.png b/docs/source/deployment/deploy_shm/shm_subdomain_ns.png similarity index 100% rename from docs/deployment/deploy_shm/shm_subdomain_ns.png rename to docs/source/deployment/deploy_shm/shm_subdomain_ns.png diff --git a/docs/deployment/deploy_shm/vnet_resource_groups.png b/docs/source/deployment/deploy_shm/vnet_resource_groups.png similarity index 100% rename from docs/deployment/deploy_shm/vnet_resource_groups.png rename to docs/source/deployment/deploy_shm/vnet_resource_groups.png diff --git a/docs/deployment/deploy_sre.md b/docs/source/deployment/deploy_sre.md similarity index 100% rename from docs/deployment/deploy_sre.md rename to docs/source/deployment/deploy_sre.md diff --git a/docs/deployment/deploy_sre/guacamole_aad_app_registration_idtoken.png b/docs/source/deployment/deploy_sre/guacamole_aad_app_registration_idtoken.png similarity index 100% rename from docs/deployment/deploy_sre/guacamole_aad_app_registration_idtoken.png rename to docs/source/deployment/deploy_sre/guacamole_aad_app_registration_idtoken.png diff --git a/docs/deployment/deploy_sre/guacamole_aad_idtoken_failure.png b/docs/source/deployment/deploy_sre/guacamole_aad_idtoken_failure.png similarity index 100% rename from docs/deployment/deploy_sre/guacamole_aad_idtoken_failure.png rename to docs/source/deployment/deploy_sre/guacamole_aad_idtoken_failure.png diff --git a/docs/deployment/deploy_sre/guacamole_desktop.png b/docs/source/deployment/deploy_sre/guacamole_desktop.png similarity index 100% rename from docs/deployment/deploy_sre/guacamole_desktop.png rename to docs/source/deployment/deploy_sre/guacamole_desktop.png diff --git a/docs/deployment/deploy_sre/msrds_desktop.png b/docs/source/deployment/deploy_sre/msrds_desktop.png similarity index 100% rename from docs/deployment/deploy_sre/msrds_desktop.png rename to docs/source/deployment/deploy_sre/msrds_desktop.png diff --git a/docs/deployment/deploy_sre/sre_subdomain_ns.png b/docs/source/deployment/deploy_sre/sre_subdomain_ns.png similarity index 100% rename from docs/deployment/deploy_sre/sre_subdomain_ns.png rename to docs/source/deployment/deploy_sre/sre_subdomain_ns.png diff --git a/docs/deployment/deploy_sre_apache_guacamole.md b/docs/source/deployment/deploy_sre_apache_guacamole.md similarity index 100% rename from docs/deployment/deploy_sre_apache_guacamole.md rename to docs/source/deployment/deploy_sre_apache_guacamole.md diff --git a/docs/deployment/deploy_sre_microsoft_rds.md b/docs/source/deployment/deploy_sre_microsoft_rds.md similarity index 100% rename from docs/deployment/deploy_sre_microsoft_rds.md rename to docs/source/deployment/deploy_sre_microsoft_rds.md diff --git a/docs/deployment/index.md b/docs/source/deployment/index.md similarity index 100% rename from docs/deployment/index.md rename to docs/source/deployment/index.md diff --git a/docs/deployment/security_checklist.md b/docs/source/deployment/security_checklist.md similarity index 100% rename from docs/deployment/security_checklist.md rename to docs/source/deployment/security_checklist.md diff --git a/docs/deployment/security_checklist/aad_additional_security_verification.png b/docs/source/deployment/security_checklist/aad_additional_security_verification.png similarity index 100% rename from docs/deployment/security_checklist/aad_additional_security_verification.png rename to docs/source/deployment/security_checklist/aad_additional_security_verification.png diff --git a/docs/deployment/security_checklist/aad_mfa_approve_signin_request.png b/docs/source/deployment/security_checklist/aad_mfa_approve_signin_request.png similarity index 100% rename from docs/deployment/security_checklist/aad_mfa_approve_signin_request.png rename to docs/source/deployment/security_checklist/aad_mfa_approve_signin_request.png diff --git a/docs/deployment/security_checklist/guacamole_srd_desktop.png b/docs/source/deployment/security_checklist/guacamole_srd_desktop.png similarity index 100% rename from docs/deployment/security_checklist/guacamole_srd_desktop.png rename to docs/source/deployment/security_checklist/guacamole_srd_desktop.png diff --git a/docs/deployment/security_checklist/login_no_mfa_guacamole.png b/docs/source/deployment/security_checklist/login_no_mfa_guacamole.png similarity index 100% rename from docs/deployment/security_checklist/login_no_mfa_guacamole.png rename to docs/source/deployment/security_checklist/login_no_mfa_guacamole.png diff --git a/docs/deployment/security_checklist/login_no_mfa_msrds.png b/docs/source/deployment/security_checklist/login_no_mfa_msrds.png similarity index 100% rename from docs/deployment/security_checklist/login_no_mfa_msrds.png rename to docs/source/deployment/security_checklist/login_no_mfa_msrds.png diff --git a/docs/deployment/security_checklist/msrds_dashboard_with_apps.png b/docs/source/deployment/security_checklist/msrds_dashboard_with_apps.png similarity index 100% rename from docs/deployment/security_checklist/msrds_dashboard_with_apps.png rename to docs/source/deployment/security_checklist/msrds_dashboard_with_apps.png diff --git a/docs/deployment/security_checklist/msrds_failed_to_connect.png b/docs/source/deployment/security_checklist/msrds_failed_to_connect.png similarity index 100% rename from docs/deployment/security_checklist/msrds_failed_to_connect.png rename to docs/source/deployment/security_checklist/msrds_failed_to_connect.png diff --git a/docs/deployment/security_checklist/msrds_srd_desktop.png b/docs/source/deployment/security_checklist/msrds_srd_desktop.png similarity index 100% rename from docs/deployment/security_checklist/msrds_srd_desktop.png rename to docs/source/deployment/security_checklist/msrds_srd_desktop.png diff --git a/docs/deployment/security_checklist/nsg_inbound_access.png b/docs/source/deployment/security_checklist/nsg_inbound_access.png similarity index 100% rename from docs/deployment/security_checklist/nsg_inbound_access.png rename to docs/source/deployment/security_checklist/nsg_inbound_access.png diff --git a/docs/deployment/security_checklist/nsg_outbound_access.png b/docs/source/deployment/security_checklist/nsg_outbound_access.png similarity index 100% rename from docs/deployment/security_checklist/nsg_outbound_access.png rename to docs/source/deployment/security_checklist/nsg_outbound_access.png diff --git a/docs/deployment/security_checklist/shmdc_website_deny.png b/docs/source/deployment/security_checklist/shmdc_website_deny.png similarity index 100% rename from docs/deployment/security_checklist/shmdc_website_deny.png rename to docs/source/deployment/security_checklist/shmdc_website_deny.png diff --git a/docs/deployment/security_checklist/shmdc_windows_update.png b/docs/source/deployment/security_checklist/shmdc_windows_update.png similarity index 100% rename from docs/deployment/security_checklist/shmdc_windows_update.png rename to docs/source/deployment/security_checklist/shmdc_windows_update.png diff --git a/docs/deployment/security_checklist/srd_installed_software.png b/docs/source/deployment/security_checklist/srd_installed_software.png similarity index 100% rename from docs/deployment/security_checklist/srd_installed_software.png rename to docs/source/deployment/security_checklist/srd_installed_software.png diff --git a/docs/deployment/security_checklist/srd_no_curl.png b/docs/source/deployment/security_checklist/srd_no_curl.png similarity index 100% rename from docs/deployment/security_checklist/srd_no_curl.png rename to docs/source/deployment/security_checklist/srd_no_curl.png diff --git a/docs/deployment/security_checklist/srd_no_internet.png b/docs/source/deployment/security_checklist/srd_no_internet.png similarity index 100% rename from docs/deployment/security_checklist/srd_no_internet.png rename to docs/source/deployment/security_checklist/srd_no_internet.png diff --git a/docs/deployment/security_checklist/srd_no_nslookup.png b/docs/source/deployment/security_checklist/srd_no_nslookup.png similarity index 100% rename from docs/deployment/security_checklist/srd_no_nslookup.png rename to docs/source/deployment/security_checklist/srd_no_nslookup.png diff --git a/docs/deployment/security_checklist/srd_no_ssh_by_fqdn.png b/docs/source/deployment/security_checklist/srd_no_ssh_by_fqdn.png similarity index 100% rename from docs/deployment/security_checklist/srd_no_ssh_by_fqdn.png rename to docs/source/deployment/security_checklist/srd_no_ssh_by_fqdn.png diff --git a/docs/deployment/security_checklist/srd_no_ssh_by_ip.png b/docs/source/deployment/security_checklist/srd_no_ssh_by_ip.png similarity index 100% rename from docs/deployment/security_checklist/srd_no_ssh_by_ip.png rename to docs/source/deployment/security_checklist/srd_no_ssh_by_ip.png diff --git a/docs/deployment/security_checklist/srd_pypi_tier2_allowed.png b/docs/source/deployment/security_checklist/srd_pypi_tier2_allowed.png similarity index 100% rename from docs/deployment/security_checklist/srd_pypi_tier2_allowed.png rename to docs/source/deployment/security_checklist/srd_pypi_tier2_allowed.png diff --git a/docs/deployment/security_checklist/srd_pypi_tier2_denied.png b/docs/source/deployment/security_checklist/srd_pypi_tier2_denied.png similarity index 100% rename from docs/deployment/security_checklist/srd_pypi_tier2_denied.png rename to docs/source/deployment/security_checklist/srd_pypi_tier2_denied.png diff --git a/docs/deployment/security_checklist/srd_pypi_tier3_allowed.png b/docs/source/deployment/security_checklist/srd_pypi_tier3_allowed.png similarity index 100% rename from docs/deployment/security_checklist/srd_pypi_tier3_allowed.png rename to docs/source/deployment/security_checklist/srd_pypi_tier3_allowed.png diff --git a/docs/deployment/security_checklist/srd_pypi_tier3_denied.png b/docs/source/deployment/security_checklist/srd_pypi_tier3_denied.png similarity index 100% rename from docs/deployment/security_checklist/srd_pypi_tier3_denied.png rename to docs/source/deployment/security_checklist/srd_pypi_tier3_denied.png diff --git a/docs/deployment/security_checklist/ssh_connection_fail.png b/docs/source/deployment/security_checklist/ssh_connection_fail.png similarity index 100% rename from docs/deployment/security_checklist/ssh_connection_fail.png rename to docs/source/deployment/security_checklist/ssh_connection_fail.png diff --git a/docs/deployment/snippets/00_symbols.partial.md b/docs/source/deployment/snippets/00_symbols.partial.md similarity index 100% rename from docs/deployment/snippets/00_symbols.partial.md rename to docs/source/deployment/snippets/00_symbols.partial.md diff --git a/docs/deployment/snippets/01_prerequisites.partial.md b/docs/source/deployment/snippets/01_prerequisites.partial.md similarity index 100% rename from docs/deployment/snippets/01_prerequisites.partial.md rename to docs/source/deployment/snippets/01_prerequisites.partial.md diff --git a/docs/deployment/snippets/02_configuration.partial.md b/docs/source/deployment/snippets/02_configuration.partial.md similarity index 100% rename from docs/deployment/snippets/02_configuration.partial.md rename to docs/source/deployment/snippets/02_configuration.partial.md diff --git a/docs/deployment/snippets/03_01_remove_data.partial.md b/docs/source/deployment/snippets/03_01_remove_data.partial.md similarity index 100% rename from docs/deployment/snippets/03_01_remove_data.partial.md rename to docs/source/deployment/snippets/03_01_remove_data.partial.md diff --git a/docs/deployment/snippets/03_02_register_sre.partial.md b/docs/source/deployment/snippets/03_02_register_sre.partial.md similarity index 100% rename from docs/deployment/snippets/03_02_register_sre.partial.md rename to docs/source/deployment/snippets/03_02_register_sre.partial.md diff --git a/docs/deployment/snippets/04_01_sre_dns.partial.md b/docs/source/deployment/snippets/04_01_sre_dns.partial.md similarity index 100% rename from docs/deployment/snippets/04_01_sre_dns.partial.md rename to docs/source/deployment/snippets/04_01_sre_dns.partial.md diff --git a/docs/deployment/snippets/04_02_manual_dns.partial.md b/docs/source/deployment/snippets/04_02_manual_dns.partial.md similarity index 100% rename from docs/deployment/snippets/04_02_manual_dns.partial.md rename to docs/source/deployment/snippets/04_02_manual_dns.partial.md diff --git a/docs/deployment/snippets/04_03_deploy_vnet.partial.md b/docs/source/deployment/snippets/04_03_deploy_vnet.partial.md similarity index 100% rename from docs/deployment/snippets/04_03_deploy_vnet.partial.md rename to docs/source/deployment/snippets/04_03_deploy_vnet.partial.md diff --git a/docs/deployment/snippets/05_storage_accounts.partial.md b/docs/source/deployment/snippets/05_storage_accounts.partial.md similarity index 100% rename from docs/deployment/snippets/05_storage_accounts.partial.md rename to docs/source/deployment/snippets/05_storage_accounts.partial.md diff --git a/docs/deployment/snippets/06_01_create_user_account.partial.md b/docs/source/deployment/snippets/06_01_create_user_account.partial.md similarity index 100% rename from docs/deployment/snippets/06_01_create_user_account.partial.md rename to docs/source/deployment/snippets/06_01_create_user_account.partial.md diff --git a/docs/deployment/snippets/07_deploy_webapps.partial.md b/docs/source/deployment/snippets/07_deploy_webapps.partial.md similarity index 100% rename from docs/deployment/snippets/07_deploy_webapps.partial.md rename to docs/source/deployment/snippets/07_deploy_webapps.partial.md diff --git a/docs/deployment/snippets/08_databases.partial.md b/docs/source/deployment/snippets/08_databases.partial.md similarity index 100% rename from docs/deployment/snippets/08_databases.partial.md rename to docs/source/deployment/snippets/08_databases.partial.md diff --git a/docs/deployment/snippets/09_single_srd.partial.md b/docs/source/deployment/snippets/09_single_srd.partial.md similarity index 100% rename from docs/deployment/snippets/09_single_srd.partial.md rename to docs/source/deployment/snippets/09_single_srd.partial.md diff --git a/docs/deployment/snippets/10_network_lockdown.partial.md b/docs/source/deployment/snippets/10_network_lockdown.partial.md similarity index 100% rename from docs/deployment/snippets/10_network_lockdown.partial.md rename to docs/source/deployment/snippets/10_network_lockdown.partial.md diff --git a/docs/deployment/snippets/11_configure_firewall.partial.md b/docs/source/deployment/snippets/11_configure_firewall.partial.md similarity index 100% rename from docs/deployment/snippets/11_configure_firewall.partial.md rename to docs/source/deployment/snippets/11_configure_firewall.partial.md diff --git a/docs/deployment/snippets/12_configure_monitoring.partial.md b/docs/source/deployment/snippets/12_configure_monitoring.partial.md similarity index 100% rename from docs/deployment/snippets/12_configure_monitoring.partial.md rename to docs/source/deployment/snippets/12_configure_monitoring.partial.md diff --git a/docs/deployment/snippets/13_enable_backup.partial.md b/docs/source/deployment/snippets/13_enable_backup.partial.md similarity index 100% rename from docs/deployment/snippets/13_enable_backup.partial.md rename to docs/source/deployment/snippets/13_enable_backup.partial.md diff --git a/docs/deployment/snippets/14_run_smoke_tests.partial.md b/docs/source/deployment/snippets/14_run_smoke_tests.partial.md similarity index 100% rename from docs/deployment/snippets/14_run_smoke_tests.partial.md rename to docs/source/deployment/snippets/14_run_smoke_tests.partial.md diff --git a/docs/deployment/snippets/user_csv_format.partial.md b/docs/source/deployment/snippets/user_csv_format.partial.md similarity index 100% rename from docs/deployment/snippets/user_csv_format.partial.md rename to docs/source/deployment/snippets/user_csv_format.partial.md diff --git a/docs/design/architecture/architecture_mirrors.png b/docs/source/design/architecture/architecture_mirrors.png similarity index 100% rename from docs/design/architecture/architecture_mirrors.png rename to docs/source/design/architecture/architecture_mirrors.png diff --git a/docs/design/architecture/index.md b/docs/source/design/architecture/index.md similarity index 100% rename from docs/design/architecture/index.md rename to docs/source/design/architecture/index.md diff --git a/docs/design/architecture/safe_haven_architecture.png b/docs/source/design/architecture/safe_haven_architecture.png similarity index 100% rename from docs/design/architecture/safe_haven_architecture.png rename to docs/source/design/architecture/safe_haven_architecture.png diff --git a/docs/design/architecture/shm_architecture.png b/docs/source/design/architecture/shm_architecture.png similarity index 100% rename from docs/design/architecture/shm_architecture.png rename to docs/source/design/architecture/shm_architecture.png diff --git a/docs/design/architecture/shm_details.md b/docs/source/design/architecture/shm_details.md similarity index 100% rename from docs/design/architecture/shm_details.md rename to docs/source/design/architecture/shm_details.md diff --git a/docs/design/architecture/sre_architecture.png b/docs/source/design/architecture/sre_architecture.png similarity index 100% rename from docs/design/architecture/sre_architecture.png rename to docs/source/design/architecture/sre_architecture.png diff --git a/docs/design/architecture/sre_details.md b/docs/source/design/architecture/sre_details.md similarity index 100% rename from docs/design/architecture/sre_details.md rename to docs/source/design/architecture/sre_details.md diff --git a/docs/design/index.md b/docs/source/design/index.md similarity index 100% rename from docs/design/index.md rename to docs/source/design/index.md diff --git a/docs/design/security/index.md b/docs/source/design/security/index.md similarity index 100% rename from docs/design/security/index.md rename to docs/source/design/security/index.md diff --git a/docs/design/security/objectives.md b/docs/source/design/security/objectives.md similarity index 100% rename from docs/design/security/objectives.md rename to docs/source/design/security/objectives.md diff --git a/docs/design/security/reference_configuration.md b/docs/source/design/security/reference_configuration.md similarity index 100% rename from docs/design/security/reference_configuration.md rename to docs/source/design/security/reference_configuration.md diff --git a/docs/design/security/sample_security_controls.png b/docs/source/design/security/sample_security_controls.png similarity index 100% rename from docs/design/security/sample_security_controls.png rename to docs/source/design/security/sample_security_controls.png diff --git a/docs/design/security/technical_controls.md b/docs/source/design/security/technical_controls.md similarity index 100% rename from docs/design/security/technical_controls.md rename to docs/source/design/security/technical_controls.md diff --git a/docs/index.md b/docs/source/index.md similarity index 100% rename from docs/index.md rename to docs/source/index.md diff --git a/docs/overview/index.md b/docs/source/overview/index.md similarity index 100% rename from docs/overview/index.md rename to docs/source/overview/index.md diff --git a/docs/overview/sensitivity_tiers.md b/docs/source/overview/sensitivity_tiers.md similarity index 100% rename from docs/overview/sensitivity_tiers.md rename to docs/source/overview/sensitivity_tiers.md diff --git a/docs/overview/what_is_dsh.md b/docs/source/overview/what_is_dsh.md similarity index 100% rename from docs/overview/what_is_dsh.md rename to docs/source/overview/what_is_dsh.md diff --git a/docs/overview/why_use_dsh.md b/docs/source/overview/why_use_dsh.md similarity index 100% rename from docs/overview/why_use_dsh.md rename to docs/source/overview/why_use_dsh.md diff --git a/docs/processes/data_access_controls.md b/docs/source/processes/data_access_controls.md similarity index 100% rename from docs/processes/data_access_controls.md rename to docs/source/processes/data_access_controls.md diff --git a/docs/processes/data_classification.md b/docs/source/processes/data_classification.md similarity index 100% rename from docs/processes/data_classification.md rename to docs/source/processes/data_classification.md diff --git a/docs/processes/data_egress.md b/docs/source/processes/data_egress.md similarity index 100% rename from docs/processes/data_egress.md rename to docs/source/processes/data_egress.md diff --git a/docs/processes/data_handling.md b/docs/source/processes/data_handling.md similarity index 100% rename from docs/processes/data_handling.md rename to docs/source/processes/data_handling.md diff --git a/docs/processes/data_ingress.md b/docs/source/processes/data_ingress.md similarity index 100% rename from docs/processes/data_ingress.md rename to docs/source/processes/data_ingress.md diff --git a/docs/processes/data_transfer_protocol.md b/docs/source/processes/data_transfer_protocol.md similarity index 100% rename from docs/processes/data_transfer_protocol.md rename to docs/source/processes/data_transfer_protocol.md diff --git a/docs/processes/index.md b/docs/source/processes/index.md similarity index 100% rename from docs/processes/index.md rename to docs/source/processes/index.md diff --git a/docs/processes/software_package_approval.md b/docs/source/processes/software_package_approval.md similarity index 100% rename from docs/processes/software_package_approval.md rename to docs/source/processes/software_package_approval.md diff --git a/docs/roles/data_provider_representative/azcopy_warning.png b/docs/source/roles/data_provider_representative/azcopy_warning.png similarity index 100% rename from docs/roles/data_provider_representative/azcopy_warning.png rename to docs/source/roles/data_provider_representative/azcopy_warning.png diff --git a/docs/roles/data_provider_representative/azure_storage_explorer_connect.png b/docs/source/roles/data_provider_representative/azure_storage_explorer_connect.png similarity index 100% rename from docs/roles/data_provider_representative/azure_storage_explorer_connect.png rename to docs/source/roles/data_provider_representative/azure_storage_explorer_connect.png diff --git a/docs/roles/data_provider_representative/azure_storage_explorer_container.png b/docs/source/roles/data_provider_representative/azure_storage_explorer_container.png similarity index 100% rename from docs/roles/data_provider_representative/azure_storage_explorer_container.png rename to docs/source/roles/data_provider_representative/azure_storage_explorer_container.png diff --git a/docs/roles/data_provider_representative/azure_storage_explorer_error.png b/docs/source/roles/data_provider_representative/azure_storage_explorer_error.png similarity index 100% rename from docs/roles/data_provider_representative/azure_storage_explorer_error.png rename to docs/source/roles/data_provider_representative/azure_storage_explorer_error.png diff --git a/docs/roles/data_provider_representative/index.md b/docs/source/roles/data_provider_representative/index.md similarity index 100% rename from docs/roles/data_provider_representative/index.md rename to docs/source/roles/data_provider_representative/index.md diff --git a/docs/roles/index.md b/docs/source/roles/index.md similarity index 100% rename from docs/roles/index.md rename to docs/source/roles/index.md diff --git a/docs/roles/investigator/data_egress.md b/docs/source/roles/investigator/data_egress.md similarity index 100% rename from docs/roles/investigator/data_egress.md rename to docs/source/roles/investigator/data_egress.md diff --git a/docs/roles/investigator/data_ingress.md b/docs/source/roles/investigator/data_ingress.md similarity index 100% rename from docs/roles/investigator/data_ingress.md rename to docs/source/roles/investigator/data_ingress.md diff --git a/docs/roles/investigator/index.md b/docs/source/roles/investigator/index.md similarity index 100% rename from docs/roles/investigator/index.md rename to docs/source/roles/investigator/index.md diff --git a/docs/roles/programme_manager/index.md b/docs/source/roles/programme_manager/index.md similarity index 100% rename from docs/roles/programme_manager/index.md rename to docs/source/roles/programme_manager/index.md diff --git a/docs/roles/project_manager/data_egress.md b/docs/source/roles/project_manager/data_egress.md similarity index 100% rename from docs/roles/project_manager/data_egress.md rename to docs/source/roles/project_manager/data_egress.md diff --git a/docs/roles/project_manager/data_ingress.md b/docs/source/roles/project_manager/data_ingress.md similarity index 100% rename from docs/roles/project_manager/data_ingress.md rename to docs/source/roles/project_manager/data_ingress.md diff --git a/docs/roles/project_manager/index.md b/docs/source/roles/project_manager/index.md similarity index 100% rename from docs/roles/project_manager/index.md rename to docs/source/roles/project_manager/index.md diff --git a/docs/roles/project_manager/project_lifecycle.md b/docs/source/roles/project_manager/project_lifecycle.md similarity index 100% rename from docs/roles/project_manager/project_lifecycle.md rename to docs/source/roles/project_manager/project_lifecycle.md diff --git a/docs/roles/referee/index.md b/docs/source/roles/referee/index.md similarity index 100% rename from docs/roles/referee/index.md rename to docs/source/roles/referee/index.md diff --git a/docs/roles/researcher/available_software.md b/docs/source/roles/researcher/available_software.md similarity index 100% rename from docs/roles/researcher/available_software.md rename to docs/source/roles/researcher/available_software.md diff --git a/docs/roles/researcher/index.md b/docs/source/roles/researcher/index.md similarity index 100% rename from docs/roles/researcher/index.md rename to docs/source/roles/researcher/index.md diff --git a/docs/roles/researcher/snippets/01_introduction.partial.md b/docs/source/roles/researcher/snippets/01_introduction.partial.md similarity index 100% rename from docs/roles/researcher/snippets/01_introduction.partial.md rename to docs/source/roles/researcher/snippets/01_introduction.partial.md diff --git a/docs/roles/researcher/snippets/02_account_setup.partial.md b/docs/source/roles/researcher/snippets/02_account_setup.partial.md similarity index 100% rename from docs/roles/researcher/snippets/02_account_setup.partial.md rename to docs/source/roles/researcher/snippets/02_account_setup.partial.md diff --git a/docs/roles/researcher/snippets/03_01_prerequisites.partial.md b/docs/source/roles/researcher/snippets/03_01_prerequisites.partial.md similarity index 100% rename from docs/roles/researcher/snippets/03_01_prerequisites.partial.md rename to docs/source/roles/researcher/snippets/03_01_prerequisites.partial.md diff --git a/docs/roles/researcher/snippets/03_02_srd_login.partial.md b/docs/source/roles/researcher/snippets/03_02_srd_login.partial.md similarity index 100% rename from docs/roles/researcher/snippets/03_02_srd_login.partial.md rename to docs/source/roles/researcher/snippets/03_02_srd_login.partial.md diff --git a/docs/roles/researcher/snippets/04_using_srd.partial.md b/docs/source/roles/researcher/snippets/04_using_srd.partial.md similarity index 100% rename from docs/roles/researcher/snippets/04_using_srd.partial.md rename to docs/source/roles/researcher/snippets/04_using_srd.partial.md diff --git a/docs/roles/researcher/snippets/05_share_files.partial.md b/docs/source/roles/researcher/snippets/05_share_files.partial.md similarity index 100% rename from docs/roles/researcher/snippets/05_share_files.partial.md rename to docs/source/roles/researcher/snippets/05_share_files.partial.md diff --git a/docs/roles/researcher/snippets/06_cocalc.partial.md b/docs/source/roles/researcher/snippets/06_cocalc.partial.md similarity index 100% rename from docs/roles/researcher/snippets/06_cocalc.partial.md rename to docs/source/roles/researcher/snippets/06_cocalc.partial.md diff --git a/docs/roles/researcher/snippets/07_gitlab.partial.md b/docs/source/roles/researcher/snippets/07_gitlab.partial.md similarity index 100% rename from docs/roles/researcher/snippets/07_gitlab.partial.md rename to docs/source/roles/researcher/snippets/07_gitlab.partial.md diff --git a/docs/roles/researcher/snippets/08_codimd.partial.md b/docs/source/roles/researcher/snippets/08_codimd.partial.md similarity index 100% rename from docs/roles/researcher/snippets/08_codimd.partial.md rename to docs/source/roles/researcher/snippets/08_codimd.partial.md diff --git a/docs/roles/researcher/snippets/10_databases.partial.md b/docs/source/roles/researcher/snippets/10_databases.partial.md similarity index 100% rename from docs/roles/researcher/snippets/10_databases.partial.md rename to docs/source/roles/researcher/snippets/10_databases.partial.md diff --git a/docs/roles/researcher/snippets/11_report_bugs.partial.md b/docs/source/roles/researcher/snippets/11_report_bugs.partial.md similarity index 100% rename from docs/roles/researcher/snippets/11_report_bugs.partial.md rename to docs/source/roles/researcher/snippets/11_report_bugs.partial.md diff --git a/docs/roles/researcher/snippets/12_end_matter.partial.md b/docs/source/roles/researcher/snippets/12_end_matter.partial.md similarity index 100% rename from docs/roles/researcher/snippets/12_end_matter.partial.md rename to docs/source/roles/researcher/snippets/12_end_matter.partial.md diff --git a/docs/roles/researcher/snippets/13_MFA.partial.md b/docs/source/roles/researcher/snippets/13_MFA.partial.md similarity index 100% rename from docs/roles/researcher/snippets/13_MFA.partial.md rename to docs/source/roles/researcher/snippets/13_MFA.partial.md diff --git a/docs/roles/researcher/snippets/software_database.partial.md b/docs/source/roles/researcher/snippets/software_database.partial.md similarity index 100% rename from docs/roles/researcher/snippets/software_database.partial.md rename to docs/source/roles/researcher/snippets/software_database.partial.md diff --git a/docs/roles/researcher/snippets/software_editors.partial.md b/docs/source/roles/researcher/snippets/software_editors.partial.md similarity index 100% rename from docs/roles/researcher/snippets/software_editors.partial.md rename to docs/source/roles/researcher/snippets/software_editors.partial.md diff --git a/docs/roles/researcher/snippets/software_languages.partial.md b/docs/source/roles/researcher/snippets/software_languages.partial.md similarity index 100% rename from docs/roles/researcher/snippets/software_languages.partial.md rename to docs/source/roles/researcher/snippets/software_languages.partial.md diff --git a/docs/roles/researcher/snippets/software_other.partial.md b/docs/source/roles/researcher/snippets/software_other.partial.md similarity index 100% rename from docs/roles/researcher/snippets/software_other.partial.md rename to docs/source/roles/researcher/snippets/software_other.partial.md diff --git a/docs/roles/researcher/snippets/software_presentation.partial.md b/docs/source/roles/researcher/snippets/software_presentation.partial.md similarity index 100% rename from docs/roles/researcher/snippets/software_presentation.partial.md rename to docs/source/roles/researcher/snippets/software_presentation.partial.md diff --git a/docs/roles/researcher/user_guide.md b/docs/source/roles/researcher/user_guide.md similarity index 100% rename from docs/roles/researcher/user_guide.md rename to docs/source/roles/researcher/user_guide.md diff --git a/docs/roles/researcher/user_guide/access_desktop_applications.png b/docs/source/roles/researcher/user_guide/access_desktop_applications.png similarity index 100% rename from docs/roles/researcher/user_guide/access_desktop_applications.png rename to docs/source/roles/researcher/user_guide/access_desktop_applications.png diff --git a/docs/roles/researcher/user_guide/account_setup_captcha.png b/docs/source/roles/researcher/user_guide/account_setup_captcha.png similarity index 100% rename from docs/roles/researcher/user_guide/account_setup_captcha.png rename to docs/source/roles/researcher/user_guide/account_setup_captcha.png diff --git a/docs/roles/researcher/user_guide/account_setup_forgotten_password.png b/docs/source/roles/researcher/user_guide/account_setup_forgotten_password.png similarity index 100% rename from docs/roles/researcher/user_guide/account_setup_forgotten_password.png rename to docs/source/roles/researcher/user_guide/account_setup_forgotten_password.png diff --git a/docs/roles/researcher/user_guide/account_setup_mfa_add_authenticator_app.png b/docs/source/roles/researcher/user_guide/account_setup_mfa_add_authenticator_app.png similarity index 100% rename from docs/roles/researcher/user_guide/account_setup_mfa_add_authenticator_app.png rename to docs/source/roles/researcher/user_guide/account_setup_mfa_add_authenticator_app.png diff --git a/docs/roles/researcher/user_guide/account_setup_mfa_additional_security_verification.png b/docs/source/roles/researcher/user_guide/account_setup_mfa_additional_security_verification.png similarity index 100% rename from docs/roles/researcher/user_guide/account_setup_mfa_additional_security_verification.png rename to docs/source/roles/researcher/user_guide/account_setup_mfa_additional_security_verification.png diff --git a/docs/roles/researcher/user_guide/account_setup_mfa_allow_notifications.png b/docs/source/roles/researcher/user_guide/account_setup_mfa_allow_notifications.png similarity index 100% rename from docs/roles/researcher/user_guide/account_setup_mfa_allow_notifications.png rename to docs/source/roles/researcher/user_guide/account_setup_mfa_allow_notifications.png diff --git a/docs/roles/researcher/user_guide/account_setup_mfa_app_qrcode.png b/docs/source/roles/researcher/user_guide/account_setup_mfa_app_qrcode.png similarity index 100% rename from docs/roles/researcher/user_guide/account_setup_mfa_app_qrcode.png rename to docs/source/roles/researcher/user_guide/account_setup_mfa_app_qrcode.png diff --git a/docs/roles/researcher/user_guide/account_setup_mfa_authenticator_app_approved.png b/docs/source/roles/researcher/user_guide/account_setup_mfa_authenticator_app_approved.png similarity index 100% rename from docs/roles/researcher/user_guide/account_setup_mfa_authenticator_app_approved.png rename to docs/source/roles/researcher/user_guide/account_setup_mfa_authenticator_app_approved.png diff --git a/docs/roles/researcher/user_guide/account_setup_mfa_authenticator_app_test.png b/docs/source/roles/researcher/user_guide/account_setup_mfa_authenticator_app_test.png similarity index 100% rename from docs/roles/researcher/user_guide/account_setup_mfa_authenticator_app_test.png rename to docs/source/roles/researcher/user_guide/account_setup_mfa_authenticator_app_test.png diff --git a/docs/roles/researcher/user_guide/account_setup_mfa_dashboard_phone_only.png b/docs/source/roles/researcher/user_guide/account_setup_mfa_dashboard_phone_only.png similarity index 100% rename from docs/roles/researcher/user_guide/account_setup_mfa_dashboard_phone_only.png rename to docs/source/roles/researcher/user_guide/account_setup_mfa_dashboard_phone_only.png diff --git a/docs/roles/researcher/user_guide/account_setup_mfa_dashboard_two_methods.png b/docs/source/roles/researcher/user_guide/account_setup_mfa_dashboard_two_methods.png similarity index 100% rename from docs/roles/researcher/user_guide/account_setup_mfa_dashboard_two_methods.png rename to docs/source/roles/researcher/user_guide/account_setup_mfa_dashboard_two_methods.png diff --git a/docs/roles/researcher/user_guide/account_setup_mfa_download_authenticator_app.png b/docs/source/roles/researcher/user_guide/account_setup_mfa_download_authenticator_app.png similarity index 100% rename from docs/roles/researcher/user_guide/account_setup_mfa_download_authenticator_app.png rename to docs/source/roles/researcher/user_guide/account_setup_mfa_download_authenticator_app.png diff --git a/docs/roles/researcher/user_guide/account_setup_mfa_registered_phone.png b/docs/source/roles/researcher/user_guide/account_setup_mfa_registered_phone.png similarity index 100% rename from docs/roles/researcher/user_guide/account_setup_mfa_registered_phone.png rename to docs/source/roles/researcher/user_guide/account_setup_mfa_registered_phone.png diff --git a/docs/roles/researcher/user_guide/account_setup_mfa_verified_phone.png b/docs/source/roles/researcher/user_guide/account_setup_mfa_verified_phone.png similarity index 100% rename from docs/roles/researcher/user_guide/account_setup_mfa_verified_phone.png rename to docs/source/roles/researcher/user_guide/account_setup_mfa_verified_phone.png diff --git a/docs/roles/researcher/user_guide/account_setup_mfa_verifying_phone.png b/docs/source/roles/researcher/user_guide/account_setup_mfa_verifying_phone.png similarity index 100% rename from docs/roles/researcher/user_guide/account_setup_mfa_verifying_phone.png rename to docs/source/roles/researcher/user_guide/account_setup_mfa_verifying_phone.png diff --git a/docs/roles/researcher/user_guide/account_setup_more_information_required.png b/docs/source/roles/researcher/user_guide/account_setup_more_information_required.png similarity index 100% rename from docs/roles/researcher/user_guide/account_setup_more_information_required.png rename to docs/source/roles/researcher/user_guide/account_setup_more_information_required.png diff --git a/docs/roles/researcher/user_guide/account_setup_new_password.png b/docs/source/roles/researcher/user_guide/account_setup_new_password.png similarity index 100% rename from docs/roles/researcher/user_guide/account_setup_new_password.png rename to docs/source/roles/researcher/user_guide/account_setup_new_password.png diff --git a/docs/roles/researcher/user_guide/account_setup_new_password_sign_in.png b/docs/source/roles/researcher/user_guide/account_setup_new_password_sign_in.png similarity index 100% rename from docs/roles/researcher/user_guide/account_setup_new_password_sign_in.png rename to docs/source/roles/researcher/user_guide/account_setup_new_password_sign_in.png diff --git a/docs/roles/researcher/user_guide/account_setup_verify_phone.png b/docs/source/roles/researcher/user_guide/account_setup_verify_phone.png similarity index 100% rename from docs/roles/researcher/user_guide/account_setup_verify_phone.png rename to docs/source/roles/researcher/user_guide/account_setup_verify_phone.png diff --git a/docs/roles/researcher/user_guide/cocalc_account_creation.png b/docs/source/roles/researcher/user_guide/cocalc_account_creation.png similarity index 100% rename from docs/roles/researcher/user_guide/cocalc_account_creation.png rename to docs/source/roles/researcher/user_guide/cocalc_account_creation.png diff --git a/docs/roles/researcher/user_guide/cocalc_homepage.png b/docs/source/roles/researcher/user_guide/cocalc_homepage.png similarity index 100% rename from docs/roles/researcher/user_guide/cocalc_homepage.png rename to docs/source/roles/researcher/user_guide/cocalc_homepage.png diff --git a/docs/roles/researcher/user_guide/cocalc_security_warning.png b/docs/source/roles/researcher/user_guide/cocalc_security_warning.png similarity index 100% rename from docs/roles/researcher/user_guide/cocalc_security_warning.png rename to docs/source/roles/researcher/user_guide/cocalc_security_warning.png diff --git a/docs/roles/researcher/user_guide/codimd_access_options.png b/docs/source/roles/researcher/user_guide/codimd_access_options.png similarity index 100% rename from docs/roles/researcher/user_guide/codimd_access_options.png rename to docs/source/roles/researcher/user_guide/codimd_access_options.png diff --git a/docs/roles/researcher/user_guide/codimd_logon.png b/docs/source/roles/researcher/user_guide/codimd_logon.png similarity index 100% rename from docs/roles/researcher/user_guide/codimd_logon.png rename to docs/source/roles/researcher/user_guide/codimd_logon.png diff --git a/docs/roles/researcher/user_guide/codimd_publishing.png b/docs/source/roles/researcher/user_guide/codimd_publishing.png similarity index 100% rename from docs/roles/researcher/user_guide/codimd_publishing.png rename to docs/source/roles/researcher/user_guide/codimd_publishing.png diff --git a/docs/roles/researcher/user_guide/db_azure_data_studio.png b/docs/source/roles/researcher/user_guide/db_azure_data_studio.png similarity index 100% rename from docs/roles/researcher/user_guide/db_azure_data_studio.png rename to docs/source/roles/researcher/user_guide/db_azure_data_studio.png diff --git a/docs/roles/researcher/user_guide/db_dbeaver_mssql.png b/docs/source/roles/researcher/user_guide/db_dbeaver_mssql.png similarity index 100% rename from docs/roles/researcher/user_guide/db_dbeaver_mssql.png rename to docs/source/roles/researcher/user_guide/db_dbeaver_mssql.png diff --git a/docs/roles/researcher/user_guide/db_dbeaver_postgres_connection.png b/docs/source/roles/researcher/user_guide/db_dbeaver_postgres_connection.png similarity index 100% rename from docs/roles/researcher/user_guide/db_dbeaver_postgres_connection.png rename to docs/source/roles/researcher/user_guide/db_dbeaver_postgres_connection.png diff --git a/docs/roles/researcher/user_guide/db_dbeaver_postgres_ignore.png b/docs/source/roles/researcher/user_guide/db_dbeaver_postgres_ignore.png similarity index 100% rename from docs/roles/researcher/user_guide/db_dbeaver_postgres_ignore.png rename to docs/source/roles/researcher/user_guide/db_dbeaver_postgres_ignore.png diff --git a/docs/roles/researcher/user_guide/gitlab_clone_url.png b/docs/source/roles/researcher/user_guide/gitlab_clone_url.png similarity index 100% rename from docs/roles/researcher/user_guide/gitlab_clone_url.png rename to docs/source/roles/researcher/user_guide/gitlab_clone_url.png diff --git a/docs/roles/researcher/user_guide/gitlab_merge_request_details.png b/docs/source/roles/researcher/user_guide/gitlab_merge_request_details.png similarity index 100% rename from docs/roles/researcher/user_guide/gitlab_merge_request_details.png rename to docs/source/roles/researcher/user_guide/gitlab_merge_request_details.png diff --git a/docs/roles/researcher/user_guide/gitlab_new_merge_request.png b/docs/source/roles/researcher/user_guide/gitlab_new_merge_request.png similarity index 100% rename from docs/roles/researcher/user_guide/gitlab_new_merge_request.png rename to docs/source/roles/researcher/user_guide/gitlab_new_merge_request.png diff --git a/docs/roles/researcher/user_guide/gitlab_screenshot_login.png b/docs/source/roles/researcher/user_guide/gitlab_screenshot_login.png similarity index 100% rename from docs/roles/researcher/user_guide/gitlab_screenshot_login.png rename to docs/source/roles/researcher/user_guide/gitlab_screenshot_login.png diff --git a/docs/roles/researcher/user_guide/guacamole_dashboard.png b/docs/source/roles/researcher/user_guide/guacamole_dashboard.png similarity index 100% rename from docs/roles/researcher/user_guide/guacamole_dashboard.png rename to docs/source/roles/researcher/user_guide/guacamole_dashboard.png diff --git a/docs/roles/researcher/user_guide/guacamole_mfa.png b/docs/source/roles/researcher/user_guide/guacamole_mfa.png similarity index 100% rename from docs/roles/researcher/user_guide/guacamole_mfa.png rename to docs/source/roles/researcher/user_guide/guacamole_mfa.png diff --git a/docs/roles/researcher/user_guide/logon_environment_guacamole.png b/docs/source/roles/researcher/user_guide/logon_environment_guacamole.png similarity index 100% rename from docs/roles/researcher/user_guide/logon_environment_guacamole.png rename to docs/source/roles/researcher/user_guide/logon_environment_guacamole.png diff --git a/docs/roles/researcher/user_guide/logon_environment_msrds.png b/docs/source/roles/researcher/user_guide/logon_environment_msrds.png similarity index 100% rename from docs/roles/researcher/user_guide/logon_environment_msrds.png rename to docs/source/roles/researcher/user_guide/logon_environment_msrds.png diff --git a/docs/roles/researcher/user_guide/msrds_dashboard.png b/docs/source/roles/researcher/user_guide/msrds_dashboard.png similarity index 100% rename from docs/roles/researcher/user_guide/msrds_dashboard.png rename to docs/source/roles/researcher/user_guide/msrds_dashboard.png diff --git a/docs/roles/researcher/user_guide/msrds_no_work_resources.png b/docs/source/roles/researcher/user_guide/msrds_no_work_resources.png similarity index 100% rename from docs/roles/researcher/user_guide/msrds_no_work_resources.png rename to docs/source/roles/researcher/user_guide/msrds_no_work_resources.png diff --git a/docs/roles/researcher/user_guide/msrds_srd_connection.png b/docs/source/roles/researcher/user_guide/msrds_srd_connection.png similarity index 100% rename from docs/roles/researcher/user_guide/msrds_srd_connection.png rename to docs/source/roles/researcher/user_guide/msrds_srd_connection.png diff --git a/docs/roles/researcher/user_guide/msrds_srd_connection_failure.png b/docs/source/roles/researcher/user_guide/msrds_srd_connection_failure.png similarity index 100% rename from docs/roles/researcher/user_guide/msrds_srd_connection_failure.png rename to docs/source/roles/researcher/user_guide/msrds_srd_connection_failure.png diff --git a/docs/roles/researcher/user_guide/msrds_srd_rdc_screen.png b/docs/source/roles/researcher/user_guide/msrds_srd_rdc_screen.png similarity index 100% rename from docs/roles/researcher/user_guide/msrds_srd_rdc_screen.png rename to docs/source/roles/researcher/user_guide/msrds_srd_rdc_screen.png diff --git a/docs/roles/researcher/user_guide/msrds_srd_security_fingerprint.png b/docs/source/roles/researcher/user_guide/msrds_srd_security_fingerprint.png similarity index 100% rename from docs/roles/researcher/user_guide/msrds_srd_security_fingerprint.png rename to docs/source/roles/researcher/user_guide/msrds_srd_security_fingerprint.png diff --git a/docs/roles/researcher/user_guide/msrds_unexpected_certificate_error.png b/docs/source/roles/researcher/user_guide/msrds_unexpected_certificate_error.png similarity index 100% rename from docs/roles/researcher/user_guide/msrds_unexpected_certificate_error.png rename to docs/source/roles/researcher/user_guide/msrds_unexpected_certificate_error.png diff --git a/docs/roles/researcher/user_guide/srd_login_failure.png b/docs/source/roles/researcher/user_guide/srd_login_failure.png similarity index 100% rename from docs/roles/researcher/user_guide/srd_login_failure.png rename to docs/source/roles/researcher/user_guide/srd_login_failure.png diff --git a/docs/roles/researcher/user_guide/srd_login_screen.png b/docs/source/roles/researcher/user_guide/srd_login_screen.png similarity index 100% rename from docs/roles/researcher/user_guide/srd_login_screen.png rename to docs/source/roles/researcher/user_guide/srd_login_screen.png diff --git a/docs/roles/researcher/user_guide/srd_xfce_initial.png b/docs/source/roles/researcher/user_guide/srd_xfce_initial.png similarity index 100% rename from docs/roles/researcher/user_guide/srd_xfce_initial.png rename to docs/source/roles/researcher/user_guide/srd_xfce_initial.png diff --git a/docs/roles/researcher/user_guide_guacamole.md b/docs/source/roles/researcher/user_guide_guacamole.md similarity index 100% rename from docs/roles/researcher/user_guide_guacamole.md rename to docs/source/roles/researcher/user_guide_guacamole.md diff --git a/docs/roles/researcher/user_guide_msrds.md b/docs/source/roles/researcher/user_guide_msrds.md similarity index 100% rename from docs/roles/researcher/user_guide_msrds.md rename to docs/source/roles/researcher/user_guide_msrds.md diff --git a/docs/roles/system_manager/administrator_guide/backup_instances_blobs.png b/docs/source/roles/system_manager/administrator_guide/backup_instances_blobs.png similarity index 100% rename from docs/roles/system_manager/administrator_guide/backup_instances_blobs.png rename to docs/source/roles/system_manager/administrator_guide/backup_instances_blobs.png diff --git a/docs/roles/system_manager/administrator_guide/backup_instances_disks.png b/docs/source/roles/system_manager/administrator_guide/backup_instances_disks.png similarity index 100% rename from docs/roles/system_manager/administrator_guide/backup_instances_disks.png rename to docs/source/roles/system_manager/administrator_guide/backup_instances_disks.png diff --git a/docs/roles/system_manager/administrator_guide/backup_progress_disk_1.png b/docs/source/roles/system_manager/administrator_guide/backup_progress_disk_1.png similarity index 100% rename from docs/roles/system_manager/administrator_guide/backup_progress_disk_1.png rename to docs/source/roles/system_manager/administrator_guide/backup_progress_disk_1.png diff --git a/docs/roles/system_manager/administrator_guide/backup_progress_disk_2.png b/docs/source/roles/system_manager/administrator_guide/backup_progress_disk_2.png similarity index 100% rename from docs/roles/system_manager/administrator_guide/backup_progress_disk_2.png rename to docs/source/roles/system_manager/administrator_guide/backup_progress_disk_2.png diff --git a/docs/roles/system_manager/administrator_guide/backup_progress_disk_3.png b/docs/source/roles/system_manager/administrator_guide/backup_progress_disk_3.png similarity index 100% rename from docs/roles/system_manager/administrator_guide/backup_progress_disk_3.png rename to docs/source/roles/system_manager/administrator_guide/backup_progress_disk_3.png diff --git a/docs/roles/system_manager/administrator_guide/backup_restore_disk.png b/docs/source/roles/system_manager/administrator_guide/backup_restore_disk.png similarity index 100% rename from docs/roles/system_manager/administrator_guide/backup_restore_disk.png rename to docs/source/roles/system_manager/administrator_guide/backup_restore_disk.png diff --git a/docs/roles/system_manager/administrator_guide/backup_select_containers_validate_blobs.png b/docs/source/roles/system_manager/administrator_guide/backup_select_containers_validate_blobs.png similarity index 100% rename from docs/roles/system_manager/administrator_guide/backup_select_containers_validate_blobs.png rename to docs/source/roles/system_manager/administrator_guide/backup_select_containers_validate_blobs.png diff --git a/docs/roles/system_manager/administrator_guide/backup_select_restore_time_blobs.png b/docs/source/roles/system_manager/administrator_guide/backup_select_restore_time_blobs.png similarity index 100% rename from docs/roles/system_manager/administrator_guide/backup_select_restore_time_blobs.png rename to docs/source/roles/system_manager/administrator_guide/backup_select_restore_time_blobs.png diff --git a/docs/roles/system_manager/administrator_guide/backup_select_snapshot_validate_disks.png b/docs/source/roles/system_manager/administrator_guide/backup_select_snapshot_validate_disks.png similarity index 100% rename from docs/roles/system_manager/administrator_guide/backup_select_snapshot_validate_disks.png rename to docs/source/roles/system_manager/administrator_guide/backup_select_snapshot_validate_disks.png diff --git a/docs/roles/system_manager/administrator_guide/backup_swap_disk_after.png b/docs/source/roles/system_manager/administrator_guide/backup_swap_disk_after.png similarity index 100% rename from docs/roles/system_manager/administrator_guide/backup_swap_disk_after.png rename to docs/source/roles/system_manager/administrator_guide/backup_swap_disk_after.png diff --git a/docs/roles/system_manager/administrator_guide/backup_swap_disk_before.png b/docs/source/roles/system_manager/administrator_guide/backup_swap_disk_before.png similarity index 100% rename from docs/roles/system_manager/administrator_guide/backup_swap_disk_before.png rename to docs/source/roles/system_manager/administrator_guide/backup_swap_disk_before.png diff --git a/docs/roles/system_manager/administrator_guide/connect_azure_storage.png b/docs/source/roles/system_manager/administrator_guide/connect_azure_storage.png similarity index 100% rename from docs/roles/system_manager/administrator_guide/connect_azure_storage.png rename to docs/source/roles/system_manager/administrator_guide/connect_azure_storage.png diff --git a/docs/roles/system_manager/administrator_guide/internal_mirror_packages.png b/docs/source/roles/system_manager/administrator_guide/internal_mirror_packages.png similarity index 100% rename from docs/roles/system_manager/administrator_guide/internal_mirror_packages.png rename to docs/source/roles/system_manager/administrator_guide/internal_mirror_packages.png diff --git a/docs/roles/system_manager/administrator_guide/login_certificate_expiry.png b/docs/source/roles/system_manager/administrator_guide/login_certificate_expiry.png similarity index 100% rename from docs/roles/system_manager/administrator_guide/login_certificate_expiry.png rename to docs/source/roles/system_manager/administrator_guide/login_certificate_expiry.png diff --git a/docs/roles/system_manager/administrator_guide/login_password_login.png b/docs/source/roles/system_manager/administrator_guide/login_password_login.png similarity index 100% rename from docs/roles/system_manager/administrator_guide/login_password_login.png rename to docs/source/roles/system_manager/administrator_guide/login_password_login.png diff --git a/docs/roles/system_manager/administrator_guide/no_recent_connections.png b/docs/source/roles/system_manager/administrator_guide/no_recent_connections.png similarity index 100% rename from docs/roles/system_manager/administrator_guide/no_recent_connections.png rename to docs/source/roles/system_manager/administrator_guide/no_recent_connections.png diff --git a/docs/roles/system_manager/administrator_guide/password_reset_failure.png b/docs/source/roles/system_manager/administrator_guide/password_reset_failure.png similarity index 100% rename from docs/roles/system_manager/administrator_guide/password_reset_failure.png rename to docs/source/roles/system_manager/administrator_guide/password_reset_failure.png diff --git a/docs/roles/system_manager/administrator_guide/read_only_sas_token.png b/docs/source/roles/system_manager/administrator_guide/read_only_sas_token.png similarity index 100% rename from docs/roles/system_manager/administrator_guide/read_only_sas_token.png rename to docs/source/roles/system_manager/administrator_guide/read_only_sas_token.png diff --git a/docs/roles/system_manager/administrator_guide/srd_login_failure.png b/docs/source/roles/system_manager/administrator_guide/srd_login_failure.png similarity index 100% rename from docs/roles/system_manager/administrator_guide/srd_login_failure.png rename to docs/source/roles/system_manager/administrator_guide/srd_login_failure.png diff --git a/docs/roles/system_manager/administrator_guide/srd_login_opening_port.png b/docs/source/roles/system_manager/administrator_guide/srd_login_opening_port.png similarity index 100% rename from docs/roles/system_manager/administrator_guide/srd_login_opening_port.png rename to docs/source/roles/system_manager/administrator_guide/srd_login_opening_port.png diff --git a/docs/roles/system_manager/administrator_guide/srd_login_prompt.png b/docs/source/roles/system_manager/administrator_guide/srd_login_prompt.png similarity index 100% rename from docs/roles/system_manager/administrator_guide/srd_login_prompt.png rename to docs/source/roles/system_manager/administrator_guide/srd_login_prompt.png diff --git a/docs/roles/system_manager/index.md b/docs/source/roles/system_manager/index.md similarity index 100% rename from docs/roles/system_manager/index.md rename to docs/source/roles/system_manager/index.md diff --git a/docs/roles/system_manager/manage_costs.md b/docs/source/roles/system_manager/manage_costs.md similarity index 100% rename from docs/roles/system_manager/manage_costs.md rename to docs/source/roles/system_manager/manage_costs.md diff --git a/docs/roles/system_manager/manage_data.md b/docs/source/roles/system_manager/manage_data.md similarity index 100% rename from docs/roles/system_manager/manage_data.md rename to docs/source/roles/system_manager/manage_data.md diff --git a/docs/roles/system_manager/manage_deployments.md b/docs/source/roles/system_manager/manage_deployments.md similarity index 100% rename from docs/roles/system_manager/manage_deployments.md rename to docs/source/roles/system_manager/manage_deployments.md diff --git a/docs/roles/system_manager/manage_users.md b/docs/source/roles/system_manager/manage_users.md similarity index 100% rename from docs/roles/system_manager/manage_users.md rename to docs/source/roles/system_manager/manage_users.md diff --git a/docs/roles/system_manager/manage_webapps.md b/docs/source/roles/system_manager/manage_webapps.md similarity index 100% rename from docs/roles/system_manager/manage_webapps.md rename to docs/source/roles/system_manager/manage_webapps.md diff --git a/docs/roles/system_manager/migrate_an_shm.md b/docs/source/roles/system_manager/migrate_an_shm.md similarity index 100% rename from docs/roles/system_manager/migrate_an_shm.md rename to docs/source/roles/system_manager/migrate_an_shm.md diff --git a/docs/roles/system_manager/migrate_shm/aad_connection_failure.png b/docs/source/roles/system_manager/migrate_shm/aad_connection_failure.png similarity index 100% rename from docs/roles/system_manager/migrate_shm/aad_connection_failure.png rename to docs/source/roles/system_manager/migrate_shm/aad_connection_failure.png diff --git a/docs/roles/system_manager/snippets/01_console.partial.md b/docs/source/roles/system_manager/snippets/01_console.partial.md similarity index 100% rename from docs/roles/system_manager/snippets/01_console.partial.md rename to docs/source/roles/system_manager/snippets/01_console.partial.md From b08992d583043fde65207a05b06db0d9c770fe3b Mon Sep 17 00:00:00 2001 From: Jim Madge Date: Thu, 27 Apr 2023 14:28:12 +0100 Subject: [PATCH 14/38] Clean Sphinx configuration --- docs/source/conf.py | 57 +++------------------------------------------ 1 file changed, 3 insertions(+), 54 deletions(-) diff --git a/docs/source/conf.py b/docs/source/conf.py index d1d891775a..3c3e11d22c 100644 --- a/docs/source/conf.py +++ b/docs/source/conf.py @@ -5,7 +5,6 @@ # https://www.sphinx-doc.org/en/master/usage/configuration.html import datetime import emoji -import git import os @@ -15,35 +14,10 @@ copyright = f"CC-BY-4.0 {datetime.date.today().year}, The Alan Turing Institute." author = "The Alan Turing Institute" development_branch = "develop" -earliest_supported_release = "v4.0.0" - - -# -- Git repository details -repo = git.Repo(search_parent_directories=True) -repo_name = repo.remotes.origin.url.split(".git")[0].split("/")[-1] -releases = sorted((t.name for t in repo.tags), reverse=True) -supported_versions = ( - releases[: releases.index(earliest_supported_release) + 1] - + [development_branch] -) -default_version = supported_versions[0] # Latest stable release -current_version = ( - [tag.name for tag in repo.tags if tag.commit == repo.head.commit] - + [branch.name for branch in repo.branches if branch.commit == repo.head.commit] - + [str(repo.head.commit)] -)[0] # Tag or branch name or commit ID if no name is available -current_commit_hash = repo.head.commit.hexsha -current_commit_date = repo.head.commit.authored_datetime.strftime(r"%d %b %Y") -del repo # all unpickleable objects must be deleted # -- Customisation ----------------------------------------------------------- -# Extracted repository variables -print(f"Supported versions: {supported_versions}") -print(f"Default version: {default_version}") -print(f"Current version: {current_version}") - # Construct list of emoji substitutions emoji_codes = set( [ @@ -59,25 +33,7 @@ # Set sidebar variables if "html_context" not in globals(): html_context = dict() -html_context["display_lower_left"] = True -html_context["default_version"] = default_version -html_context["current_version"] = current_version -html_context["versions"] = [ - (v, f"/{repo_name}/{v}/index.html") for v in supported_versions -] -# Downloadable PDFs -pdf_version_string = f"Version: {current_version} ({current_commit_hash})" -print(f"PDF version string: {pdf_version_string}") -html_context["downloads"] = [ - ( - "User guide (Apache Guacamole)", - f"/{repo_name}/{current_version}/pdf/data_safe_haven_user_guide_guacamole.pdf", - ), - ( - "User guide (Microsoft RDS)", - f"/{repo_name}/{current_version}/pdf/data_safe_haven_user_guide_msrds.pdf", - ), -] + # Add 'Edit on GitHub' link html_context["github_user"] = "alan-turing-institute" html_context["github_repo"] = "data-safe-haven" @@ -97,18 +53,11 @@ # Add any paths that contain templates here, relative to this directory. templates_path = ["_templates"] + # List of patterns, relative to source directory, that match files and # directories to ignore when looking for source files. # This pattern also affects html_static_path and html_extra_path. -exclude_patterns = [ - "build", - "_output", - "Thumbs.db", - ".DS_Store", - "**/*.partial.md", -] - - +exclude_patterns = ["**/*.partial.md"] # -- Options for HTML output ------------------------------------------------- # The theme to use for HTML and HTML Help pages. See the documentation for From 4ccb3f02aefcb603a102f3ba87bc90ea0d1afc41 Mon Sep 17 00:00:00 2001 From: Jim Madge Date: Thu, 27 Apr 2023 14:33:49 +0100 Subject: [PATCH 15/38] Update requirements --- docs/requirements.txt | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) diff --git a/docs/requirements.txt b/docs/requirements.txt index 6611eb4227..0aafa6408c 100644 --- a/docs/requirements.txt +++ b/docs/requirements.txt @@ -1,7 +1,4 @@ -emoji==2.2.0 -GitPython==3.1.30 -Jinja2==3.1.2 -myst-parser==0.18.1 -Pygments==2.14.0 -pydata-sphinx-theme==0.12.0 -Sphinx==5.3.0 +emoji~=2.2 +myst-parser~=1.0 +pydata-sphinx-theme~=0.13 +Sphinx~=6.2 From b0b8334ca75518540870a2204c95e2dc5ea751eb Mon Sep 17 00:00:00 2001 From: Jim Madge Date: Thu, 27 Apr 2023 14:43:24 +0100 Subject: [PATCH 16/38] Restore sidebar This seem to have broken after a theme update. --- docs/source/conf.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/source/conf.py b/docs/source/conf.py index 3c3e11d22c..8643655e65 100644 --- a/docs/source/conf.py +++ b/docs/source/conf.py @@ -78,7 +78,7 @@ "image_light": "logo_turing_light.png", "image_dark": "logo_turing_dark.png", }, - "page_sidebar_items": ["edit-this-page", "sourcelink"], + "secondary_sidebar_items": ["page-toc", "edit-this-page", "sourcelink"], "use_edit_page_button": True, } From 5a6aad19df15bb3babb2265b97b7fc2f0c00f47f Mon Sep 17 00:00:00 2001 From: Jim Madge Date: Thu, 27 Apr 2023 15:00:39 +0100 Subject: [PATCH 17/38] Use default primary sidebar This results in a very similar appearance with better readthedocs integration. --- .../sidebar-section-navigation.html | 5 -- docs/source/_templates/sidebar-versions.html | 58 ------------------- docs/source/_templates/sphinx-version.html | 5 -- docs/source/conf.py | 10 ---- 4 files changed, 78 deletions(-) delete mode 100644 docs/source/_templates/sidebar-section-navigation.html delete mode 100644 docs/source/_templates/sidebar-versions.html delete mode 100644 docs/source/_templates/sphinx-version.html diff --git a/docs/source/_templates/sidebar-section-navigation.html b/docs/source/_templates/sidebar-section-navigation.html deleted file mode 100644 index 4b9cee0c3b..0000000000 --- a/docs/source/_templates/sidebar-section-navigation.html +++ /dev/null @@ -1,5 +0,0 @@ - \ No newline at end of file diff --git a/docs/source/_templates/sidebar-versions.html b/docs/source/_templates/sidebar-versions.html deleted file mode 100644 index db2a496460..0000000000 --- a/docs/source/_templates/sidebar-versions.html +++ /dev/null @@ -1,58 +0,0 @@ -{% if READTHEDOCS or display_lower_left %} -
- - - Currently reading: {{ current_version }} - - -
- {% if languages|length >= 1 %} -
-
{{ _('Languages') }}
- {% for slug, url in languages %} - {% if slug == current_language %} {% endif %} -
{{ slug }}
- {% if slug == current_language %}
{% endif %} - {% endfor %} -
- {% endif %} - {% if versions|length >= 1 %} -
-
{{ _('Versions') }}
- {% for slug, url in versions %} - {% if slug == current_version %} {% endif %} -
{{ slug }}
- {% if slug == current_version %}
{% endif %} - {% endfor %} -
- {% endif %} - {% if READTHEDOCS %} -
-
{{ _('On Read the Docs') }}
-
- {{ _('Project Home') }} -
-
- {{ _('Builds') }} -
-
- {% endif %} -
-
- {% if downloads|length >= 1 %} -
- - - Download PDF resources - - -
-
- {% for type, url in downloads %} -
{{ type }}
- {% endfor %} -
-
-
- {% endif %} -{% endif %} \ No newline at end of file diff --git a/docs/source/_templates/sphinx-version.html b/docs/source/_templates/sphinx-version.html deleted file mode 100644 index c03f4af166..0000000000 --- a/docs/source/_templates/sphinx-version.html +++ /dev/null @@ -1,5 +0,0 @@ -

- {% trans sphinx_version=sphinx_version|e %}Created using Sphinx {{ sphinx_version }}.{% endtrans %} - {% trans %}Hosted by GitHub Pages.{% endtrans %} -
-

diff --git a/docs/source/conf.py b/docs/source/conf.py index 8643655e65..682faacaf7 100644 --- a/docs/source/conf.py +++ b/docs/source/conf.py @@ -82,16 +82,6 @@ "use_edit_page_button": True, } -# Set the left-hand sidebars -html_sidebars = { - "**": [ - "search-field.html", - "sidebar-section-navigation.html", - ] -} -if not os.getenv("DISABLE_VERSION_LINKS"): - html_sidebars["**"] += ["sidebar-versions.html"] - # Location of favicon html_favicon = "_static/favicon.ico" From 772d89dc1d3cfcd82e18c2c649a7c6e3ea9f3c58 Mon Sep 17 00:00:00 2001 From: Jim Madge Date: Thu, 27 Apr 2023 15:22:42 +0100 Subject: [PATCH 18/38] Remove unused import --- docs/source/conf.py | 1 - 1 file changed, 1 deletion(-) diff --git a/docs/source/conf.py b/docs/source/conf.py index 682faacaf7..ae41b78063 100644 --- a/docs/source/conf.py +++ b/docs/source/conf.py @@ -5,7 +5,6 @@ # https://www.sphinx-doc.org/en/master/usage/configuration.html import datetime import emoji -import os # -- Project information ----------------------------------------------------- From ca53abe97908b418bfe1dfe7174877d57ca18987 Mon Sep 17 00:00:00 2001 From: Jim Madge Date: Thu, 27 Apr 2023 16:18:55 +0100 Subject: [PATCH 19/38] Improve docs reproducibility with pip-compile --- .readthedocs.yaml | 2 +- docs/requirements.in | 4 ++ docs/requirements.txt | 91 +++++++++++++++++++++++++++++++++++++++++-- 3 files changed, 92 insertions(+), 5 deletions(-) create mode 100644 docs/requirements.in diff --git a/.readthedocs.yaml b/.readthedocs.yaml index f496f7b191..d169f2a365 100644 --- a/.readthedocs.yaml +++ b/.readthedocs.yaml @@ -7,7 +7,7 @@ version: 2 build: os: ubuntu-22.04 tools: - python: "3" + python: "3.11" sphinx: configuration: docs/source/conf.py diff --git a/docs/requirements.in b/docs/requirements.in new file mode 100644 index 0000000000..4a4c2761c8 --- /dev/null +++ b/docs/requirements.in @@ -0,0 +1,4 @@ +emoji==2.2.0 +myst-parser==1.0.0 +pydata-sphinx-theme==0.13.3 +Sphinx==6.2.1 diff --git a/docs/requirements.txt b/docs/requirements.txt index 0aafa6408c..6b5086a770 100644 --- a/docs/requirements.txt +++ b/docs/requirements.txt @@ -1,4 +1,87 @@ -emoji~=2.2 -myst-parser~=1.0 -pydata-sphinx-theme~=0.13 -Sphinx~=6.2 +# +# This file is autogenerated by pip-compile with Python 3.11 +# by the following command: +# +# pip-compile requirements.in +# +accessible-pygments==0.0.4 + # via pydata-sphinx-theme +alabaster==0.7.13 + # via sphinx +babel==2.12.1 + # via + # pydata-sphinx-theme + # sphinx +beautifulsoup4==4.12.2 + # via pydata-sphinx-theme +certifi==2022.12.7 + # via requests +charset-normalizer==3.1.0 + # via requests +docutils==0.19 + # via + # myst-parser + # pydata-sphinx-theme + # sphinx +emoji==2.2.0 + # via -r requirements.in +idna==3.4 + # via requests +imagesize==1.4.1 + # via sphinx +jinja2==3.1.2 + # via + # myst-parser + # sphinx +markdown-it-py==2.2.0 + # via + # mdit-py-plugins + # myst-parser +markupsafe==2.1.2 + # via jinja2 +mdit-py-plugins==0.3.5 + # via myst-parser +mdurl==0.1.2 + # via markdown-it-py +myst-parser==1.0.0 + # via -r requirements.in +packaging==23.1 + # via + # pydata-sphinx-theme + # sphinx +pydata-sphinx-theme==0.13.3 + # via -r requirements.in +pygments==2.15.1 + # via + # accessible-pygments + # pydata-sphinx-theme + # sphinx +pyyaml==6.0 + # via myst-parser +requests==2.29.0 + # via sphinx +snowballstemmer==2.2.0 + # via sphinx +soupsieve==2.4.1 + # via beautifulsoup4 +sphinx==6.2.1 + # via + # -r requirements.in + # myst-parser + # pydata-sphinx-theme +sphinxcontrib-applehelp==1.0.4 + # via sphinx +sphinxcontrib-devhelp==1.0.2 + # via sphinx +sphinxcontrib-htmlhelp==2.0.1 + # via sphinx +sphinxcontrib-jsmath==1.0.1 + # via sphinx +sphinxcontrib-qthelp==1.0.3 + # via sphinx +sphinxcontrib-serializinghtml==1.1.5 + # via sphinx +typing-extensions==4.5.0 + # via pydata-sphinx-theme +urllib3==1.26.15 + # via requests From 1394d7d7c5325bffc9e8d3920431bd488610f0d7 Mon Sep 17 00:00:00 2001 From: Jim Madge Date: Thu, 27 Apr 2023 16:25:56 +0100 Subject: [PATCH 20/38] Fix indentation --- .readthedocs.yaml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.readthedocs.yaml b/.readthedocs.yaml index d169f2a365..c45cfa7ae0 100644 --- a/.readthedocs.yaml +++ b/.readthedocs.yaml @@ -10,11 +10,11 @@ build: python: "3.11" sphinx: - configuration: docs/source/conf.py + configuration: docs/source/conf.py # formats: # - pdf python: - install: - - requirements: docs/requirements.txt + install: + - requirements: docs/requirements.txt From e78560a2d00b80e22a90825f1fccc548aa430b43 Mon Sep 17 00:00:00 2001 From: Jim Madge Date: Thu, 27 Apr 2023 16:29:19 +0100 Subject: [PATCH 21/38] Remove docs deployment workflow --- .github/workflows/build_docs.yaml | 77 ------------------------------- 1 file changed, 77 deletions(-) delete mode 100644 .github/workflows/build_docs.yaml diff --git a/.github/workflows/build_docs.yaml b/.github/workflows/build_docs.yaml deleted file mode 100644 index 7f6416933c..0000000000 --- a/.github/workflows/build_docs.yaml +++ /dev/null @@ -1,77 +0,0 @@ ---- -name: Build documentation - -# Run workflow on pushes to matching branches -on: # yamllint disable-line rule:truthy - push: - branches: [develop, latest] - -# checkout needs 'contents:read' -# deploy needs 'contents:write' -permissions: - contents: write - -jobs: - build_docs: - runs-on: ubuntu-latest - steps: - - name: Setup Python - uses: actions/setup-python@v4 - with: - python-version: '3.10' - - name: Setup Ruby - uses: ruby/setup-ruby@v1 - with: - ruby-version: 3.1.3 - - name: Checkout code - uses: actions/checkout@v2 - with: - fetch-depth: 0 - - name: Install required packages - run: | - sudo apt-get update - sudo apt-get install -y git - pip install -r docs/build/requirements.txt - - name: Create common directories - shell: bash - run: | - echo "OUTPUTDIR=$(mktemp -d)" >> $GITHUB_ENV - - name: Build all configured releases - shell: bash - run: | - python3 ./docs/build/build_all_supported_versions.py -o ${{env.OUTPUTDIR}} - - name: Install html-proofer - shell: bash - run: gem install html-proofer - - name: Run HTML proofer - shell: bash - run: | - # - allow links to "#" - # - rewrite the base URL - # - ignore links to: - # - the data-safe-haven repo (as it is private) - # - the data-classification-app repo (as it is private) - # - turing.ac.uk (as it requires a CAPTCHA) - htmlproofer ${{env.OUTPUTDIR}}/develop \ - --allow-hash-href \ - --enforce-https \ - --ignore-files "/_static/" \ - --ignore-status-codes "403,429,503" \ - --ignore-urls "/github.com\/alan-turing-institute\/data-classification-app/,/turing.ac.uk\//" \ - --swap-urls "^\/data-safe-haven:/.." - - - name: Deploy documentation to GitHub Pages - if: ${{ !env.ACT }} - uses: JamesIves/github-pages-deploy-action@ba1486788b0490a235422264426c45848eac35c6 # This commit corresponds to tag 4.4.1 - with: - branch: autodocs # The branch the action should deploy to. - folder: ${{env.OUTPUTDIR}} # The folder the action should deploy. - git-config-name: Deployment Bot # Name of the committer - git-config-email: deploy@github.com # Email of the committer - single-commit: true # Only keep one commit on the branch - - name: Finalise build if running locally - if: ${{ env.ACT }} - shell: bash - run: | - echo "Deliberately causing job to fail so that container is kept alive..." - exit 1 From af939752c5844383650518c3a8758543daf8a020 Mon Sep 17 00:00:00 2001 From: Jim Madge Date: Fri, 28 Apr 2023 15:36:43 +0100 Subject: [PATCH 22/38] Add documentation workflow This workflow has two jobs - Build documentation - Check links in built documentation The lint html job has been removed from the lint code workflow. html-proofer now only offer limited html linting and is mainly a link checker. --- .github/workflows/documentation.yaml | 56 ++++++++++++++++++++++++++++ .github/workflows/lint_code.yaml | 26 ------------- 2 files changed, 56 insertions(+), 26 deletions(-) create mode 100644 .github/workflows/documentation.yaml diff --git a/.github/workflows/documentation.yaml b/.github/workflows/documentation.yaml new file mode 100644 index 0000000000..8b6ce74f77 --- /dev/null +++ b/.github/workflows/documentation.yaml @@ -0,0 +1,56 @@ +--- +name: Documentation + +# Run workflow on pushes to matching branches +on: # yamllint disable-line rule:truthy + push: + branches: [develop] + pull_request: + branches: [develop] + +jobs: + build: + name: Build + runs-on: ubuntu-latest + defaults: + run: + working-directory: ./docs/ + steps: + - name: Checkout code + uses: actions/checkout@v3 + - name: Setup Python + uses: actions/setup-python@v4 + with: + python-version: 3.11 + - name: Install dependencies + run: | + pip install -r requirements.txt + - name: Sphinx build + run: | + make html + + check_links: + name: Check links + runs-on: ubuntu-latest + needs: build + defaults: + run: + working-directory: ./docs/ + steps: + - name: Checkout code + uses: actions/checkout@v3 + - name: Setup Python + uses: actions/setup-python@v4 + with: + python-version: 3.11 + - name: Install dependencies + run: | + pip install -r requirements.txt + - name: Sphinx build + run: | + make html + - name: Link Checker + uses: lycheeverse/lychee-action@v1.7.0 + with: + args: --verbose --no-progress './docs/build/html/**/*.html' + fail: true # fail on broken links diff --git a/.github/workflows/lint_code.yaml b/.github/workflows/lint_code.yaml index e553a543bb..6b5815f172 100644 --- a/.github/workflows/lint_code.yaml +++ b/.github/workflows/lint_code.yaml @@ -9,32 +9,6 @@ on: # yamllint disable-line rule:truthy branches: [develop] jobs: - lint_html: - runs-on: ubuntu-latest - steps: - - name: Checkout code - uses: actions/checkout@v3 - - name: Get tags - run: git fetch --tags origin - - name: Install requirements - shell: bash - run: | - sudo gem install html-proofer -v 4.4.1 - pip install -r docs/build/requirements.txt - - name: Generate HTML documention - shell: bash - run: | - DISABLE_VERSION_LINKS=1 make -C docs html - - name: Lint HTML - shell: bash - run: | - htmlproofer docs/_output \ - --allow-missing-href=true \ - --enforce-https=true \ - --ignore-files "/_static/" \ - --ignore-status-codes "502,503" \ - --ignore-urls "/github.com\/alan-turing-institute\/data-classification-app/,/www.turing.ac.uk/,/data-safe-haven\/edit/" - lint_json: runs-on: ubuntu-latest steps: From ee66f2f34779908d9bbf1ecbbe2cbd8530557016 Mon Sep 17 00:00:00 2001 From: Jim Madge Date: Fri, 28 Apr 2023 16:03:18 +0100 Subject: [PATCH 23/38] Add lychee configuration file --- .github/workflows/documentation.yaml | 2 +- .lychee.toml | 118 +++++++++++++++++++++++++++ 2 files changed, 119 insertions(+), 1 deletion(-) create mode 100644 .lychee.toml diff --git a/.github/workflows/documentation.yaml b/.github/workflows/documentation.yaml index 8b6ce74f77..3413fc8c2f 100644 --- a/.github/workflows/documentation.yaml +++ b/.github/workflows/documentation.yaml @@ -52,5 +52,5 @@ jobs: - name: Link Checker uses: lycheeverse/lychee-action@v1.7.0 with: - args: --verbose --no-progress './docs/build/html/**/*.html' + args: --config='./.lychee.toml' --verbose --no-progress './docs/build/html/**/*.html' fail: true # fail on broken links diff --git a/.lychee.toml b/.lychee.toml new file mode 100644 index 0000000000..9f7d9348a8 --- /dev/null +++ b/.lychee.toml @@ -0,0 +1,118 @@ +############################# Display ############################# + +# Verbose program output +# Accepts log level: "error", "warn", "info", "debug", "trace" +verbose = "info" + +# Don't show interactive progress bar while checking links. +no_progress = false + +# Path to summary output file. +# output = ".config.dummy.report.md" + +############################# Cache ############################### + +# Enable link caching. This can be helpful to avoid checking the same links on +# multiple runs. +cache = true + +# Discard all cached requests older than this duration. +max_cache_age = "2d" + +############################# Runtime ############################# + +# Number of threads to utilize. +# Defaults to number of cores available to the system if omitted. +threads = 2 + +# Maximum number of allowed redirects. +max_redirects = 10 + +# Maximum number of allowed retries before a link is declared dead. +max_retries = 2 + +# Maximum number of concurrent link checks. +max_concurrency = 14 + +############################# Requests ############################ + +# User agent to send with each request. +user_agent = "curl/7.83. 1" + +# Website timeout from connect to response finished. +timeout = 20 + +# Minimum wait time in seconds between retries of failed requests. +retry_wait_time = 2 + +# Comma-separated list of accepted status codes for valid links. +accept = [200, 429] + +# Proceed for server connections considered insecure (invalid TLS). +insecure = false + +# Only test links with the given schemes (e.g. https). +# Omit to check links with any scheme. +# scheme = [ "https" ] + +# When links are available using HTTPS, treat HTTP links as errors. +require_https = true + +# Request method +method = "get" + +# Custom request headers +headers = [] + +# Remap URI matching pattern to different URI. +# remap = [ "https://example.com http://example.invalid" ] + +# Base URL or website root directory to check relative URLs. +# base = "https://example.com" + +# HTTP basic auth support. This will be the username and password passed to the +# authorization HTTP header. See +# +# basic_auth = "user:pwd" + +############################# Exclusions ########################## + +# Skip missing input files (default is to error if they don't exist). +skip_missing = false + +# Check links inside `` and `
` blocks as well as Markdown code
+# blocks.
+include_verbatim = false
+
+# Ignore case of paths when matching glob patterns.
+glob_ignore_case = false
+
+# Exclude URLs and mail addresses from checking (supports regex).
+# exclude = [ '.*\.github.com\.*' ]
+exclude = [
+  'github\.com',  # Requires authentication
+  'turing.ac.uk'  # DDOS protection
+]
+
+# Exclude these filesystem paths from getting checked.
+# exclude_path = ["file/path/to/Ignore", "./other/file/path/to/Ignore"]
+
+# URLs to check (supports regex). Has preference over all excludes.
+# include = [ 'gist\.github\.com.*' ]
+
+# Exclude all private IPs from checking.
+# Equivalent to setting `exclude_private`, `exclude_link_local`, and
+# `exclude_loopback` to true.
+exclude_all_private = false
+
+# Exclude private IP address ranges from checking.
+exclude_private = false
+
+# Exclude link-local IP address range from checking.
+exclude_link_local = false
+
+# Exclude loopback IP address range and localhost from checking.
+exclude_loopback = false
+
+# Exclude all mail addresses from checking.
+exclude_mail = false

From be643937ab690f51fd03f9f07fa1c55790cc8d9c Mon Sep 17 00:00:00 2001
From: JimMadge 
Date: Mon, 1 May 2023 00:23:23 +0000
Subject: [PATCH 24/38] Update PyPI and CRAN allow lists

---
 .../package_lists/allowlist-full-python-pypi-tier3.list          | 1 +
 1 file changed, 1 insertion(+)

diff --git a/environment_configs/package_lists/allowlist-full-python-pypi-tier3.list b/environment_configs/package_lists/allowlist-full-python-pypi-tier3.list
index 8f609baa4c..c86157c4d3 100644
--- a/environment_configs/package_lists/allowlist-full-python-pypi-tier3.list
+++ b/environment_configs/package_lists/allowlist-full-python-pypi-tier3.list
@@ -63,6 +63,7 @@ better-exceptions-fork
 biscuits
 black
 bleach
+blinker
 blis
 blosc
 blosc2

From 32f89435869d9fab5bc13d5d5d7503adf1ac95f4 Mon Sep 17 00:00:00 2001
From: Jim Madge 
Date: Tue, 2 May 2023 11:06:44 +0100
Subject: [PATCH 25/38] Add ipaddressguide.com to lychee exclude list

---
 .lychee.toml | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

diff --git a/.lychee.toml b/.lychee.toml
index 9f7d9348a8..a9dd150318 100644
--- a/.lychee.toml
+++ b/.lychee.toml
@@ -90,8 +90,9 @@ glob_ignore_case = false
 # Exclude URLs and mail addresses from checking (supports regex).
 # exclude = [ '.*\.github.com\.*' ]
 exclude = [
-  'github\.com',  # Requires authentication
-  'turing.ac.uk'  # DDOS protection
+  'github\.com',  # Requires authentication (403)
+  'turing.ac.uk',  # DDOS protection
+  'ipaddressguide\.com' # 403
 ]
 
 # Exclude these filesystem paths from getting checked.

From f5e61fe29912656e6c07bf42a7c04bcb3d4fa118 Mon Sep 17 00:00:00 2001
From: Jim Madge 
Date: Tue, 2 May 2023 11:19:37 +0100
Subject: [PATCH 26/38] Exclude template file from link checking

---
 .lychee.toml | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/.lychee.toml b/.lychee.toml
index a9dd150318..28e129ae95 100644
--- a/.lychee.toml
+++ b/.lychee.toml
@@ -17,7 +17,7 @@ no_progress = false
 cache = true
 
 # Discard all cached requests older than this duration.
-max_cache_age = "2d"
+max_cache_age = "1d"
 
 #############################  Runtime  #############################
 
@@ -97,6 +97,9 @@ exclude = [
 
 # Exclude these filesystem paths from getting checked.
 # exclude_path = ["file/path/to/Ignore", "./other/file/path/to/Ignore"]
+exclude_path = [
+  'docs/build/html/_static/webpack-macros.html'
+]
 
 # URLs to check (supports regex). Has preference over all excludes.
 # include = [ 'gist\.github\.com.*' ]

From 9964d3b558000bc216ee035badc75f11c12b213f Mon Sep 17 00:00:00 2001
From: Jim Madge 
Date: Tue, 2 May 2023 11:20:22 +0100
Subject: [PATCH 27/38] Add lychee cache files to gitignore

---
 .gitignore | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/.gitignore b/.gitignore
index b42c59f1ca..d1e95b7d49 100644
--- a/.gitignore
+++ b/.gitignore
@@ -33,4 +33,7 @@ docs/_output
 
 # Files produced during testing
 .mustache_config.json
-expanded.yaml
\ No newline at end of file
+expanded.yaml
+
+# Lychee cache
+.lycheecache

From 6db5cfbf1ea266f202983326dc5e838b539333eb Mon Sep 17 00:00:00 2001
From: Jim Madge 
Date: Tue, 2 May 2023 11:26:30 +0100
Subject: [PATCH 28/38] Add opensource.org to lychee exclude list

Returns 403 in CI.
---
 .lychee.toml | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

diff --git a/.lychee.toml b/.lychee.toml
index 28e129ae95..73893f32fe 100644
--- a/.lychee.toml
+++ b/.lychee.toml
@@ -91,8 +91,9 @@ glob_ignore_case = false
 # exclude = [ '.*\.github.com\.*' ]
 exclude = [
   'github\.com',  # Requires authentication (403)
-  'turing.ac.uk',  # DDOS protection
-  'ipaddressguide\.com' # 403
+  'turing\.ac\.uk',  # DDOS protection
+  'ipaddressguide\.com', # 403
+  'opensource\.org' # 403
 ]
 
 # Exclude these filesystem paths from getting checked.

From 6558096b4ee142b4a910edf7abc7024347674884 Mon Sep 17 00:00:00 2001
From: Jim Madge 
Date: Wed, 3 May 2023 13:30:32 +0100
Subject: [PATCH 29/38] Remove unnecessary period

---
 docs/source/conf.py | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/docs/source/conf.py b/docs/source/conf.py
index ae41b78063..c5c104760e 100644
--- a/docs/source/conf.py
+++ b/docs/source/conf.py
@@ -10,7 +10,7 @@
 # -- Project information -----------------------------------------------------
 
 project = "Data Safe Haven"
-copyright = f"CC-BY-4.0 {datetime.date.today().year}, The Alan Turing Institute."
+copyright = f"CC-BY-4.0 {datetime.date.today().year}, The Alan Turing Institute"
 author = "The Alan Turing Institute"
 development_branch = "develop"
 

From c2c1d5e7363978f4d6683283c46d59b1280fff3d Mon Sep 17 00:00:00 2001
From: JimMadge 
Date: Sun, 7 May 2023 00:16:49 +0000
Subject: [PATCH 30/38] Update PyPI and CRAN allow lists

---
 .../package_lists/allowlist-full-python-pypi-tier3.list        | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/environment_configs/package_lists/allowlist-full-python-pypi-tier3.list b/environment_configs/package_lists/allowlist-full-python-pypi-tier3.list
index c86157c4d3..fb72abae2a 100644
--- a/environment_configs/package_lists/allowlist-full-python-pypi-tier3.list
+++ b/environment_configs/package_lists/allowlist-full-python-pypi-tier3.list
@@ -170,6 +170,7 @@ flatbuffers
 folium
 fonttools
 formulaic
+freetype-py
 frozenlist
 fsspec
 fst-pso
@@ -442,6 +443,7 @@ pyarrow
 pyasn1
 pyasn1-modules
 pybind11
+pycairo
 pycodestyle
 pycosat
 pycparser
@@ -524,6 +526,7 @@ rfc3339-validator
 rfc3986-validator
 rfc3987
 rich
+rlPyCairo
 rpds-py
 rpy2
 rsa

From c36f984cd4ec85f00bfba40b96193932dd71ab3d Mon Sep 17 00:00:00 2001
From: Jim Madge 
Date: Thu, 11 May 2023 13:52:03 +0100
Subject: [PATCH 31/38] Update CITATION.cff

---
 CITATION.cff | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/CITATION.cff b/CITATION.cff
index e3ee508a7f..e8ec7a6760 100644
--- a/CITATION.cff
+++ b/CITATION.cff
@@ -1,7 +1,7 @@
 cff-version: 1.2.0
 message: "To acknowledge the data safe haven please use the citation and references below."
 title: "Turing Data Safe Haven"
-url: "https://alan-turing-institute.github.io/data-safe-haven/develop/index.html"
+url: "https://data-safe-haven.readthedocs.io"
 repository-code: "https://github.com/alan-turing-institute/data-safe-haven"
 authors:
   - given-names: James

From 8b81d1a6e3232a9f0e71d4862fb321b6a6c14ea3 Mon Sep 17 00:00:00 2001
From: Jim Madge 
Date: Thu, 11 May 2023 13:59:53 +0100
Subject: [PATCH 32/38] Update documentation links in README

---
 README.md | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/README.md b/README.md
index 9090598d55..e97d4b4562 100644
--- a/README.md
+++ b/README.md
@@ -6,7 +6,7 @@ The **Turing Data Safe Haven** is an open-source framework for creating secure e
 It provides a set of scripts and templates that will allow you to deploy, administer and use your own secure environment.
 It was developed as part of the Alan Turing Institute's [Data Safe Havens in the Cloud](https://www.turing.ac.uk/research/research-projects/data-safe-havens-cloud) project.
 
-[![Docs](https://github.com/alan-turing-institute/data-safe-haven/actions/workflows/build_docs.yaml/badge.svg)](https://alan-turing-institute.github.io/data-safe-haven)
+[![Documentation](https://readthedocs.org/projects/data-safe-haven/badge/?version=latest)](https://data-safe-haven.readthedocs.io/en/latest/?badge=latest)
 [![Lint code](https://github.com/alan-turing-institute/data-safe-haven/actions/workflows/lint_code.yaml/badge.svg)](https://github.com/alan-turing-institute/data-safe-haven/actions/workflows/lint_code.yaml)
 [![Test code](https://github.com/alan-turing-institute/data-safe-haven/actions/workflows/test_code.yaml/badge.svg)](https://github.com/alan-turing-institute/data-safe-haven/actions/workflows/test_code.yaml)
 [![Latest version](https://img.shields.io/github/v/release/alan-turing-institute/data-safe-haven?style=flat&label=Latest&color=%234B78E6)](https://github.com/alan-turing-institute/data-safe-haven/releases)
@@ -16,7 +16,7 @@ It was developed as part of the Alan Turing Institute's [Data Safe Havens in the
 
 ## :family: Community & support
 
-- Visit the [Data Safe Haven website](https://alan-turing-institute.github.io/data-safe-haven) for full documentation and useful links.
+- Visit the [Data Safe Haven website](https://data-safe-haven.readthedocs.io) for full documentation and useful links.
 - Join our [Slack server](https://join.slack.com/t/turingdatasafehaven/shared_invite/zt-104oyd8wn-DyOufeaAQFiJDlG5dDGk~w) to ask questions, discuss features, and for general API chat.
 - Open a [discussion on GitHub](https://github.com/alan-turing-institute/data-safe-haven/discussions) for general questions, feature suggestions, and help with our deployment scripts.
 - Look through our [issues on GitHub](https://github.com/alan-turing-institute/data-safe-haven/issues) to see what we're working on and progress towards specific fixes.

From 75149a4bd1ac483c4aa7b380731b1064269a46f3 Mon Sep 17 00:00:00 2001
From: Jim Madge 
Date: Thu, 11 May 2023 14:05:44 +0100
Subject: [PATCH 33/38] Update documentation link in contribution guide

---
 CONTRIBUTING.md | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
index 28112cca0f..ac21b0ba8c 100644
--- a/CONTRIBUTING.md
+++ b/CONTRIBUTING.md
@@ -222,7 +222,7 @@ GitHub has a [nice introduction](https://docs.github.com/en/get-started/quicksta
 
 ### Making a change to the documentation
 
-The docs, including for older releases, are available [here](https://alan-turing-institute.github.io/data-safe-haven).
+The docs, including for older releases, are available [here](https://data-safe-haven.readthedocs.io).
 
 You should follow the same instructions as above to [make a change with a pull request](#making-a-change-with-a-pull-request) when editing the documentation.
 

From 029b6aba5df40a51229d6ecf6dafd17dc0165794 Mon Sep 17 00:00:00 2001
From: Jim Madge 
Date: Fri, 12 May 2023 10:08:17 +0100
Subject: [PATCH 34/38] Correct reference label

---
 docs/roles/investigator/data_ingress.md | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/docs/roles/investigator/data_ingress.md b/docs/roles/investigator/data_ingress.md
index d6786c3aa6..bff92040a4 100644
--- a/docs/roles/investigator/data_ingress.md
+++ b/docs/roles/investigator/data_ingress.md
@@ -1,4 +1,4 @@
-(role_investigator_egress)=
+(role_investigator_ingress)=
 
 # Data ingress process
 

From 3ee1b8488ca97fddf868932dd055bf0c7aef15ac Mon Sep 17 00:00:00 2001
From: Jim Madge 
Date: Fri, 12 May 2023 12:02:49 +0100
Subject: [PATCH 35/38] Add data preparation advice

---
 docs/processes/data_ingress.md | 71 ++++++++++++++++++++++++++++++++++
 1 file changed, 71 insertions(+)

diff --git a/docs/processes/data_ingress.md b/docs/processes/data_ingress.md
index 6136fff9e7..5576148af4 100644
--- a/docs/processes/data_ingress.md
+++ b/docs/processes/data_ingress.md
@@ -7,6 +7,77 @@
 The Data Safe Haven has various technical controls to ensure data security.
 However, the processes and contractual agreements that the **Dataset Provider** agrees to are equally important.
 
+## Preparing data
+
+This section has some recommendations for preparing input data for the Data Safe Haven.
+
+### Avoid archives
+
+The input data is presented to researchers on a read-only filesystem.
+This means that researchers will be unable to extract inputs in-place.
+Instead, they would have to extract to a read-write space within the environment.
+This could unnecessarily duplicate the data and leads to a greater risk of loss of integrity as the inputs can be modified (intentionally or accidentally).
+
+### Avoiding name clashes
+
+In the recommended upload process there is no protection for overwriting files.
+It is therefore important to avoid uploading files with the same pathname as the later files will replace existing files.
+
+To help avoid name clashes, if you are uploading multiple data sets you should use unique names for each data set.
+For example, if the data sets are single files, use unique file names.
+If data sets consist of multiple files, collect them in uniquely named directories.
+
+If there are multiple data providers uploading data for a single work package, each provider should use a uniquely named directory, or prepend their files with a unique name.
+
+### Describe the data
+
+Explaining the structure and format of the data will help researchers be most effective.
+It is a good idea to upload a plain text file explaining the directory structure, file format, data columns, meaning of special terms, _etc._.
+This file will be easy for researchers to read using tools inside the environment and they will be able to find it alongside the data.
+
+### Data integrity
+
+You will want to ensure that researchers have the correct data and that they can verify this.
+We recommend using [checksums](https://www.redhat.com/sysadmin/hashing-checksums) to do this.
+
+A checksum is a short string computed in a one-way process from some data.
+A small change in the data (even a single bit) will result in a different checksum.
+We can therefore use checksums to verify that data has not been changed.
+In the safe haven this is useful for verifying that the data inside the environment is complete and correct.
+It proves the data has not been modified or corrupted during transfer.
+
+We recommended considering the hashing algorithms `md5sum` and `sha256`.
+They are common algorithms built into many operating systems, and included in the Data Safe Haven.
+`md5sum` is fast and sufficient for integrity checks.
+`sha256` is slower but more secure, it better protects against malicious modification.
+
+You can generate a checksum file, which can be used to verify the integrity of files.
+If you upload this file then researchers will be able to independently verify data integrity within the environment.
+
+Here are instructions to generate a checksum file using the `md5sum` algorithm for a data set stored in a directory called `data`.
+
+```console
+$ find ./data/ -type fl -exec md5sum {} + > hashes.txt
+```
+`find` searches the `data` directory for files and symbolic links (`-type fl`).
+`find` also runs the checksum command `md5sum` on all matching files (`-exec md5sum {} +`).
+Finally, the checksums are written to a file called `hashes.txt` (`> hashes.txt`).
+
+The data can be checked, by comparing to the checksums.
+```console
+$ md5sum -c hashes.txt
+```
+
+If a file has changed the command will return a non-zero exit code (an error).
+The failing files will be listed as `: FAILED` in the output.
+Those files can be easily identified using `grep`
+
+```console
+$ md5sum -c hashes.txt | grep FAILED
+```
+
+To use the `sha256` algorithm, replace `md5sum` with `sha256` in the above commands.
+
 ## Bringing data into the environment
 
 ```{attention}

From 06f7d8dca6a2d2537479d937500f8f9c77d333a7 Mon Sep 17 00:00:00 2001
From: Jim Madge 
Date: Fri, 12 May 2023 13:17:24 +0100
Subject: [PATCH 36/38] Fix linting errors

---
 docs/processes/data_ingress.md | 8 +++++---
 1 file changed, 5 insertions(+), 3 deletions(-)

diff --git a/docs/processes/data_ingress.md b/docs/processes/data_ingress.md
index 5576148af4..171453b05b 100644
--- a/docs/processes/data_ingress.md
+++ b/docs/processes/data_ingress.md
@@ -57,15 +57,17 @@ If you upload this file then researchers will be able to independently verify da
 Here are instructions to generate a checksum file using the `md5sum` algorithm for a data set stored in a directory called `data`.
 
 ```console
-$ find ./data/ -type fl -exec md5sum {} + > hashes.txt
+find ./data/ -type fl -exec md5sum {} + > hashes.txt
 ```
+
 `find` searches the `data` directory for files and symbolic links (`-type fl`).
 `find` also runs the checksum command `md5sum` on all matching files (`-exec md5sum {} +`).
 Finally, the checksums are written to a file called `hashes.txt` (`> hashes.txt`).
 
 The data can be checked, by comparing to the checksums.
+
 ```console
-$ md5sum -c hashes.txt
+md5sum -c hashes.txt
 ```
 
 If a file has changed the command will return a non-zero exit code (an error).
@@ -73,7 +75,7 @@ The failing files will be listed as `: FAILED` in the output.
 Those files can be easily identified using `grep`
 
 ```console
-$ md5sum -c hashes.txt | grep FAILED
+md5sum -c hashes.txt | grep FAILED
 ```
 
 To use the `sha256` algorithm, replace `md5sum` with `sha256` in the above commands.

From dbc4a48c1c39f5a01ad9a6bbf81c52965c0b1e24 Mon Sep 17 00:00:00 2001
From: JimMadge 
Date: Mon, 15 May 2023 00:17:56 +0000
Subject: [PATCH 37/38] Update SRD package versions

---
 .../packages/deb-rstudio-bionic.version                       | 4 ++--
 .../packages/deb-rstudio-jammy.version                        | 4 ++--
 2 files changed, 4 insertions(+), 4 deletions(-)

diff --git a/deployment/secure_research_desktop/packages/deb-rstudio-bionic.version b/deployment/secure_research_desktop/packages/deb-rstudio-bionic.version
index 5ec0f6ad20..e31440658d 100644
--- a/deployment/secure_research_desktop/packages/deb-rstudio-bionic.version
+++ b/deployment/secure_research_desktop/packages/deb-rstudio-bionic.version
@@ -1,4 +1,4 @@
-hash: d71b670e3d0f5829d3cf107bba5d4da547ddcc010f62bccf758229891f1a16a4
-version: 2023.03.0-386
+hash: 2e8030828b93751ebc02fbbd6334d62600e7ab12c46d3f087a5222583e436238
+version: 2023.03.1-446
 debfile: rstudio-|VERSION|-amd64.deb
 remote: https://download1.rstudio.org/electron/bionic/amd64/|DEBFILE|
diff --git a/deployment/secure_research_desktop/packages/deb-rstudio-jammy.version b/deployment/secure_research_desktop/packages/deb-rstudio-jammy.version
index c6c7b44f24..ba8c54bc3b 100644
--- a/deployment/secure_research_desktop/packages/deb-rstudio-jammy.version
+++ b/deployment/secure_research_desktop/packages/deb-rstudio-jammy.version
@@ -1,4 +1,4 @@
-hash: 0a347709cd07eebd4ce0c635d87c87151e81254bbc390265a45a6c1ff438cb23
-version: 2023.03.0-386
+hash: 464038393a380321afb96793f8775852ce75f29340bd5d49a0c7ccbe77e411c0
+version: 2023.03.1-446
 debfile: rstudio-|VERSION|-amd64.deb
 remote: https://download1.rstudio.org/electron/jammy/amd64/|DEBFILE|

From 62a59c8b79aab8dd7217898d06ce252f9dad6dcd Mon Sep 17 00:00:00 2001
From: Jim Madge 
Date: Mon, 15 May 2023 09:17:48 +0100
Subject: [PATCH 38/38] Remove unused javascript file

---
 docs/source/_static/toggle.js | 7 -------
 1 file changed, 7 deletions(-)
 delete mode 100644 docs/source/_static/toggle.js

diff --git a/docs/source/_static/toggle.js b/docs/source/_static/toggle.js
deleted file mode 100644
index c5b6e4fcba..0000000000
--- a/docs/source/_static/toggle.js
+++ /dev/null
@@ -1,7 +0,0 @@
-// Toggle the 'shift-up' class when rst-versions objects are clicked
-$(document).on("click", "[data-toggle='rst-versions']", function () {
-  $("[data-toggle='rst-versions']").toggleClass("shift-up");
-});
-$(document).on("click", "[data-toggle='rst-downloads']", function () {
-  $("[data-toggle='rst-downloads']").toggleClass("shift-up");
-});