-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathmake-deploy.sh
More file actions
executable file
·99 lines (89 loc) · 2.44 KB
/
Copy pathmake-deploy.sh
File metadata and controls
executable file
·99 lines (89 loc) · 2.44 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
#!/bin/bash
#
# Generate a deploy.sh for SFTP-based deployment.
#
# Usage:
# ./make-deploy.sh
#
set -e
echo ""
echo " Generate deploy script"
echo " ──────────────────────"
echo ""
read -p " Site name (e.g. My Photography Site): " SITE_NAME
read -p " SFTP host: " SFTP_HOST
read -p " SFTP port [22]: " SFTP_PORT
SFTP_PORT=${SFTP_PORT:-22}
read -p " SFTP user: " SFTP_USER
read -p " SSH key path: " SSH_KEY
read -p " Remote webroot path: " REMOTE_PATH
read -p " Site URL (e.g. https://mysite.com): " SITE_URL
cat > deploy.sh << EOF
#!/bin/bash
# Deploy $SITE_NAME
# Usage: ./deploy.sh [--all]
set -euo pipefail
KEY="$SSH_KEY"
USER="$SFTP_USER"
HOST="$SFTP_HOST"
PORT="$SFTP_PORT"
REMOTE="$REMOTE_PATH"
LOCAL="\$(cd "\$(dirname "\$0")" && pwd)"
echo " Deploying $SITE_NAME..."
echo ""
ASKPASS=""
if grep -q '^ssh_pw=' "\$LOCAL/.env" 2>/dev/null; then
ASKPASS="\$(mktemp /tmp/seriously-siteground-askpass.XXXXXX)"
export SERIOUSLY_DEPLOY_LOCAL="\$LOCAL"
cat > "\$ASKPASS" <<'ASKPASS_EOF'
#!/bin/sh
awk -F= '/^ssh_pw=/{print substr(\$0, index(\$0, "=") + 1); exit}' "\$SERIOUSLY_DEPLOY_LOCAL/.env"
ASKPASS_EOF
chmod 700 "\$ASKPASS"
export SSH_ASKPASS="\$ASKPASS"
export SSH_ASKPASS_REQUIRE=force
export DISPLAY="\${DISPLAY:-:0}"
trap 'rm -f "\$ASKPASS"' EXIT
fi
if [ "\${1:-}" = "--all" ]; then
echo " Mode: full deploy (all files)"
sftp -o BatchMode=no -o PreferredAuthentications=publickey -o IdentitiesOnly=yes -P \$PORT -i "\$KEY" \${USER}@\${HOST} << SFTP
cd \$REMOTE
put \$LOCAL/.htaccess
put \$LOCAL/.env
put \$LOCAL/aggregated_feed.html
put \$LOCAL/admin.html
put \$LOCAL/api.php
put \$LOCAL/cron_refresh.php
put \$LOCAL/site_config.json
put \$LOCAL/team_feeds.json
put \$LOCAL/feed_data.json
chmod 666 site_config.json
chmod 666 team_feeds.json
chmod 666 feed_data.json
chmod 666 feed_etags.json
SFTP
else
echo " Mode: code deploy (HTML, PHP, config)"
sftp -o BatchMode=no -o PreferredAuthentications=publickey -o IdentitiesOnly=yes -P \$PORT -i "\$KEY" \${USER}@\${HOST} << SFTP
cd \$REMOTE
put \$LOCAL/.htaccess
put \$LOCAL/aggregated_feed.html
put \$LOCAL/admin.html
put \$LOCAL/api.php
put \$LOCAL/cron_refresh.php
put \$LOCAL/site_config.json
chmod 666 site_config.json
chmod 666 team_feeds.json
chmod 666 feed_data.json
chmod 666 feed_etags.json
SFTP
fi
echo ""
echo " Done → $SITE_URL"
EOF
chmod +x deploy.sh
echo ""
echo " ✓ deploy.sh created"
echo " Run: ./deploy.sh --all"
echo ""