{"id":31692540,"url":"https://github.com/ix-erich/ix-cicd","last_synced_at":"2026-04-29T20:34:18.892Z","repository":{"id":315983844,"uuid":"1061372662","full_name":"IX-Erich/ix-cicd","owner":"IX-Erich","description":"Deploy any static site with feature branch previews in minutes. Complete CI/CD system with automated SSL, global CDN, and smart cleanup across AWS infrastructure.","archived":false,"fork":false,"pushed_at":"2025-09-21T19:33:24.000Z","size":46,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-09-22T02:43:28.605Z","etag":null,"topics":["aws","cdn","cicd","cloudfront","deployment","github-actions","s3","ssl","static-sites","terraform"],"latest_commit_sha":null,"homepage":null,"language":"Shell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/IX-Erich.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-09-21T19:21:52.000Z","updated_at":"2025-09-21T19:33:27.000Z","dependencies_parsed_at":"2025-09-22T02:43:30.532Z","dependency_job_id":"dee87bc0-a980-4fc1-87a6-da1f4b2993f2","html_url":"https://github.com/IX-Erich/ix-cicd","commit_stats":null,"previous_names":["ix-erich/ix-cicd"],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/IX-Erich/ix-cicd","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/IX-Erich%2Fix-cicd","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/IX-Erich%2Fix-cicd/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/IX-Erich%2Fix-cicd/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/IX-Erich%2Fix-cicd/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/IX-Erich","download_url":"https://codeload.github.com/IX-Erich/ix-cicd/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/IX-Erich%2Fix-cicd/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":278963840,"owners_count":26076543,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-10-08T02:00:06.501Z","response_time":56,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["aws","cdn","cicd","cloudfront","deployment","github-actions","s3","ssl","static-sites","terraform"],"created_at":"2025-10-08T14:53:42.680Z","updated_at":"2025-10-08T14:54:00.013Z","avatar_url":"https://github.com/IX-Erich.png","language":"Shell","funding_links":[],"categories":[],"sub_categories":[],"readme":"# IX Static Site CI/CD System\n\n**Deploy any static site with feature branch previews in minutes, not hours.**\n\nA comprehensive, production-ready CI/CD system for static sites that provides automated deployments, feature branch routing, SSL certificates, global CDN, and smart cleanup across AWS infrastructure.\n\n## 🚀 Quick Start\n\n### Option 1: One-Command Setup (Fastest)\n```bash\ncurl -fsSL https://raw.githubusercontent.com/IX-Erich/ix-cicd/main/cli/deploy-setup.sh | bash -s init \\\n  --project-name \"my-awesome-app\" \\\n  --domain-name \"myapp.example.com\"\n```\n\n### Option 2: GitHub Actions (Team-Friendly)\n```yaml\n- name: Deploy Static Site\n  uses: IX-Erich/ix-cicd/reusable-actions/static-site-deploy@main\n  with:\n    aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }}\n    aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}\n    s3-bucket: 'myproject.example.com'\n    cloudfront-distribution-id: ${{ secrets.CLOUDFRONT_DISTRIBUTION_ID }}\n    spa-mode: 'true'  # For React/Vue SPAs\n```\n\n### Option 3: Terraform Module (Infrastructure-as-Code)\n```hcl\nmodule \"my_static_site\" {\n  source = \"github.com/IX-Erich/ix-cicd//terraform/modules/static-site-hosting?ref=main\"\n\n  project_name = \"my-awesome-app\"\n  domain_name  = \"myapp.example.com\"\n  spa_mode     = true  # Enable for SPAs\n}\n```\n\n## ✨ What You Get\n\n- ✅ **Feature Branch Deployments** - Every branch gets its own URL (`/feature-name/`)\n- ✅ **Automated SSL/HTTPS** - Free SSL certificates via AWS ACM\n- ✅ **Global CDN** - Fast loading worldwide via CloudFront  \n- ✅ **SEO Protection** - Feature branches blocked from search engines\n- ✅ **Auto-cleanup** - Deployments removed when branches are deleted\n- ✅ **Multi-framework Support** - React, Vue, Jekyll, static HTML, Next.js\n- ✅ **Production Ready** - Security headers, performance optimization, cost controls\n\n## 🎯 Perfect For\n\n### Individual Developers\n- **Portfolio sites** with live feature previews\n- **Side projects** without server costs\n- **Client prototypes** with shareable URLs\n\n### Teams\n- **Design reviews** with live previews\n- **Stakeholder demos** without technical setup\n- **QA testing** in isolated environments\n\n### Companies\n- **Documentation sites** with versioning\n- **Marketing pages** with A/B testing\n- **Internal dashboards** and tools\n\n## 🏗️ System Architecture\n\n```\n┌─────────────────┐    ┌──────────────────┐    ┌─────────────────┐\n│   GitHub Repo   │    │   GitHub Actions │    │   AWS Services  │\n│                 │    │                  │    │                 │\n│ Push to main ───┼───►│ Build \u0026 Deploy ──┼───►│ S3 Bucket       │\n│                 │    │                  │    │ CloudFront CDN  │\n│ Push to feature/│    │ Feature Branch ──┼───►│ ACM Certificate │\n│ Push to hotfix/ │    │ Smart Router     │    │ Route53 DNS     │\n└─────────────────┘    └──────────────────┘    └─────────────────┘\n```\n\n**Results:**\n- `main` → `https://yoursite.com/`\n- `feature/new-ui` → `https://yoursite.com/feature-new-ui/`\n- `hotfix/urgent` → `https://yoursite.com/hotfix-urgent/`\n\n## 🎨 Framework Support\n\n| Framework | Build Dir | SPA Mode | Example |\n|-----------|-----------|----------|---------|\n| **React** | `build` | ✅ Yes | [examples/react-app/](examples/react-app/) |\n| **Vue.js** | `dist` | ✅ Yes | [examples/vue-app/](examples/vue-app/) |\n| **Next.js** | `out` | ✅ Yes | [examples/nextjs-export/](examples/nextjs-export/) |\n| **Jekyll** | `_site` | ❌ No | [examples/jekyll-blog/](examples/jekyll-blog/) |\n| **Static HTML** | `.` | ❌ No | [examples/static-html/](examples/static-html/) |\n\n## 📖 Documentation\n\n### 📋 **[Complete System Documentation](docs/REUSABLE-CICD-SYSTEM.md)**\nThe comprehensive guide covering all features, setup options, and advanced configurations.\n\n### 🛠️ **[Framework Examples](examples/README.md)**\nReal-world examples with step-by-step setup instructions for popular frameworks.\n\n### 🔧 **Component Documentation**\n- **[CLI Tool](cli/README.md)** - One-command project bootstrapping\n- **[GitHub Actions](reusable-actions/README.md)** - Reusable workflow components\n- **[Terraform Module](terraform/modules/static-site-hosting/README.md)** - Infrastructure as code\n\n## 🚀 Features Deep Dive\n\n### Feature Branch Routing\nEvery pushed branch gets its own deployment URL:\n- Smart CloudFront Function routing\n- SEO protection with `robots.txt` on preview branches\n- Automatic cleanup when branches are deleted\n- Support for SPA routing on all deployments\n\n### SSL \u0026 Security\n- **Automated SSL certificates** via AWS Certificate Manager\n- **Custom domains** with DNS validation\n- **Security headers**: HSTS, CSP, X-Frame-Options, etc.\n- **HTTPS redirects** for all traffic\n\n### Performance Optimization\n- **Global CDN** with edge locations worldwide\n- **Intelligent caching** with framework-specific rules\n- **Compression** for all text-based assets\n- **HTTP/2** and modern protocol support\n\n### Cost Management\n- **Optimized cache policies** to minimize origin requests\n- **Regional pricing tiers** to control CloudFront costs\n- **Lifecycle policies** for S3 storage optimization\n- **Resource tagging** for cost allocation\n\n## 📊 System Comparison\n\n| Approach | Setup Time | Flexibility | Maintenance | Best For |\n|----------|------------|-------------|-------------|----------|\n| **CLI Tool** | 1 minute | Medium | Low | Quick starts |\n| **GitHub Actions** | 5 minutes | High | Medium | Team consistency |\n| **Terraform** | 15 minutes | Very High | High | Infrastructure control |\n| **Manual Setup** | 30+ minutes | Maximum | High | Custom requirements |\n\n## 🔧 Advanced Usage\n\n### Multi-Environment Deployments\n```yaml\njobs:\n  deploy-staging:\n    if: github.ref == 'refs/heads/develop'\n    # Deploy to staging.myapp.com\n    \n  deploy-production:\n    if: github.ref == 'refs/heads/main'  \n    # Deploy to myapp.com\n```\n\n### Custom Cache Behaviors\n```hcl\nmodule \"my_static_site\" {\n  # Basic config...\n  \n  custom_cache_behaviors = [\n    {\n      path_pattern = \"/api/*\"\n      ttl_settings = { default_ttl = 0 }  # Don't cache APIs\n    },\n    {\n      path_pattern = \"*.js\"\n      ttl_settings = { default_ttl = 31536000 }  # Cache JS for 1 year\n    }\n  ]\n}\n```\n\n### Security Headers\n```hcl\nsecurity_headers = {\n  \"Strict-Transport-Security\" = \"max-age=63072000\"\n  \"Content-Security-Policy\"   = \"default-src 'self'\"\n  \"X-Frame-Options\"           = \"DENY\"\n}\n```\n\n## 🎯 Migration from Other Systems\n\n### From Netlify\n1. Copy your build settings to GitHub Actions workflow\n2. Update domain DNS to point to CloudFront\n3. Migrate environment variables to GitHub Secrets\n\n### From Vercel\n1. Export static build using `next export` or similar\n2. Configure build directory in deployment action\n3. Update DNS records\n\n### From AWS Amplify\n1. Keep existing S3 bucket or create new one\n2. Add CloudFront distribution for better caching\n3. Migrate build settings to GitHub Actions\n\n## 🤝 Contributing\n\nWe welcome contributions! Please see our [Contributing Guidelines](CONTRIBUTING.md) for details.\n\n### Development Setup\n1. Fork this repository\n2. Create a feature branch: `git checkout -b feature/my-improvement`\n3. Test your changes on a real project\n4. Submit a pull request with clear description\n\n### Reporting Issues\n- **Bug reports**: Include steps to reproduce, expected vs actual behavior\n- **Feature requests**: Describe the use case and proposed solution\n- **Questions**: Check existing documentation and examples first\n\n## 📈 Roadmap\n\n### Immediate (Next Release)\n- [ ] Vue.js complete example\n- [ ] Jekyll complete example  \n- [ ] GitHub CLI integration\n- [ ] Cost estimation calculator\n\n### Future Features\n- [ ] Multi-region deployments\n- [ ] Blue/green deployment support\n- [ ] Integration with monitoring tools\n- [ ] Custom domain automation\n- [ ] Backup and disaster recovery\n\n## 🔒 Security\n\n### Reporting Security Issues\nPlease report security vulnerabilities to security@imaginariax.com. Do not use public issue trackers for security reports.\n\n### Security Features\n- **IAM least privilege** - Minimal AWS permissions\n- **Encrypted in transit** - HTTPS everywhere\n- **Security headers** - Protection against common attacks\n- **Secret management** - Secure handling of credentials\n\n## 📄 License\n\nMIT License - see [LICENSE](LICENSE) file for details.\n\n## 🆘 Support\n\n### Getting Help\n1. **[📖 Read the documentation](docs/REUSABLE-CICD-SYSTEM.md)** - Comprehensive guides\n2. **[📋 Check examples](examples/)** - Framework-specific implementations\n3. **[🔍 Search issues](../../issues)** - Known problems and solutions\n4. **[➕ Create an issue](../../issues/new)** - For bugs or feature requests\n\n### Community\n- **Discord**: [Join our community](https://discord.gg/ix-cicd) for real-time help\n- **Twitter**: [@ix_cicd](https://twitter.com/ix_cicd) for updates and tips\n- **Blog**: [Technical deep-dives and tutorials](https://blog.imaginariax.com)\n\n---\n\n## 🎉 Ready to Deploy?\n\n**Choose your preferred approach and get started in minutes!**\n\n- 🚀 **[One-Command CLI Setup](cli/README.md)** - Fastest way to get started\n- 🔧 **[GitHub Actions Integration](reusable-actions/README.md)** - Team-friendly workflows  \n- 🏗️ **[Terraform Infrastructure](terraform/modules/static-site-hosting/README.md)** - Full control\n- 📚 **[Complete Documentation](docs/REUSABLE-CICD-SYSTEM.md)** - Everything you need to know\n\n**Deploy with confidence. Deploy with IX CI/CD.** ⚡\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fix-erich%2Fix-cicd","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fix-erich%2Fix-cicd","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fix-erich%2Fix-cicd/lists"}