# dockerfile **Repository Path**: ZoeDong/dockerfile ## Basic Information - **Project Name**: dockerfile - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-04-09 - **Last Updated**: 2026-04-16 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # OCS Dockerfile CI OpenCloudOS ai-agent-container 仓库的 Dockerfile CI/CD 流水线脚本。 ## 仓库结构 ``` ├── Jenkinsfile-CI # PR 门禁流水线 ├── Jenkinsfile-Publish # 合并后发布流水线 ├── utils/ # CI 编排脚本 │ ├── detect_changes.sh # 变更检测(git diff) │ ├── validate.sh # 校验(build.conf + 必需文件 + hadolint) │ ├── build_and_test.sh # 本地构建+测试 │ ├── gpu_test.sh # 远程 GPU 机器构建+测试(SSH 一条龙) │ ├── push_images.sh # 镜像推送(Publish 流水线使用) │ ├── load_build_conf.sh # build.conf 参数加载(被其他脚本 source) │ └── gitee_feedback.sh # Gitee PR 标签+评论 ├── README.md # 本文件 └── SWITCH_TO_PRODUCTION.md # 正式上线切换清单 ``` ## 架构设计 ### 两个仓库分工 | 仓库 | 角色 | 内容 | |------|------|------| | **ai-agent-container** | 数据仓库 | 贡献者提交 `frameworks//Dockerfile` | | **dockerfile**(本仓库) | CI 仓库 | Jenkinsfile + utils/ 脚本 | 分离原因:CI 脚本由维护者管控,贡献者 PR 无法修改 CI 逻辑。流水线运行时从本仓库拉取 `utils/` 复制到工作目录。 ### 节点分工 ``` ocs:master (国内内网) — 任务分发:Clone & Setup、Result Feedback ocs:x86 (国内内网) — 校验+构建:Validate、Build & Test(本地模式) GPU 机器 (腾讯云法兰克福) — 远程构建+GPU 测试:docker build + test.sh + GPU test(远程模式) ``` ### 两种构建模式 | 模式 | 适用场景 | 流程 | |------|---------|------| | **本地模式**(当前) | GPU 机器未就绪,或不需要 GPU 测试 | x86 节点本地 docker build + test.sh | | **远程模式**(就绪后启用) | GPU 机器可用 | SSH 到 GPU 机器,打包源码 scp 过去,远程 docker build + test.sh + GPU test | 远程模式的优势:GPU 机器在法兰克福可直连 Docker Hub(无国内网络限制),且构建+测试+GPU 验证一条龙完成,无需跨洋传输 GB 级镜像。 切换方式:Jenkinsfile-CI Stage 3 中取消远程构建注释,注释掉本地构建块。 ## 流水线说明 ### Jenkinsfile-CI(PR 门禁) 触发:Gitee Webhook → PR open / reopen / push-update / `/retest` 评论 | Stage | 节点 | 说明 | |-------|------|------| | Clone & Setup | ocs:master | 模拟 PR 合并(git fetch + merge),检测 `frameworks/` 变更目录 | | Validate | ocs:x86 | build.conf 校验 + 必需文件(Dockerfile/README.md)+ test.sh 提示 + Hadolint lint | | Build & Test | ocs:x86 或 GPU | docker build + test.sh(+ GPU test,如启用远程模式) | | Result Feedback | ocs:master | PR 标签(ci_passed/ci_failed)+ 评论 | ### Jenkinsfile-Publish(合并后发布) 触发:PR merge 到 master 后 | Stage | 节点 | 说明 | |-------|------|------| | Clone & Setup | ocs:master | checkout master,检测变更(git diff HEAD~1) | | Build & Push | ocs:x86 | docker build + push 到 Docker Hub | ## build.conf(贡献者可选) 每个 `frameworks//` 目录可放置 `build.conf` 自定义构建参数: ```bash IMAGE_NAME=opencloudos9-vllm # 默认: 目录名 IMAGE_TAG=0.10.2 # 默认: latest BUILD_CONTEXT=shared=../shared # 默认: 无 GPU_TEST=true # 默认: false ``` 所有字段可选,不提供则使用默认值。 ## 当前状态 - ✅ CI 门禁流水线(本地模式)已验证通过 - ✅ Hadolint 多级兼容(本地二进制 → /usr/local/bin → /tmp 缓存 → GitHub 下载 → Docker 镜像 → 跳过) - ⏳ GPU 远程构建模式代码已就绪,待 GPU 机器就绪后启用 - ⏳ Publish 流水线未测试 - ⚠️ Gitee PR Label 需授权 ocs-bot 管理员权限 正式上线切换详见 → [SWITCH_TO_PRODUCTION.md](./SWITCH_TO_PRODUCTION.md)