diff --git a/.ci/deploy_conda.sh b/.ci/deploy_conda.sh
index 23ff5f31a582e4f3395d5d9c2b1da2b522861bfd..b48540c26408f42d916c642e8b9ebfbee9bab721 100644
--- a/.ci/deploy_conda.sh
+++ b/.ci/deploy_conda.sh
@@ -3,3 +3,4 @@
 set -e
 
 rsync -rv dist/conda-bld/ --exclude 'repodata*' --exclude "*json" "condadeploy:"
+ssh condaindex
diff --git a/.ci/setup_ssh.sh b/.ci/setup_ssh.sh
index 17795f309c334540bb3402c4839c4ff168179ca4..e42264cd3032439b52363e2448937c5e928240c4 100644
--- a/.ci/setup_ssh.sh
+++ b/.ci/setup_ssh.sh
@@ -33,6 +33,7 @@ if [[ -f /.dockerenv ]]; then
  if [[ "$CI_PROJECT_PATH" == "$UPSTREAM_PROJECT" ]]; then
    echo "$SSH_PRIVATE_KEY_DOC_DEPLOY"   > $HOME/.ssh/id_doc_deploy;
    echo "$SSH_PRIVATE_KEY_CONDA_DEPLOY" > $HOME/.ssh/id_conda_deploy;
+   echo "$SSH_PRIVATE_KEY_CONDA_INDEX"  > $HOME/.ssh/id_conda_index;
  fi;
 
  chmod go-rwx $HOME/.ssh/id_*;
@@ -63,6 +64,11 @@ if [[ -f /.dockerenv ]]; then
  echo "    User ${CONDA_HOST%@*}"                   >> $HOME/.ssh/config;
  echo "    IdentityFile $HOME/.ssh/id_conda_deploy" >> $HOME/.ssh/config;
 
+ echo "Host condaindex"                             >> $HOME/.ssh/config;
+ echo "    HostName ${CONDA_HOST##*@}"              >> $HOME/.ssh/config;
+ echo "    User ${CONDA_HOST%@*}"                   >> $HOME/.ssh/config;
+ echo "    IdentityFile $HOME/.ssh/id_conda_index"  >> $HOME/.ssh/config;
+
  echo "Host fsldownload"                            >> $HOME/.ssh/config;
  echo "    HostName ${FSL_HOST##*@}"                >> $HOME/.ssh/config;
  echo "    User ${FSL_HOST%@*}"                     >> $HOME/.ssh/config;
diff --git a/.ci/test_template.sh b/.ci/test_template.sh
index 1bce54487b1f4c86d304364804b325a7c25112e7..dd3e0022662614b764b5ac6331893f58c505c808 100644
--- a/.ci/test_template.sh
+++ b/.ci/test_template.sh
@@ -14,12 +14,12 @@ fi;
 
 source /test.venv/bin/activate
 
-pip install -r requirements.txt
-pip install -r requirements-extra.txt
-pip install -r requirements-dev.txt
+pip install --retries 10 -r requirements.txt
+pip install --retries 10 -r requirements-extra.txt
+pip install --retries 10 -r requirements-dev.txt
 
 # style stage
-if [ "$TEST_STYLE"x != "x" ]; then pip install pylint flake8; fi;
+if [ "$TEST_STYLE"x != "x" ]; then pip install --retries 10 pylint flake8; fi;
 if [ "$TEST_STYLE"x != "x" ]; then flake8                           fsl || true; fi;
 if [ "$TEST_STYLE"x != "x" ]; then pylint --output-format=colorized fsl || true; fi;
 if [ "$TEST_STYLE"x != "x" ]; then exit 0; fi
diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 55658f340fba9a83485e21016271729d914bd1bc..6633b990af644d063ef53048a67a1ea8ee70f6cc 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -67,6 +67,9 @@ stages:
 #   - SSH_PRIVATE_KEY_CONDA_DEPLOY   - private key for rsyncing conda builds
 #                                      to remote host (CONDA_HOST)
 #
+#   - SSH_PRIVATE_KEY_CONDA_INDEX    - private key for updating conda channel
+#                                      (on CONDA_HOST)
+#
 #   - SSH_SERVER_HOSTKEYS            - List of trusted SSH hosts
 #
 #   - DOC_HOST:                      - Username@host to upload documentation to