Create proposal for automated deployment script that uploads the Hugo site to www.markusgraf.ch via FTPS. Includes: - Deployment capability spec with 4 main requirements - Implementation tasks for scripts/deploy.sh - Secure credential management via environment variables 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
3.9 KiB
3.9 KiB
Tasks: add-ftps-deployment
Implementation Tasks
1. Create deployment script structure
- Create
scripts/directory in project root if it doesn't exist - Create
scripts/deploy.shwith proper shebang and execution permissions - Add basic script structure with functions for connection, upload, and error handling
- Validates: Script file exists and is executable
2. Implement prerequisite checks
- Check for existence and non-empty state of
public/directory - Verify
lftpis installed and available in PATH - Check that
FTPS_PASSWORDenvironment variable is set - Display clear error messages for any missing prerequisites
- Validates: Script exits early with helpful errors when prerequisites are missing
3. Implement FTPS connection logic
- Configure lftp connection to www.markusgraf.ch with username "gurix"
- Use
FTPS_PASSWORDenvironment variable for authentication - Set FTPS-specific lftp settings (SSL/TLS requirements)
- Implement connection timeout and retry logic
- Validates: Script can establish FTPS connection with correct credentials
4. Implement file upload functionality
- Use lftp mirror command to upload
public/contents tohttpsdocs/ - Configure upload to preserve file permissions and timestamps
- Enable parallel transfers for improved performance
- Handle special files (symlinks, hidden files) appropriately
- Validates: All files from public/ are correctly uploaded to httpsdocs/
5. Add progress and status reporting
- Display connection status messages
- Show upload progress (file counts, current file being uploaded)
- Report upload completion with summary statistics
- Ensure password is never displayed in output
- Validates: User receives clear feedback during deployment process
6. Implement error handling
- Catch connection failures with descriptive error messages
- Handle partial upload failures gracefully
- Provide actionable error messages for common failure scenarios
- Set appropriate exit codes (0 for success, non-zero for failures)
- Validates: Script handles errors gracefully and provides useful feedback
7. Add script documentation
- Add header comments explaining script purpose and usage
- Document required environment variables
- Include example usage in comments
- Add inline comments for complex lftp commands
- Validates: Script is self-documenting for future maintenance
8. Update project documentation
- Add deployment section to README.md or create DEPLOYMENT.md
- Document environment variable setup process
- Provide example deployment workflow (build → deploy)
- Include troubleshooting tips for common issues
- Validates: User documentation exists and covers deployment process
9. Test deployment script
- Test with missing prerequisites (no public/, no lftp, no password)
- Test with incorrect credentials
- Test successful deployment with valid credentials
- Verify uploaded files match local public/ directory
- Validates: Script behaves correctly in success and failure scenarios
10. Create .gitignore entry for environment files
- Ensure .env files are ignored if user creates them locally
- Verify credentials cannot be accidentally committed
- Validates: Git ignores any credential-containing files
Dependency Notes
- Tasks 1-2 must complete before task 3
- Tasks 3-4 must complete before task 5
- Task 6 can be implemented in parallel with tasks 3-5
- Tasks 7-8 can be done after core implementation (tasks 1-6)
- Task 9 requires all implementation tasks (1-6) to be complete
- Task 10 can be done at any time
Testing Strategy
Manual testing is sufficient for this change:
- Test prerequisite checks by intentionally removing prerequisites
- Test with invalid credentials to verify error handling
- Test successful deployment to production server
- Verify all files are present and correct on server after deployment
- Test script output for clarity and absence of credential exposure