用 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
來源:稀土掘金
著作權歸作者所有。商業轉載請聯系作者獲得授權,非商業轉載請注明出處。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/78835.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/78835.shtml
英文地址,請注明出處:http://en.pswp.cn/web/78835.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

基于windows安裝MySQL8.0.40

基于windows安裝MySQL8.0.40 基于windows 安裝 MySQL8.0.40,解壓文件到D:\mysql-8.0.40-winx64 在D:\mysql-8.0.40-winx64目錄下創建my.ini文件,并更新一下內容 [client] #客戶端設置,即客戶端默認的連接參數 # 設置mysql客戶端連接服務…

Python小酷庫系列:5個常用的dict屬性化訪問擴展庫

5個常用的dict屬性化訪問擴展庫 嵌套結構高級功能性能綜合建議 在前面我們詳細講解了 Box和 Munch這兩個dict屬性化訪問的擴展庫,總體而言它們主要用于提升配置文件數據、JSON對象數據的可讀性,減少了代碼中雙引號。在這一領域中還有dotmap、addict 和…

OC語言學習——面向對象(下)

一、OC的包裝類 OC提供了NSValue、NSNumber來封裝C語言基本類型(short、int、float等)。 在 Objective-C 中,**包裝類(Wrapper Classes)**是用來把基本數據類型(如 int、float、char 等)“包裝…

密碼學系列 - SR25519與ED25519

SR25519 SR25519 是一種高級的數字簽名算法,它基于 Schnorr 簽名方案,使用的是 Curve25519 橢圓曲線。這種簽名算法在密碼學社區中廣受歡迎,特別是在區塊鏈和加密貨幣領域。以下是關于 SR25519 的詳細介紹。 SR25519 簡介 SR25519 是一種 …

Vue3源碼學習7-PatchFlags使用位算符

文章目錄 前言? 一、基礎知識&#xff1a;什么是二進制&#xff1f;? 二、位運算的基本操作? 三、左移運算 <<? 四、實際用途&#xff1a;如何用于狀態標記&#xff08;PatchFlags&#xff09;? 五、組合多個狀態標記? 六、小結口訣&#xff08;記憶&#xff09;?…

在 Vue 2 中使用 qrcode 庫生成二維碼

&#x1f31f; 前言 歡迎來到我的技術小宇宙&#xff01;&#x1f30c; 這里不僅是我記錄技術點滴的后花園&#xff0c;也是我分享學習心得和項目經驗的樂園。&#x1f4da; 無論你是技術小白還是資深大牛&#xff0c;這里總有一些內容能觸動你的好奇心。&#x1f50d; &#x…

電子電器架構 --- 網關釋放buffer的必要性

我是穿拖鞋的漢子,魔都中堅持長期主義的汽車電子工程師。 老規矩,分享一段喜歡的文字,避免自己成為高知識低文化的工程師: 鈍感力的“鈍”,不是木訥、遲鈍,而是直面困境的韌勁和耐力,是面對外界噪音的通透淡然。 生活中有兩種人,一種人格外在意別人的眼光;另一種人無論…

Java中Stream、File、方法遞歸

文章目錄 十五、Stream流、File、方法遞歸1、Stream1.1 什么是Stream1.2 獲取Stream流1.3 Stream流常見的中間方法1.3 Stream流常見的終結方法1.4 收集Stream流 2、File、IO流&#xff08;一&#xff09;2.1 存儲數據的方案2.2 File&#xff1a;代表文本2.3 常用方法一&#xf…

挑戰用豆包教我學Java01天

今天是豆包教我學Java的第一天&#xff0c;廢話不多說直接開始。 1.每日題目&#xff1a; 基礎語法與數據類型 題目&#xff1a;編寫一個 Java 程序&#xff0c;從控制臺讀取兩個整數&#xff0c;然后計算它們的和、差、積、商&#xff0c;并輸出結果。題目&#xff1a;編寫…

文章記單詞 | 第67篇(六級)

一&#xff0c;單詞釋義 cylinder&#xff1a;英 [?s?l?nd?(r)] 美 [?s?l?nd?r] &#xff0c;名詞&#xff0c;意為 “圓筒&#xff1b;圓柱體&#xff1b;汽缸&#xff1b;&#xff08;有特定用途的&#xff09;圓筒形物品”。fool&#xff1a;英 [fu?l] 美 [fu?l]…

Make:獨立創造者手冊——從0到1的商業自由之路

目錄 如何獲得創業想法 ? 解決你自己的問題 ? 從微觀細分市場起步 ? 從問題出發&#xff0c;而非解決方案 ? 記錄與驗證想法 如何構建產品 ? 快速構建最小化產品 ? 對抗完美主義 ? 自行開發 vs. 外包 ? 學習基礎編程的必要性 案例與洞見 ? Levelsio的70個項目與5%成…

spark基本介紹

一、Spark概述 Spark是一種基于內存的快速、通用、可拓展的大數據分析計算引擎。 Hadoop是一個分布式系統結構的基礎架構。 二、Spark與Hadoop相比較的優勢&#xff1a; 1. 處理速度&#xff1a;Hadoop&#xff1a;數據處理速度相對較慢 Spark&#xff1a;速度比Hadoop快很…

Pdf轉Word案例(java)

Pdf轉Word案例&#xff08;java&#xff09; 需要導入aspose-pdf.jar 需要先手動下載jar包到本地&#xff0c;然后通過systemPath在pom文件中引入。 下載地址&#xff1a;https://releases.aspose.com/java/repo/com/aspose/aspose-pdf/25.4/ <dependency><groupId&…

探索 C++ 語言標準演進:從 C++23 到 C++26 的飛躍

引言 C 作為一門歷史悠久且廣泛應用的編程語言&#xff0c;其每一次標準的演進都備受開發者關注。從早期的 C98 到如今的 C23&#xff0c;再到令人期待的 C26&#xff0c;每一個版本都為開發者帶來了新的特性和改進&#xff0c;推動著軟件開發的不斷進步。本文將深入探討 C23 …

如何有效防御服務器DDoS攻擊

分布式拒絕服務&#xff08;DDoS&#xff09;攻擊通過大量惡意流量淹沒服務器資源&#xff0c;導致服務癱瘓。本文將提供一套結合代碼實現的主動防御方案&#xff0c;涵蓋流量監控、自動化攔截和基礎設施優化。 1. 實時流量監控與告警 目標&#xff1a;檢測異常流量并觸發告警…

【Bootstrap V4系列】學習入門教程之 組件-折疊(Collapse)

Bootstrap V4系列 學習入門教程之 組件-折疊&#xff08;Collapse&#xff09; 折疊&#xff08;Collapse&#xff09;How it works一、Example二、Horizontal 水平的三、Multiple targets 多個目標四、Accordion example 手風琴示例 折疊&#xff08;Collapse&#xff09; 通…

C24-數組

數組的引入:方便對同一類型的數據進行管理(一個班級里的45個同學、一個籃子里的12個蘋果)數組的定義: 數據類型 數組名[常量表達式(也就是元素的個數)];int a[10]; //這里定義了一個能存放10個元素的整形數組數組初始化 完全初始化 int arr[3]{5,6,8};部分初始化 int arr[10]{…

手持小風扇方案解說---【其利天下技術】

春去夏來&#xff0c;酷暑時節&#xff0c;小風扇成為外出必備的解暑工具&#xff0c;近年來&#xff0c;隨著無刷電機的成本急劇下降&#xff0c;小風扇也逐步從有刷變無刷化了。 數量最大的如一箱無刷馬達&#xff0c;其次三相低壓無刷電機也大量被一些中高端風扇大量采用。…

C++函數棧幀詳解

函數棧幀的創建和銷毀 在不同的編譯器下&#xff0c;函數調用過程中棧幀的創建是略有差異的&#xff0c;具體取決于編譯器的實現&#xff01; 且需要注意的是&#xff0c;越高級的編譯器越不容易觀察到函數棧幀的內部的實現&#xff1b; 關于函數棧幀的維護這里我們要重點介…

CPU-GPU-NPU-TPU 概念

1.CPU 中央處理器&#xff08;Central Processing Unit&#xff0c;簡稱CPU&#xff09;作為計算機系統的運算和控制核心&#xff0c;是信息處理、程序運行的最終執行單元。CPU自產生以來&#xff0c;在邏輯結構、運行效率以及功能外延上取得了巨大發展。 2.GPU GPU&#xff0…