CI/CD 小作业¶
本部分的目标是将前后端小作业推送到 SECoder GitLab,通过流水线完成测试、镜像构建和 Kubernetes 部署,并能够从浏览器访问应用。
开始前请阅读:
项目准备¶
在自己的 SECoder GitLab 命名空间中创建两个 Private 项目:
2026-Django-HW2026-Next-HW
完成 SECoder 注册和 GitLab 登录后,在 SECoder 个人资料页面点击一次 同步 GitLab 子组。如果看不到自己的 GitLab 命名空间或项目权限不正确,先重新同步再刷新 GitLab。
CI/CD 变量¶
前端和后端项目都需要在 Settings → CI/CD → Variables 中添加:
| Key | Value | 设置 |
|---|---|---|
TOKEN |
SECoder 个人资料页面中的 Kubernetes API 令牌 | Masked |
NAMESPACE |
u-<学号> |
普通变量 |
GITLAB_REGISTRY_USER |
当前项目 Deploy Token 的用户名 | 普通变量 |
GITLAB_DEPLOY_TOKEN |
当前项目 Deploy Token 的值 | Masked |
创建项目 Deploy Token¶
前后端两个 Private 项目需要分别创建 Deploy Token:进入各项目的 Settings → Repository → Deploy tokens,点击 Add token,填写名称(例如 registry-pull)并按需设置到期日期;权限只勾选 read_registry,然后创建。创建后立即复制页面显示的用户名和 Token,分别填入该项目的 GITLAB_REGISTRY_USER 和 GITLAB_DEPLOY_TOKEN;离开页面后无法再次查看 Token。
这个凭据供 Kubernetes 在 CI 作业结束后继续拉取私有镜像,不需要 read_repository 或镜像推送权限。到期或轮换后,更新对应项目的 CI 变量并重新运行部署流水线,以更新 Kubernetes 中的拉取 Secret。详见 GitLab Deploy Token 文档。
不要提交凭据
不要把 Token、kubeconfig 或包含凭据的 Docker 配置提交到仓库。截图和答疑日志中也必须隐藏完整值。
仓库中的部署文件¶
每个项目都应包含:
1 2 3 4 5 6 7 | |
前后端必须使用不同的资源名、HTTPRoute 名和 Registry Secret 名。域名都以个人命名空间开头,例如:
u-2026000000-2026-django-hw.t.secoder.netu-2026000000-2026-next-hw.t.secoder.net
流水线结果¶
正常的默认分支流水线应依次完成:
- 运行单元测试和代码风格检查。
- 使用 BuildKit 构建 Docker 镜像。
- 使用提交 SHA 作为镜像标签并推送到 GitLab Container Registry。
- 创建或更新 Registry 拉取 Secret。
- 使用 Kustomize 更新 Deployment、Service 和 HTTPRoute。
- 等待工作负载 Ready,并通过外部域名访问应用。
自查¶
在推送前,至少完成以下检查:
1 2 | |
部署后检查:
1 2 | |
若出现错误,先确定失败发生在测试、镜像构建还是 Kubernetes 部署阶段,再按照 kubectl 排查应用逐层检查。提问时提供已隐藏凭据的 Job 日志和资源状态。