Deploy the application to a target environment with pre/post checks.
- Determine the target environment from the argument (staging, production, preview).
- Run pre-deployment checks:
- All tests pass: run the test suite.
- No uncommitted changes:
git status --porcelain. - Branch is up to date:
git fetch && git status -uno. - Build succeeds: run the build command.
- No critical vulnerabilities: run dependency audit.
- Detect the deployment method:
- Vercel/Netlify:
vercel --prodornetlify deploy --prod. - Docker: Build image, push to registry, update deployment.
- Kubernetes: Apply manifests with
kubectl apply. - SSH: rsync build artifacts and restart service.
- GitHub Pages: Push to
gh-pagesbranch.
- Vercel/Netlify:
- Execute the deployment:
- Tag the deployment:
git tag deploy-<env>-<timestamp>. - Run the deployment command.
- Wait for health check confirmation.
- Tag the deployment:
- Run post-deployment verification:
- Hit the health endpoint and verify 200 response.
- Run smoke tests if available.
- Check error rates in monitoring if accessible.
- Report deployment status with rollback instructions.
Deployment: <environment>
Version: <git-sha-short>
Status: <success/failed>
Pre-checks:
- [x] Tests passing
- [x] Build successful
- [x] No uncommitted changes
Deployed at: <timestamp>
URL: <deployment-url>
Health: <healthy/unhealthy>
Rollback: <rollback-command>
- Never deploy to production from a non-default branch without explicit confirmation.
- Always run pre-deployment checks; abort on any failure.
- Create a deployment tag for every production deployment.
- Include rollback instructions in every deployment output.
- Verify the health endpoint responds within 60 seconds after deployment.