Fix deploy workflow silently dropping dotfiles like .htaccess - #18
Conversation
wlixcc/SFTP-Deploy-Action builds its upload command from an unquoted shell glob (path/*), which never matches files starting with a dot - so .htaccess was silently skipped on every deploy while everything else uploaded fine. Switch to wangyucode/sftp-upload-action, which walks the local directory tree directly (Python os.walk) instead of glob-matching, so dotfiles are included. Also hide its remote bookkeeping file (.sftp_upload_action_hashes) via .htaccess, same as the other repo-metadata files. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01CJGvJZXkV9CUHonq8wzEyt
|
Caution Review failedThe pull request is closed. ℹ️ Recent review info⚙️ Run configurationConfiguration used: Organization UI Review profile: CHILL Plan: Advanced Run ID: 📒 Files selected for processing (2)
📝 WalkthroughWalkthroughThe deployment workflow now uploads the repository root with ChangesDeployment flow
Estimated code review effort: 2 (Simple) | ~10 minutes Change: Bug fix Suggested reviewers: ✨ Finishing Touches🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
|
Bugbot couldn't run - usage limit reachedBugbot is counted against Cursor usage for this user or team, and this run hit a usage or spend limit. A user or team admin can review and increase usage limits in the Cursor dashboard. (requestId: serverGenReqId_1d1b5d40-a9fb-48ca-b56a-649196bfca3b) |



Summary
wlixcc/SFTP-Deploy-Action(used in the currentdeploy.yml) builds its final upload command from an unquoted shell glob (path/*). Bash/SFTP globbing with*never matches files starting with a dot, so.htaccesswas silently skipped on every deploy while every other file uploaded fine.wangyucode/sftp-upload-action(pinned by commit SHA), which enumerates the local directory with Python'sos.walkinstead of shell globbing, so dotfiles are included correctly. This also lets us drop the manualrsyncstaging step — file exclusion (.git,.github,README.md,AGENTS.md,renovate.json) is now handled by the action's ownexcludeinput..sftp_upload_action_hashes) on the server to skip re-uploading unchanged files on future runs. Added it to the existing.htaccessdeny rule alongside*.md/renovate.jsonso it isn't publicly servable.No changes to which secrets are used (
DEPLOY_HOST,DEPLOY_USERNAME,DEPLOY_PASSWORD,DEPLOY_PORT,DEPLOY_REMOTE_PATH).Test plan
main(or run the workflow manually) and confirm the deploy step completes without errorhttps://openrtmp.org/.htaccess-dependent behavior works (e.g. thewww→ apex redirect, custom error pages) confirming.htaccessactually landed on the server this timehttps://openrtmp.org/.sftp_upload_action_hashesis not publicly reachable🤖 Generated with Claude Code
https://claude.ai/code/session_01CJGvJZXkV9CUHonq8wzEyt
Generated by Claude Code
Summary by CodeRabbit
Security
Deployment