Archive all 6 deployed changes following OpenSpec workflow: - add-minimal-hugo-site → hugo-site spec - add-multilingual-support → internationalization spec - migrate-site-content → content-migration + image-assets specs - add-custom-bootstrap-styling → styling spec - add-cv-page → content-management spec - simple-deployment → deployment spec All changes moved to archive/ with 2025-10-30 date prefix. Created 7 capability specs reflecting deployed functionality. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
89 lines
4.3 KiB
Markdown
89 lines
4.3 KiB
Markdown
# Tasks: simple-deployment
|
|
|
|
## Implementation Tasks
|
|
|
|
### 1. Create deployment script structure
|
|
- [x] Create `scripts/` directory in project root if it doesn't exist
|
|
- [x] Create `scripts/deploy.sh` with proper shebang and execution permissions
|
|
- [x] Add basic script structure with functions for connection, upload, and error handling
|
|
- **Validates**: Script file exists and is executable
|
|
|
|
### 2. Implement prerequisite checks
|
|
- [x] Check for existence and non-empty state of `public/` directory
|
|
- [x] Verify `rsync` is installed and available in PATH
|
|
- [x] Check that `SSH_USER` and `SSH_HOST` environment variables are set
|
|
- [x] Display clear error messages for any missing prerequisites
|
|
- **Validates**: Script exits early with helpful errors when prerequisites are missing
|
|
|
|
### 3. Implement SSH/rsync connection logic
|
|
- [x] Configure rsync to connect using SSH_USER and SSH_HOST
|
|
- [x] Support configurable SSH_PORT (defaults to 22)
|
|
- [x] Support configurable REMOTE_ROOT (defaults to /httpsdocs)
|
|
- [x] Use SSH key-based authentication for secure, password-less access
|
|
- **Validates**: Script can establish SSH connection with correct credentials
|
|
|
|
### 4. Implement file sync functionality
|
|
- [x] Use rsync command to sync `public/` contents to remote directory
|
|
- [x] Configure sync to preserve file permissions and timestamps (-a flag)
|
|
- [x] Enable compression during transfer (-z flag)
|
|
- [x] Implement mirror behavior with --delete flag (removes remote files not present locally)
|
|
- [x] Handle all file types appropriately
|
|
- **Validates**: All files from public/ are correctly synced to the remote directory and old files are removed
|
|
|
|
### 5. Add progress and status reporting
|
|
- [x] Display connection status messages
|
|
- [x] Show sync progress through rsync verbose output
|
|
- [x] Report sync completion with summary
|
|
- [x] Ensure SSH keys or passwords are never displayed in output
|
|
- **Validates**: User receives clear feedback during deployment process
|
|
|
|
### 6. Implement error handling
|
|
- [x] Catch connection failures with descriptive error messages
|
|
- [x] Handle partial upload failures gracefully
|
|
- [x] Provide actionable error messages for common failure scenarios
|
|
- [x] Set appropriate exit codes (0 for success, non-zero for failures)
|
|
- **Validates**: Script handles errors gracefully and provides useful feedback
|
|
|
|
### 7. Add script documentation
|
|
- [x] Add header comments explaining script purpose and usage
|
|
- [x] Document required environment variables (SSH_USER, SSH_HOST, SSH_PORT, REMOTE_ROOT)
|
|
- [x] Include example usage in comments
|
|
- [x] Add inline comments for rsync command options
|
|
- **Validates**: Script is self-documenting for future maintenance
|
|
|
|
### 8. Update project documentation
|
|
- [x] Add deployment section to README.md or create DEPLOYMENT.md
|
|
- [x] Document environment variable setup process
|
|
- [x] Provide example deployment workflow (build → deploy)
|
|
- [x] Include troubleshooting tips for common issues
|
|
- **Validates**: User documentation exists and covers deployment process
|
|
|
|
### 9. Test deployment script
|
|
- [x] Test with missing prerequisites (no public/, no rsync, no SSH_USER/SSH_HOST)
|
|
- [x] Test with SSH authentication issues
|
|
- [x] Test successful deployment with valid credentials and SSH keys
|
|
- [x] Verify synced files match local public/ directory
|
|
- [x] Verify remote files are deleted when removed locally (mirror behavior)
|
|
- **Validates**: Script behaves correctly in success and failure scenarios
|
|
|
|
### 10. Create .gitignore entry for environment files
|
|
- [x] Ensure .env files are ignored if user creates them locally
|
|
- [x] 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:
|
|
1. Test prerequisite checks by intentionally removing prerequisites
|
|
2. Test with invalid credentials to verify error handling
|
|
3. Test successful deployment to production server
|
|
4. Verify all files are present and correct on server after deployment
|
|
5. Test script output for clarity and absence of credential exposure
|