@@ -85,6 +85,50 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
8585- ** PM2 cwd path in zero-downtime deploy** : Fixed working directory pointing to wrong path
8686- ** Hook scp failures visible** : Show scp copy failure output instead of silently continuing
8787
88+ #### GitHub Actions Generator
89+ - ** ` shipnode ci github ` ** : Scaffold a minimal GitHub Actions deployment workflow
90+ - Creates ` .github/workflows/deploy.yml ` with SSH-based deployment
91+ - Workflow installs dependencies, runs build, and executes ` shipnode deploy `
92+ - Documents required GitHub secrets (SSH_PRIVATE_KEY, SSH_HOST, SSH_USER, SSH_PORT)
93+ - ** ` shipnode ci env-sync ` ** : Sync ` shipnode.conf ` values to GitHub repository secrets
94+ - Automatically installs ` gh ` CLI if not present
95+ - Syncs SSH_HOST, SSH_USER, and SSH_PORT as individual secrets
96+ - ` --all ` flag additionally syncs ` .env ` file as base64-encoded secret
97+
98+ #### Security Hardening
99+ - ** ` shipnode harden ` ** : Interactive server security hardening command
100+ - ** SSH hardening** : Optionally change SSH port, disable password authentication, disable root login
101+ - ** Firewall setup** : Configure UFW to allow only SSH, HTTP, and HTTPS; deny all other inbound traffic
102+ - ** Fail2Ban** : Optionally install and configure fail2ban for brute-force protection
103+ - All changes are opt-in with clear prompts and summary before application
104+
105+ #### Doctor Security Audit
106+ - ** ` shipnode doctor --security ` ** : Non-destructive security posture audit
107+ - ** SSH configuration audit** : Checks root login status, password authentication, and SSH port
108+ - ** Firewall audit** : Verifies UFW status and allowed ports
109+ - ** Fail2Ban audit** : Checks installation and service status
110+ - ** File permissions** : Audits permissions for ` shipnode.conf ` and local ` .env ` files
111+ - Outputs actionable warnings with recommended commands for each issue
112+
113+ #### Config UX Improvements
114+ - ** ` --config <path> ` flag** : Support for custom configuration files across all commands
115+ - Default remains ` shipnode.conf ` in project root
116+ - Profile configs follow naming convention ` shipnode.<env>.conf ` (e.g., ` shipnode.staging.conf ` )
117+ - Enables multi-environment deployments without editing files
118+ - ** ` shipnode init --print ` ** : Emit configuration to stdout without writing a file
119+ - Useful for CI/CD pipelines and configuration validation
120+ - Shows exactly what would be generated with current settings
121+
122+ #### Deploy Dry Run
123+ - ** ` shipnode deploy --dry-run ` ** : Preview deployment steps without executing them
124+ - ** Configuration preview** : Shows resolved config values with secrets redacted
125+ - ** Build preview** : Displays local build commands to be executed (package manager, build command)
126+ - ** Deployment preview** : Lists remote commands, rsync targets, and excluded patterns
127+ - ** Zero-downtime flow** : Shows each step of the deployment flow with health check details
128+ - Supports both backend and frontend applications
129+ - Supports both zero-downtime and legacy deployment modes
130+ - Ideal for validating configuration before first deployment and CI/CD pipeline testing
131+
88132## [ 1.1.0] - 2026-01-24
89133
90134### Added
0 commit comments