Back to Logbook
May 21, 2026 Project: #Portfolio

Deployment.

shipped

Today was about getting the platform to production cleanly. Most of it was CI/CD plumbing.

Replaced the appleboy/ssh-action step with a native SSH heredoc — fewer moving parts, easier to debug when the deploy fails. Worked through a chain of fixes: the deploy path needed to be ~/marufsheikh, then $HOME/marufsheikh because the absolute path was wrong, then realised the deploy path was being interpolated through script instead of envs (YAML structure was wrong). Added script_stop and pwd to surface failures earlier.

Then git fetch was not updating origin/master tracking ref — the deploy would silently use a stale commit. Switched from git pull to git fetch + git reset --hard. Added git clean after the reset to drop any leftover files. Logged the deployed commit so I can see exactly what is live.

Two product changes today: contact page info is now dynamic (admin can edit address, hours, phone from settings) and a small SQLite fix — dropColumn is skipped in migration down() on SQLite3 because SQLite cannot drop columns in older versions.

Lessons Learned

A silent deploy is worse than a loud failure. Always log the deployed commit.