@@ -169,12 +169,12 @@ jobs:
169169 run : |
170170 echo "📂 Syncing changes only (no container rebuild)..."
171171
172- cat <<EOF > sync_changes.sh
172+ cat <<' EOF' > sync_changes.sh
173173 #!/bin/bash
174174 set -e
175175
176176 echo "🔧 Fixing file permissions for git operations..."
177- echo '$SSH_PASS' | sudo -S chown -R \ $(whoami):\ $(whoami) ${{ secrets.AIRFLOW_PATH }}
177+ cat /tmp/.ssh_pass | sudo -S chown -R $(whoami):$(whoami) ${{ secrets.AIRFLOW_PATH }}
178178
179179 echo "📂 Navigating to project..."
180180 cd ${{ secrets.AIRFLOW_PATH }}
@@ -189,7 +189,7 @@ jobs:
189189 echo "⬆️ Checking for RPi changes..."
190190 git add .
191191
192- if [ -n "\ $(git status --porcelain)" ]; then
192+ if [ -n "$(git status --porcelain)" ]; then
193193 echo "📝 Local changes detected. Stashing and pulling..."
194194 git stash
195195 git pull origin main
@@ -204,18 +204,21 @@ jobs:
204204 fi
205205
206206 echo "🔒 Resetting permissions for Airflow (keeping .git accessible)..."
207- echo '$SSH_PASS' | sudo -S chown -R 50000:50000 ${{ secrets.AIRFLOW_PATH }}
208- echo '$SSH_PASS' | sudo -S chown -R \ $(whoami):\ $(whoami) ${{ secrets.AIRFLOW_PATH }}/.git
207+ cat /tmp/.ssh_pass | sudo -S chown -R 50000:50000 ${{ secrets.AIRFLOW_PATH }}
208+ cat /tmp/.ssh_pass | sudo -S chown -R $(whoami):$(whoami) ${{ secrets.AIRFLOW_PATH }}/.git
209209
210210 echo "⚙️ Restarting containers..."
211211 docker compose restart
212212
213213 echo "✅ Changes synced! Airflow will pick them up automatically."
214- rm -f /tmp/sync_changes.sh
214+ rm -f /tmp/sync_changes.sh /tmp/.ssh_pass
215215 EOF
216216
217217 echo "📤 Uploading sync script..."
218- sshpass -p "$SSH_PASS" scp sync_changes.sh ssh.mj-dev.net:/tmp/
218+ # Upload password to temp file for sudo operations
219+ echo "$SSH_PASS" > .ssh_pass
220+ sshpass -p "$SSH_PASS" scp sync_changes.sh .ssh_pass ssh.mj-dev.net:/tmp/
221+ rm -f .ssh_pass
219222
220223 echo "🚀 Executing sync..."
221224 sshpass -p "$SSH_PASS" ssh ssh.mj-dev.net "bash /tmp/sync_changes.sh"
@@ -289,12 +292,12 @@ jobs:
289292 grep -E "ERROR|WARNING|Building|Built|Created|Started|^$" || true
290293
291294 echo "🔒 Resetting permissions for Airflow (keeping .git accessible)..."
292- echo '$SSH_PASS' | sudo -S chown -R 50000:50000 ${{ secrets.AIRFLOW_PATH }}
293- echo '$SSH_PASS' | sudo -S chown -R $(whoami):$(whoami) ${{ secrets.AIRFLOW_PATH }}/.git
295+ cat /tmp/.ssh_pass | sudo -S chown -R 50000:50000 ${{ secrets.AIRFLOW_PATH }}
296+ cat /tmp/.ssh_pass | sudo -S chown -R $(whoami):$(whoami) ${{ secrets.AIRFLOW_PATH }}/.git
294297
295298 echo "🧹 Cleaning up..."
296299 docker image prune -f > /dev/null 2>&1
297- rm -f /tmp/deploy_script.sh
300+ rm -f /tmp/deploy_script.sh /tmp/.ssh_pass
298301
299302 echo "✅ Full Deployment Successfully Completed!"
300303 EOF
@@ -307,7 +310,10 @@ jobs:
307310 sshpass -p "$SSH_PASS" ssh ssh.mj-dev.net "echo '$SSH_PASS' | sudo -S chown -R \$(whoami):\$(whoami) ${{ secrets.AIRFLOW_PATH }}"
308311
309312 echo "📤 Uploading files to Raspberry Pi..."
310- sshpass -p "$SSH_PASS" scp .env deploy_script.sh ssh.mj-dev.net:/tmp/
313+ # Upload password to temp file for sudo operations
314+ echo "$SSH_PASS" > .ssh_pass
315+ sshpass -p "$SSH_PASS" scp .env deploy_script.sh .ssh_pass ssh.mj-dev.net:/tmp/
316+ rm -f .ssh_pass
311317
312318 echo "🚀 Executing full deployment..."
313319 sshpass -p "$SSH_PASS" ssh ssh.mj-dev.net "bash /tmp/deploy_script.sh"
0 commit comments