当前位置: 首页 > news >正文

用 CodyBuddy 帮我写自动化运维脚本

我正在参加CodeBuddy「首席试玩官」内容创作大赛,本文所使用的 CodeBuddy 免费下载链接:腾讯云代码助手 CodeBuddy - AI 时代的智能编程伙伴”。

#CodeBuddy首席试玩官


背景

我个人是非常喜欢 Jenkins 自动化部署工具的,之前都是手写 Jenkins Pipeline 脚本,这次正好有腾讯开发的代码助手,可以体验下 AI 工具的强大。

下载工具和安装工具

首先进入到下载页面,可以选择安装到 VS code 或者 IDE 中。这里我选择安装到 VS code 中,因为写 Jenkins 流水线脚本,用轻便的 VS code 即可完成。如下图所示:

image.png

添加描述

安装 CodyBuddy 插件,安装完成后如下图所示:

image.png

添加描述

用代码助手辅助写 jenkins 流水线脚本

提示词:

我现在需要部署后端微服务,帮我实现 Jenkins pipeline流水线脚本,支持选择不同的微服务或者ALL,git分支,替换 JAR 包,启动 JAR 包,备份jar包等。

CodeBuddy 开始回答我的问题:

image.png

lua体验AI代码助手代码解读
复制代码pipeline {agent anyparameters {choice(name: 'SERVICE',choices: ['service1', 'service2', 'service3', 'ALL'],description: '选择要部署的微服务(ALL表示全部)')string(name: 'BRANCH',defaultValue: 'main',description: '输入Git分支名称')string(name: 'JAR_VERSION',defaultValue: 'latest',description: '输入JAR包版本号')}stages {stage('代码检出') {steps {checkout([$class: 'GitSCM',branches: [[name: params.BRANCH]],userRemoteConfigs: [[url: 'YOUR_GIT_REPO_URL']]])}}stage('备份JAR包') {steps {script {if (params.SERVICE == 'ALL') {sh 'mkdir -p backup && cp target/*.jar backup/'} else {sh "mkdir -p backup && cp target/${params.SERVICE}-*.jar backup/"}}}}stage('替换JAR包') {steps {script {if (params.SERVICE == 'ALL') {sh 'cp /path/to/new/jars/*.jar target/'} else {sh "cp /path/to/new/jars/${params.SERVICE}-${params.JAR_VERSION}.jar target/"}}}}stage('启动服务') {steps {script {if (params.SERVICE == 'ALL') {sh 'nohup java -jar target/*.jar &'} else {sh "nohup java -jar target/${params.SERVICE}-${params.JAR_VERSION}.jar &"}}}}}
}

复制

主要功能说明:

  1. 支持参数化构建:
  • 选择微服务(包括ALL选项)
  • 指定Git分支
  • 指定JAR包版本
  1. 完整部署流程:
  • 代码检出
  • 备份现有JAR包
  • 替换新JAR包
  • 启动服务
  1. 注意事项:
  • 需要替换YOUR_GIT_REPO_URL为实际Git仓库地址
  • 需要调整/path/to/new/jars/为实际JAR包存放路径
  • 服务名需要与实际的JAR包命名格式匹配
  • 根据实际情况可能需要调整启动命令参数

CodeBuddy 还会提示关联问题。单击关联的题目可以继续对话。

如何优化这个Jenkins流水线脚本以实现多环境部署?

image.png

python体验AI代码助手代码解读
复制代码pipeline {agent anyparameters {choice(name: 'ENVIRONMENT',choices: ['dev', 'test', 'staging', 'prod'],description: '选择部署环境')choice(name: 'SERVICE',choices: ['service1', 'service2', 'service3', 'ALL'],description: '选择要部署的微服务(ALL表示全部)')string(name: 'BRANCH',defaultValue: 'main',description: '输入Git分支名称')string(name: 'JAR_VERSION',defaultValue: 'latest',description: '输入JAR包版本号')}environment {// 不同环境的配置变量DEPLOY_PATH = "${env.ENVIRONMENT == 'prod' ? '/opt/prod' : '/opt/non-prod'}"CONFIG_FILE = "config-${env.ENVIRONMENT}.yml"}stages {stage('代码检出') {steps {checkout([$class: 'GitSCM',branches: [[name: params.BRANCH]],userRemoteConfigs: [[url: 'YOUR_GIT_REPO_URL']]])}}stage('构建') {steps {script {sh "make build ENV=${params.ENVIRONMENT} SERVICE=${params.SERVICE}"}}}stage('备份') {steps {script {sh """mkdir -p ${DEPLOY_PATH}/backupcp ${DEPLOY_PATH}/*.jar ${DEPLOY_PATH}/backup/"""}}}stage('部署') {steps {script {if (params.SERVICE == 'ALL') {sh """cp target/*.jar ${DEPLOY_PATH}/cp ${CONFIG_FILE} ${DEPLOY_PATH}/config.yml"""} else {sh """cp target/${params.SERVICE}-*.jar ${DEPLOY_PATH}/cp ${CONFIG_FILE} ${DEPLOY_PATH}/config.yml"""}}}}stage('启动服务') {steps {script {sh """cd ${DEPLOY_PATH}nohup java -jar *.jar --spring.profiles.active=${params.ENVIRONMENT} &"""}}}}
}

优化点说明:

  1. 多环境支持:
  • 新增ENVIRONMENT参数,支持dev/test/staging/prod环境选择
  • 通过environment块定义不同环境的变量
  1. 环境差异化配置:
  • 使用不同的部署路径(DEPLOY_PATH)
  • 加载对应环境的配置文件(CONFIG_FILE)
  • 启动时指定spring.profiles.active参数
  1. 安全隔离:
  • 生产环境(prod)使用独立部署目录
  • 非生产环境使用统一目录
  1. 构建优化:
  • 构建阶段传入环境参数
  • 支持按环境构建不同配置
  1. 部署流程:
  • 标准化备份流程
  • 统一配置文件处理
  • 支持服务批量部署

注意事项:

  1. 需要根据实际项目结构调整部署路径和配置文件命名
  2. 生产环境建议添加人工确认步骤
  3. 可考虑添加健康检查阶段确保服务启动成功

整体来说 CodeBuddy 速度快、关联问题很贴心、答案准确!

作者:悟空聊架构
链接:https://juejin.cn/spost/7501568955497906176
来源:稀土掘金
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

相关文章:

  • Ubuntu 安装 Keepalived
  • Failed building wheel for pycuda
  • Go语言基础学习详细笔记
  • Python小酷库系列:5个常用的dict属性化访问扩展库
  • 极狐GitLab 命名空间的类型有哪些?
  • SENSE2020BSI sCMOS科学级相机主要参数及应用场景
  • SLAM:单应矩阵,本质矩阵,基本矩阵详解和对应的c++实现
  • Baumer工业相机堡盟工业相机如何通过BGAPI SDK在Linux系统下设置多个USB相机(C++)
  • python 绝对引用和相对引用
  • 从字节到链接:用类型化数组生成神奇的对象 URL
  • 实践004-Gitlab CICD部署应用
  • JVM——Java内存模型
  • 第十五届蓝桥杯Web开发应用赛道省/国赛部分题解
  • 【机器学习】Logistic 回归
  • 使用OpenCV的VideoCapture播放视频文件示例
  • mysql集成Qwen大模型MCP计算【附实战代码】
  • 安装并运行第一个Spark程序
  • 【工具变量】最新华证ESG评级得分数据-含xlsx及dta格式(2009-2024.12)
  • 认识tomcat(了解)
  • 怎样避免住宅IP被平台识别
  • 外交部发言人就印巴局势升级答记者问
  • 人民日报刊文:守护“技术进步须服务于人性温暖”的文明底线
  • 人民日报钟声:平等对话是解决大国间问题的正确之道
  • 东洋学人|滨田青陵:近代日本考古学第一人
  • 东莞“超级”音乐节五一出圈背后:文旅热力何以澎湃经济脉动
  • 陕西澄城樱桃在上海推介,向长三角消费者发出“甜蜜之邀”