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 中。

## 概述
Code-Byte 是一个使用 PHP 8.2 构建的社区驱动的开发者论坛。它允许用户注册、发布主题、发表评论、搜索话题以及按类别浏览内容。该项目旨在作为生产级 DevOps 的展示案例 —— 从使用 Terraform 进行基础设施配置,到通过 ArgoCD 进行 GitOps 驱动的部署。




## 项目结构
```
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, 子域名突变, 开发者社区, 搜索引擎查询, 系统提示词, 请求拦截