hunjanhar/code-byte

GitHub: hunjanhar/code-byte

Code-Byte 是一个基于 PHP 的开发者社区论坛平台,集成了从 Terraform 基础设施配置到 Jenkins CI/CD 再到 ArgoCD GitOps 部署的完整生产级 DevOps 工具链。

Stars: 0 | Forks: 0

# Code-Byte 一个基于 PHP 的开发者社区平台,用于分享代码主题、评论和基于类别的讨论 —— 使用 Docker 容器化,并通过完整的 GitOps CI/CD pipeline 部署在 ec2 上的 minikube 中。 ![架构布局](https://static.pigsec.cn/wp-content/uploads/repos/cas/1c/1ccd57ddc221a2f40e224fee206170da332caa42849051e1d5fb81bfd1b2e6e6.png) ## 概述 Code-Byte 是一个使用 PHP 8.2 构建的社区驱动的开发者论坛。它允许用户注册、发布主题、发表评论、搜索话题以及按类别浏览内容。该项目旨在作为生产级 DevOps 的展示案例 —— 从使用 Terraform 进行基础设施配置,到通过 ArgoCD 进行 GitOps 驱动的部署。 ![应用布局](https://static.pigsec.cn/wp-content/uploads/repos/cas/9f/9fcf7608a6f105302a7b40f201c0b0b102cb4bccb64d2bbdbb4214fe2c4d7d31.png) ![应用布局](https://static.pigsec.cn/wp-content/uploads/repos/cas/13/1307ac8ac08df087e62c7f08eb3adab61695c8f3ff082a6c51f8930f475aaf27.png) ![应用布局](https://static.pigsec.cn/wp-content/uploads/repos/cas/25/253f6fa2d57647734c54e4584ed1397e09df438bbeb3a7ed5687962a50057e6a.png) ![应用布局](https://static.pigsec.cn/wp-content/uploads/repos/cas/65/652f25135773b84cdc6bba9dee567f23685b27d35b31c0cba4df226e4ba01fb9.png) ## 项目结构 ``` code-byte/ ├── .jenkins/ │ ├── Jenkinsfile.ci # CI pipeline: build, scan, push image │ └── Jenkinsfile.cd # CD pipeline: deploy to EKS via ArgoCD ├── argocd-config/ │ ├── argocd.yml # ArgoCD Application manifest │ └── argocd-monitor.yml # ArgoCD monitoring app ├── k8s │ └── prod-deployment/ # Production manifests (GitOps source of truth) ├── terraform/ │ ├── provider.tf # AWS provider (ap-south-1) │ ├── vpc.tf # VPC, subnets, IGW, route tables │ ├── main.tf # EC2 instance + Security Groups │ ├── rds.tf # RDS MySQL instance │ ├── resources.tf # Ansible inventory + null_resource trigger │ ├── output.tf # Outputs: EC2 IP, RDS host/user/password │ └── playbooks/ # Ansible roles for server configuration ├── remote-infa/ │ ├── s3.tf # S3 bucket for Terraform remote state │ └── dynamdb.tf # DynamoDB table for state locking ├── vars/ │ ├── checkCode.groovy # Shared library: Git checkout helper │ ├── securityScanners.groovy # Shared library: Trivy + Gitleaks │ └── dastScan.groovy # Shared library: OWASP ZAP DAST scan ├── controller/ # PHP controllers (login, signin, comments…) ├── middleware/ # PHP session verification middleware ├── components/ # Reusable PHP view components (header, footer) ├── static/ # CSS, JS, images (Bootstrap, jQuery) ├── database/ │ └── database.php # PDO MySQL connection helper ├── codebyte.sql # Database schema + seed data ├── Dockerfile # Multi-stage PHP 8.2-alpine image └── docker-compose.yml # Local dev stack (app + MySQL + Redis) ``` ## CI/CD Pipeline ### 持续集成 (`Jenkinsfile.ci`) 在每次推送到 `main` 分支时触发。 ``` Validate & Cleanup ↓ Fetch Source Code (shared library checkout) ↓ Run Test Case (php -l syntax check) ↓ Security Scans (Gitleaks + Trivy filesystem) ↓ SonarQube Analysis (code quality gate) ↓ Export Docker Tag (-) ↓ Docker Build & Scan (Trivy image scan) ↓ Push to Docker Hub (tag + latest) ↓ Trigger CD Pipeline (passes IMAGE_TAG + APP_ENV) ``` ### 持续部署 (`Jenkinsfile.cd`) 由 CI pipeline 自动触发。 ``` Cleanup Workspace ↓ Git Checkout (prod branch) ↓ Verify Image on Docker Hub ↓ Update & Validate K8s Manifest (sed + dry-run) ↓ Manage Vault & K8s Secrets (inject DB/Redis creds into Vault, run DB migration) ↓ Validate Environment ↓ Update Manifest & Git Push (commit new image tag → prod branch) ↓ Apply ArgoCD Manifests (idempotent — skipped if already exists) ↓ Sync & Check ArgoCD Status (wait for Succeeded + Healthy) ↓ Port Forwards (ArgoCD :8085, Grafana :3000, Prometheus :9090, App :5000) ↓ OWASP ZAP DAST Scan ``` 无论成功还是失败,都会发送电子邮件通知 (HTML)。 ## 环境变量 | 变量 | 描述 | |---|---| | `DB_HOST` | MySQL 主机(在生产环境中为 RDS endpoint,在本地为 `db`) | | `DB_USER` | MySQL 用户名 | | `DB_PASSWORD` | MySQL 密码 | | `DB_NAME` | MySQL 数据库名称 | | `DB_ROOT_PASSWORD` | MySQL root 密码(留空 = 允许为空) | | `REDIS_HOST` | Redis 主机名 | | `REDIS_PORT` | Redis 端口(默认为 `6379`) | ## 安全亮点 - **Gitleaks** — 在每次 CI 运行时扫描 Git 历史记录中泄露的 secrets。 - **Trivy** — 扫描文件系统和构建的 Docker 镜像以查找 CVE。 - **OWASP ZAP** — 在每次 CD 运行时对实时部署进行 DAST 扫描。 - **SonarQube** — 带有质量门禁的静态代码分析。 - **非 root 容器** — 应用以 UID 10001 运行,并具有只读的 root 文件系统。 - **私有子网中的 RDS** — 数据库无法公开访问;只能从 EC2 SG 访问。 - **Vault + ESO** — Git 或 K8s manifests 中零 secrets。 ## 许可证 参见 [许可证](./LICENCE)。
标签:ffuf, GitOps, OpenVAS, PHP, 子域名突变, 开发者社区, 搜索引擎查询, 系统提示词, 请求拦截