# 构建脚本 ## 一键构建脚本 ### build.js - 构建镜像 ```bash # 构建所有镜像 node scripts/build.js # 构建指定服务 node scripts/build.js app gitserver # 指定 tag TAG=v1.0.0 node scripts/build.js # 指定架构 TARGET=aarch64-unknown-linux-gnu node scripts/build.js ``` **环境变量:** | 变量 | 默认值 | 说明 | |------------|------------------------------|-------------| | `REGISTRY` | `harbor.gitdata.me/gta_team` | 镜像仓库 | | `TAG` | `latest` | 镜像标签 | | `TARGET` | `x86_64-unknown-linux-gnu` | Rust 交叉编译目标 | --- ### push.js - 推送镜像 ```bash # 推送所有镜像 HARBOR_USERNAME=user HARBOR_PASSWORD=pass node scripts/push.js # 推送指定服务 HARBOR_USERNAME=user HARBOR_PASSWORD=pass TAG=sha-abc123 node scripts/push.js app ``` **环境变量:** | 变量 | 默认值 | 说明 | |-------------------|------------------------------|--------------| | `REGISTRY` | `harbor.gitdata.me/gta_team` | 镜像仓库 | | `TAG` | `latest` 或 Git SHA | 镜像标签 | | `HARBOR_USERNAME` | - | **必填** 仓库用户名 | | `HARBOR_PASSWORD` | - | **必填** 仓库密码 | --- ### deploy.js - 部署到 Kubernetes ```bash # 部署最新镜像 node scripts/deploy.js # 干跑模式(不实际部署) node scripts/deploy.js --dry-run # 部署并运行数据库迁移 node scripts/deploy.js --migrate # 指定 tag TAG=sha-abc123 node scripts/deploy.js # 指定命名空间 NAMESPACE=staging node scripts/deploy.js ``` **环境变量:** | 变量 | 默认值 | 说明 | |--------------|------------------------------|-----------------| | `REGISTRY` | `harbor.gitdata.me/gta_team` | 镜像仓库 | | `TAG` | `latest` 或 Git SHA | 镜像标签 | | `NAMESPACE` | `gitdata` | K8s 命名空间 | | `RELEASE` | `gitdata` | Helm Release 名称 | | `KUBECONFIG` | `~/.kube/config` | Kubeconfig 路径 | --- ## 完整 CI/CD 流程 ```bash # 1. 构建 node scripts/build.js # 2. 推送 HARBOR_USERNAME=user HARBOR_PASSWORD=pass node scripts/push.js # 3. 部署 node scripts/deploy.js --migrate ``` ## 本地开发 ```bash # 本地构建测试 node scripts/build.js app # 使用本地 tag TAG=dev node scripts/build.js # 部署到测试环境 NAMESPACE=test node scripts/deploy.js ```