diff --git a/.circleci/config.yml b/.circleci/config.yml
index d1b365ede870336e23a1ae68dd031b1c0110631d..3ca85be46de941ee31c3a21259e512a9220e020e 100644
--- a/.circleci/config.yml
+++ b/.circleci/config.yml
@@ -442,6 +442,7 @@ jobs:
     executor: docs_exec
     steps:
       - install_doc_dependencies
+      - *on_checkout
       - *install_deployment_key
       - attach_workspace:
           at: src/navigation2
diff --git a/sphinx_doc/Makefile b/sphinx_doc/Makefile
index 168db7c5fa89eb5af8ed13b4bf790dbc8d50bc0b..b0c0f239375c3719b1d59db495626a0263d1aa0a 100644
--- a/sphinx_doc/Makefile
+++ b/sphinx_doc/Makefile
@@ -44,7 +44,7 @@ clean:
 # along with a README
 
 publish:
-	cd /tmp && git clone git@github.com:ros-planning/navigation2.git # ends up in $(PUBLISHDIR)
+	git clone --reference .. git@github.com:ros-planning/navigation2.git $(PUBLISHDIR)
 	cd $(PUBLISHDIR) && \
 	git checkout gh-pages && \
 	git config user.email "navigation2-ci@circleci.com" && \
@@ -52,7 +52,7 @@ publish:
 	rm -fr $(PUBLISHDIR)/*
 	cp -r $(BUILDDIR)/html/* $(PUBLISHDIR)
 	cp scripts/.nojekyll $(PUBLISHDIR)/.nojekyll
-	cd $(PUBLISHDIR) && git add -A && git commit -s -m "publish $(RELEASE)" && git push origin
+	cd $(PUBLISHDIR) && git add -A && git commit -s -m "[skip ci] publish $(RELEASE)" && git push origin
 
 
 # Catch-all target: route all unknown targets to Sphinx using the new