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

news2025/5/9 13:26:14

我正在参加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 any
    
    parameters {
        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 any
    
    parameters {
        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}/backup
                    cp ${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
来源:稀土掘金
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2371497.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

USB集线器芯片革新之战:CH334U如何以工业级性能重新定义HUB控制器

一、当工业智能化遭遇接口瓶颈 在智能制造与边缘计算蓬勃发展的今天,工程师们正面临一个看似微小却至关重要的挑战——如何让USB集线器在极端工况下保持稳定?传统HUB控制器在-20℃以下频繁出现信号失真,产线突然断电导致的静电击穿更是让设备…

基于 Spring Boot 瑞吉外卖系统开发(十)

基于 Spring Boot 瑞吉外卖系统开发(十) 修改菜品 修改菜品是在原有的菜品信息的上对菜品信息进行更新,对此修改菜品信息之前需要将原有的菜品信息在修改界面进行展示,然后再对菜品信息进行修改。 修改菜品分为回显菜品信息和更…

C++ 与 Lua 联合编程

在软件开发的广阔天地里,不同编程语言各有所长。C 以其卓越的性能、强大的功能和对硬件的直接操控能力,在系统开发、游戏引擎、服务器等底层领域占据重要地位,但c编写的程序需要编译,这往往是一个耗时操作,特别对于大型…

Linux系统(OpenEuler22.03-LTS)部署FastGPT

在 openEuler 22.03 LTS 系统上通过 Docker Compose 安装 FastGPT 的步骤如下: 官方参考文档:https://doc.fastgpt.cn/docs/development/docker/ 1. 安装 Docker 和 Docker Compose 可以参考我之前离线安装Docker的文章:openEuler 22.03 LT…

Kubernetes控制平面组件:Controller Manager 之 内置Controller详解

云原生学习路线导航页(持续更新中) kubernetes学习系列快捷链接 Kubernetes架构原则和对象设计(一)Kubernetes架构原则和对象设计(二)Kubernetes架构原则和对象设计(三)Kubernetes控…

结合Splash与Scrapy:高效爬取动态JavaScript网站

在当今的Web开发中,JavaScript的广泛应用使得许多网站的内容无法通过传统的请求-响应模式直接获取。为了解决这个问题,Scrapy开发者经常需要集成像Splash这样的JavaScript渲染引擎。本文将详细介绍Splash JS引擎的工作原理,并探讨如何将其与S…

用于构建安全AI代理的开源防护系统

大家读完觉得有帮助记得及时关注!!! 大型语言模型(LLMs)已经从简单的聊天机器人演变为能够执行复杂任务的自主代理,例如编辑生产代码、编排工作流程以及基于不受信任的输入(如网页和电子邮件&am…

克里金模型+多目标优化+多属性决策!Kriging+NSGAII+熵权TOPSIS!

目录 效果一览基本介绍程序设计参考资料 效果一览 基本介绍 克里金模型多目标优化多属性决策!KrigingNSGAII熵权TOPSIS!!matlab2023b语言运行! 1.克里金模型(Kriging Model)是一种基于空间统计学的插值方法…

LLM 论文精读(三)Demystifying Long Chain-of-Thought Reasoning in LLMs

这是一篇2025年发表在arxiv中的LLM领域论文,主要描述了长思维链 Long Chain-of-Thought 对LLM的影响,以及其可能的生成机制。通过大量的消融实验证明了以下几点: 与shot CoT 相比,long CoT 的 SFT 可以扩展到更高的性能上限&…

【Prompt工程—文生图】案例大全

目录 一、人物绘图 二、卡通头像 三、风景图 四、logo设计图 五、动物形象图 六、室内设计图 七、动漫风格 八、二次元图 九、日常场景图 十、古风神化图 十一、游戏场景图 十二、电影大片质感 本文主要介绍了12种不同类型的文生图技巧,通过加入不同的图像…

rust程序静态编译的两种方法总结

1. 概述 经过我的探索,总结了两种rust程序静态编译的方法,理论上两种方法都适用于windows、mac os和linux(mac os未验证),实测方法一性能比方法二好,现总结如下,希望能够帮到你. 2.方法一 2.1 添加配置文件 在项目的同级文件夹下新…

【Linux系列】目录大小查看

💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

2048游戏(含Python源码)

前言 相关参考游戏: 像素飞机大战(含Python源码)-CSDN博客https://blog.csdn.net/weixin_64066303/article/details/147693018?spm1001.2014.3001.5501使用DeepSeek定制Python小游戏——以“俄罗斯方块”为例-CSDN博客https://blog.csdn.n…

中间件-RocketMQ

RocketMQ 基本架构消息模型消费者消费消息模式顺序消息机制延迟消息批量消息事务消息消息重试最佳实践 基本架构 nameServer: 维护broker列表信息,客户端连接时只需要连接nameServer。可配置成集群。 broker:broker分为master和slave,master负…

Python就业方向有哪些?

Python 作为一门通用、易学且功能强大的编程语言,在多个领域都有广泛的应用,因此就业方向也非常多样化。以下是 Python 主要的就业方向及相关技能要求。 1. Web 开发 岗位:Python Web 开发工程师、后端工程师、全栈工程师技术栈&#xff1a…

iptables 访问控制列表使用记录

iptables 是linux操作系统上自带的防火墙程序,功能强大,能够依据策略过滤掉一些恶意访问流量,本次记录一下iptables的常见使用方法,未尽之处,欢迎补充。 一、iptables 下载 我这里使用的是华为openEuler 22.03版本&am…

16. Qt系统相关:事件、定时器

1. Qt事件 1.1 简介 事件是应用程序内部或者外部产生的事情或者动作的统称。在Qt中使用一个对象来表示一个事件。所有的Qt事件均继承于抽象类QEvent。事件是由系统或者Qt平台本身在不同的时刻发出的。当用户按下鼠标、敲下键盘,或者是窗口需要重新绘制的时候&#…

云平台搭建

物联网云平台的基本概述 基本概念 随着物联网技术的快速发展,越来越多的设备需要接入网络以实现智能化功能,物联网平台应运而生。 物联网云平台(IoT Cloud Platform)是物联网生态系统中的核心组件,它通过提供一系列…

数学实验(Matlab语言环境和线性代数实验)

一、Matlab语言环境和线性代数实验 1.Matlab语言环境 Matlab简介 Matlab:Matrix Laboratry 矩阵实验室 Matlab 提供了强大的科学计算、灵活的程序设计流程、高质量的图形可视化与界面设计等功能,被广泛应用于科学计算、控制系统、信息处理等领域的分…

Elasticsearch 中的索引模板:如何使用可组合模板

作者:来自 Elastic Kofi Bartlett 探索可组合模板以及如何创建它们。 更多阅读: Elasticsearch:可组合的 Index templates - 7.8 版本之后 想获得 Elastic 认证吗?查看下一期 Elasticsearch Engineer 培训的时间! El…