publish-docs.sh 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. #!/bin/bash
  2. FROM=build/site
  3. HOST="$1"
  4. HOST_PATH="$2"
  5. SSH_PRIVATE_KEY="$3"
  6. SSH_KNOWN_HOST="$4"
  7. CLOUDFLARE_ZONE_ID="$5"
  8. CLOUDFLARE_CACHE_TOKEN="$6"
  9. SSH_PRIVATE_KEY_PATH="$HOME/.ssh/${GITHUB_REPOSITORY:-publish-docs}"
  10. if [ "$#" -ne 6 ]; then
  11. echo -e "not enough arguments USAGE:\n\n$0 \$HOST \$HOST_PATH \$SSH_PRIVATE_KEY \$SSH_KNOWN_HOST \$CLOUDFLARE_ZONE_ID \$CLOUDFLARE_CACHE_TOKEN\n\n" >&2
  12. exit 1
  13. fi
  14. (
  15. set -e
  16. set -f
  17. install -m 600 -D /dev/null "$SSH_PRIVATE_KEY_PATH"
  18. echo "$SSH_PRIVATE_KEY" > "$SSH_PRIVATE_KEY_PATH"
  19. echo "$SSH_KNOWN_HOST" > ~/.ssh/known_hosts
  20. RSYNC_OPTS='-avz --delete'
  21. if [ -f .full-build ]; then
  22. unlink .full-build
  23. BUILD_REFNAME=
  24. fi
  25. if [ -n "$BUILD_REFNAME" ]; then
  26. RSYNC_OPTS="-c $RSYNC_OPTS$(find $FROM -mindepth 1 -maxdepth 1 \! -name 404.html \! -name '.*' -type f -printf ' --include /%P')"
  27. RSYNC_OPTS="$RSYNC_OPTS$(find $FROM -mindepth 1 -maxdepth 1 -type d \! -name _ -printf ' --include /%P --include /%P/**') --exclude **"
  28. fi
  29. rsync $RSYNC_OPTS -e "ssh -i $SSH_PRIVATE_KEY_PATH" $FROM/ "$HOST:$HOST_PATH"
  30. if [ -z "$BUILD_REFNAME" ]; then
  31. curl -X POST "https://api.cloudflare.com/client/v4/zones/$CLOUDFLARE_ZONE_ID/purge_cache" \
  32. -H "Content-Type:application/json" -H "Authorization: Bearer $CLOUDFLARE_CACHE_TOKEN" \
  33. --data '{"files":["https://docs.spring.io/spring-security"]}'
  34. fi
  35. )
  36. exit_code=$?
  37. rm -f "$SSH_PRIVATE_KEY_PATH"
  38. exit $exit_code