手动编写 .gitlab-ci.yml 文件时,你是否也踩过变量引用遗漏、缩进错位、分支触发条件不匹配这些坑?这些细节问题稍不注意,就会导致流水线卡在“waiting for runner”状态,白白浪费大量调试时间。
CodeBuddy CLI 提供了一套更高效的解决方案:通过自然语言指令,自动生成适配 SpringBoot 项目的 GitLab CI/CD 配置。整个过程无需预先准备 YAML 模板,也无需研究 GitLab Runner 的标签规则,让配置生成更简单、更可靠。

如何通过自然语言指令快速生成 GitLab CI 配置
操作非常简单,只需在项目根目录运行一条命令即可。
第一步:确保本地已安装 CodeBuddy CLI 并完成登录。执行 codebuddy login,选择国内模型源(默认 DeepSeek),登录成功后会显示账户绑定状态。
第二步:在终端输入完整指令:codebuddy "为SpringBoot项目生成GitLab CI配置:在ubuntu-latest上构建,执行mvn clean package,运行JUnit 5测试,仅master分支触发部署,通过SSH推送到192.168.10.138:/opt/app,使用密钥对认证"。
第三步:CLI 自动扫描当前目录下的 pom.xml 和 Dockerfile(如有),识别出 JDK 版本为 17、测试框架为 JUnit Jupiter、无 Docker 依赖。于是生成不含 docker build 阶段的轻量级配置,并将 before_script 中预装 OpenJDK 17 的命令写入。
第四步:生成的 .gitlab-ci.yml 文件会自动注入 $CI_COMMIT_BRANCH 判断逻辑、sshpass -p 'xxx' ssh 安全加固写法,并把敏感密码转为 GitLab 项目 Settings → CI/CD → Variables 中预设的 DEPLOY_PASS 变量引用。你只需将内容保存为 .gitlab-ci.yml 并提交到仓库根目录,GitLab 即刻识别生效。
基于现有代码结构反向推导 CI 脚本
当你接手一个没有 CI 配置的遗留项目,又不想凭空猜测构建流程时,这个方法能精准还原真实的构建路径。
运行 codebuddy init,它会解析 pom.xml 中的 、pytest.ini 是否存在、docker-compose.yml 里定义的服务名,生成 CODEBUDDY.md 元数据文件。
接着执行 codebuddy "生成适配当前项目的GitLab CI配置",系统发现该项目包含 test 模块但未启用 JaCoCo 插件,会在 test 阶段自动插入 mvn test -Djacoco.skip=false 并警告覆盖率缺口。
如果项目根目录存在 .github/workflows/deploy.yml 且其中定义了 deploy-to-prod job,CodeBuddy 会提取其 env 字段(如 REGION: us-east-1)并映射为 GitLab CI 的 variables 区块,避免环境参数硬编码。
【务必删除旧的 .gitlab-ci.yml 再执行此命令】否则新生成的配置会与原有文件冲突,导致 GitLab 可能加载错误版本。
交互式修正已有 CI 脚本的安全漏洞
方法一:修复硬编码凭证。打开已有 .gitlab-ci.yml,选中包含 password: admin123 或 echo "xxx" | docker login 的行,右键选择“CodeBuddy → 安全加固”,工具自动将明文密码替换为 $REGISTRY_PASSWORD,并在 GitLab 后台创建对应的 masked variable。
方法二:移除危险命令。检测到 sh: rm -rf / 这类高危指令时,CodeBuddy 会弹出拦截提示,要求确认是否替换为 find . -name "*.tmp" -delete 等安全等效操作。
方法三:注入动态镜像 Tag。选中 image: nginx:latest 这一行,调用“语义化Tag生成”功能,自动替换成 image: nginx:$CI_COMMIT_SHORT_SHA,防止多个提交共用同一 tag 导致缓存污染。
