diff --git a/README.md b/README.md index 1636d54..d49a638 100644 --- a/README.md +++ b/README.md @@ -25,14 +25,14 @@ - 百智云用户鉴权是平台必填接入项,需要逐项补齐 `app_id` 与证书材料 - 平台 shared 之外的私有依赖必须明确来源,不能只写不存在的连接参数 - 应用自带私有依赖的内部口令优先自动生成;外部集成凭据再向用户逐项索取 -- 只允许应用仓库 CI 向 GitOps 仓库同步当前应用自己的 release 结果 +- 只允许应用仓库 CI 向 GitOps 仓库同步当前应用自己的 release 结果与版本引用;如果当前应用的 chart 版本由 GitOps 仓库中的 `Application` 维护,则只同步更新 `apps//application.yaml` 里的 `targetRevision` 不适合处理: - 通用 GitLab CI 改造 - 通用 Helm Chart 编写 - 未指向当前平台常量的通用 GitOps / Argo CD 任务 -- 修改 GitOps 仓库中的 `Application`、`AppProject` 或其他发布侧清单 +- 修改其他应用的 `Application`、任意 `AppProject` 或其他与当前应用版本引用无关的发布侧清单 - 改成 Ingress 驱动的对外暴露方式 ## 安装 diff --git a/gitops-app-onboarding/SKILL.md b/gitops-app-onboarding/SKILL.md index 311477a..a26e5f8 100644 --- a/gitops-app-onboarding/SKILL.md +++ b/gitops-app-onboarding/SKILL.md @@ -74,8 +74,10 @@ description: 面向当前 Baizhi GitOps 平台的项目接入工作流,只适 边界约束: - 本 skill 只处理应用仓库侧接入 -- 不读取、不判断、不修改 GitOps 仓库中的 `Application`、`AppProject` 或其他发布侧清单 -- 对 GitOps 的唯一动作,是在应用仓库 CI 中推送当前应用自己的 release 结果或版本引用 +- 不读取、不判断、不修改与当前应用无关的 GitOps 发布侧清单 +- 对 GitOps 的唯一动作,是在应用仓库 CI 中同步当前应用自己的 release 结果与版本引用 +- 如果当前应用的 Argo CD `Application` 已存在且 chart 版本引用由 GitOps 仓库维护,只允许同步更新 `apps//application.yaml` 中当前应用 chart source 的 `targetRevision` +- 不要修改 `AppProject`、bootstrap、其他应用的 `Application`,也不要改动当前应用 `Application` 中除 chart `targetRevision` 以外的字段 ## 交付模型 @@ -89,7 +91,7 @@ description: 面向当前 Baizhi GitOps 平台的项目接入工作流,只适 1. 分支或 MR 只跑测试 2. 打 `vX.Y.Z` tag 后构建并推送镜像 3. 打 `vX.Y.Z` tag 后打包并推送 Helm Chart -4. 打 `vX.Y.Z` tag 后更新当前 GitOps 仓库中该应用的版本引用 +4. 打 `vX.Y.Z` tag 后更新当前 GitOps 仓库中该应用的版本引用,包括当前应用 `Application` 中 chart source 的 `targetRevision` 5. 推送当前 GitOps 仓库提交 6. Argo CD 感知当前 GitOps 仓库变更后自动同步 @@ -140,6 +142,13 @@ test job 应运行在分支和 MR 上,并执行目标项目自己的标准测 - 如果依赖私有代码仓库,补齐认证 - 使用项目本身的标准测试入口,不要擅自发明新的测试命令 +Go 项目额外要求: + +- 如果项目使用 Go,并且依赖公共模块下载,默认在 GitLab CI variables 中加入:`GOPROXY=https://goproxy.cn,direct`、`GOSUMDB=sum.golang.google.cn` +- 如果项目使用 `git.in.chaitin.net` 私有 Go 模块,默认同时加入:`GOPRIVATE=git.in.chaitin.net`、`GONOSUMDB=git.in.chaitin.net`、`GONOPROXY=git.in.chaitin.net`、`GOINSECURE=git.in.chaitin.net` +- 如果项目通过 GitLab 私有仓库拉取依赖且当前平台环境需要跳过证书校验,默认加入:`GIT_SSL_NO_VERIFY="true"` +- 这类 Go 代理与私有仓库变量应放在 `.gitlab-ci.yml` 的 `variables:` 中,而不是分散写进单个命令 + 示例: - Go:`go mod download`、`go test ./...` @@ -164,7 +173,7 @@ test job 应运行在分支和 MR 上,并执行目标项目自己的标准测 - 用 CI 凭据生成 `.netrc` - 通过 Docker build secret 传入 - 如需额外 CA 证书,也通过 build secret 传入 -- 不要通过全局关闭 TLS 校验规避问题 +- 如果私有 GitLab 仓库位于 `git.in.chaitin.net` 且当前平台环境需要跳过证书校验,可配合 `GOINSECURE=git.in.chaitin.net` 与 `GIT_SSL_NO_VERIFY="true"` 不要使用: @@ -194,6 +203,7 @@ test job 应运行在分支和 MR 上,并执行目标项目自己的标准测 - `releases//values.yaml` - `releases//metadata.yaml` - `releases//manifests/` 下由当前应用导出的发布结果 +- `apps//application.yaml` 中当前应用 chart source 的 `targetRevision` 不要在这个 job 中加入集群部署逻辑。