Jenkins pipeline配置示例

news/2024/10/3 13:21:28 标签: jenkins, 运维, ci/cd

前提条件:已经安装Jenkins并能正常启动

如果Jenkins安装启动遇到问题可以参考:

1.创建pipeline

  1. 点击新建项目:

  1. 输入名称,选择pipeline

  1. 进入配置页面,如果要配置GitHub Webhook要勾选:<font style="color:rgb(20, 20, 31);">GitHub hook trigger for GITScm polling</font>

  1. 进行pipeline配置:

  • Definition选择Pipeline script from SCM

作用是让Jenkins从源代码管理(SCM)系统拉去Jenkins的脚本文件

  • SCM选择Git
  • Repository URL填写GitHub仓库的url
  • 如果仓库是public的话无需填写Credentials

  • Branch Specifier填写要进行pipeline操作的仓库分支
  • Script Path默认是Jenkinsfile即可

其余选项无需配置,保持默认即可

2.配置maven

运行maven指令的时候一直出现command not found的问题,但是服务器上已经配置过了maven,于是在Jenkins中进行配置:

DashBoard——Manage Jenkins——Tools——Maven Configuration

配置settings文件的路径即可

3.编写Jenkinsfile

在项目的根目录下创建Jenkins脚本文件,文件名为Jenkinsfile

pipeline {
    agent any

    environment {
        // 定义环境变量
        SERVER_IP = your-server-ip        					// 服务器IP地址
        SERVER_USER = your-username    					// 服务器用户名
        TARGET_DIR = you-jarFileDir                  // 服务器上的目标目录
        JAR_FILE = your-jarFileName                // 打包后的文件名
    }

    stages {
        stage('Clone Source Code') {
            steps {
                // 拉取项目源码
                //注意: 这里根据自己的需求选择合适的分支以及仓库地址(ssh或https)
                git branch: 'master', url: 'your-repository-url'
            }
        }
        stage('Build Project') {
            steps {
                // 使用 Maven 构建项目
                sh 'mvn clean package -DskipTests'
            }
        }
        stage('Verify Build Output') {
            // 验证构建结果
            steps {
                sh 'ls -l target/'
            }
        }
        stage('Test') {
            steps {
                // 运行测试
                sh 'mvn test'
            }
        }
        stage('Deploy') {
            // 部署到远程服务器
            steps {
                script {
                    // StrictHostKeyChecking=no 表示不检查远程主机的公钥 建议配置好ssh的免密登录
                    // Step 1: 传输文件到远程服务器 scp -v 可以查看文件传输的进度
                    sh """
                        scp -v -o StrictHostKeyChecking=no target/${JAR_FILE} ${SERVER_USER}@${SERVER_IP}:${TARGET_DIR}
                    """

                    // Step 2: 杀死已存在的进程
                    def killStatus = sh(script: """
                        ssh -o StrictHostKeyChecking=no ${SERVER_USER}@${SERVER_IP} 'pgrep -f ${JAR_FILE} | xargs kill -9 || true'
                    """, returnStatus: true)

                    echo "Kill process exit status: ${killStatus}"

                    // Step 3: 启动新的进程
                    sh """
                        ssh -o StrictHostKeyChecking=no ${SERVER_USER}@${SERVER_IP} 'nohup java -jar ${TARGET_DIR}/${JAR_FILE} > /dev/null 2>&1 &'
                    """
                }
            }
        }
    }

    post {
        always {
            // 每次构建结束后清理工作目录
            cleanWs()
        }
        success {
            echo 'Deployment finished successfully'
        }
        failure {
            echo 'Deployment failed'
        }
    }
}

具体流程:

  1. 拉取代码(注意ssh方式和https方式的不同)
  2. 构建项目
  3. 进行测试
  4. 部署到远程服务器
    ①文件传输(jar)
    ②停止之前的进程
    ③重新启动进程

http://www.niftyadmin.cn/n/5688447.html

相关文章

Flume面试整理-Flume是什么?

Apache Flume 是一个分布式的、可靠的、高可用的数据收集和传输系统,专为从各种数据源(如日志文件、网络流)收集、聚合和传输大量数据而设计。它主要用于在大数据生态系统中,特别是Hadoop环境中,将数据从多个分散的来源实时地传输到一个集中的存储系统(如HDFS、HBase等)…

用户登录与信息管理:实现小程序登录与用户信息存储

用户登录与信息管理&#xff1a;实现小程序登录与用户信息存储 在现代的移动应用中&#xff0c;用户登录与信息管理是构建个性化用户体验的基础。小程序作为轻量级的应用形式&#xff0c;在简化开发流程的同时&#xff0c;也需要我们妥善管理用户的登录状态与用户信息。本文将…

React生命周期以及Hook

React生命周期可概括为以下关键阶段&#xff08;针对类组件&#xff0c;函数组件主要通过Hooks实现类似功能&#xff09;&#xff1a; 挂载&#xff08;Mounting&#xff09;&#xff1a; constructor&#xff1a;初始化state和绑定事件处理函数。 render&#xff1a;返回组件的…

【AI驱动TDSQL-C Serverless 数据库技术实战营】基于Langchain的电商可视化分析

人工智能技术的飞速发展已深刻影响电商行业&#xff0c;显著提升了个性化推荐、用户行为分析、库存管理和市场预测等领域的效率。构建一个高效的AI驱动电商数据分析平台已成为行业的核心需求。本文里&#xff0c;我们将使用腾讯云的高性能应用平台 HAI&#xff08;专为AI和科学…

深化专业,广纳技能,构建软实力

一、引言 ----  随着人工智能&#xff08;AI&#xff09;和生成式人工智能&#xff08;AIGC&#xff09;如ChatGPT、Midjourney、Claude等大语言模型的持续涌现&#xff0c;AI辅助编程工具日益普及&#xff0c;程序员的工作方式正在经历深刻的变革。这种变革既带来了对部分编…

解决OpenCV保存视频 视频全部为绿色的bug

目录 项目场景&#xff1a; 问题描述 原因分析&#xff1a; 解决方案&#xff1a; 项目场景&#xff1a; 使用OpenCV-Python 保存视频&#xff0c;视频为numpy array格式&#xff0c;保存的视频全部为无意义的绿色。 问题描述 用opencv 保存的视频会出现全部为绿色的情况&…

企业级Kubernetes部署

华子目录 k8s中容器的管理方式k8s集群部署安装k8s部署工具部署软件仓库&#xff0c;添加k8s源设置kubectl命令补全功能 k8s集群中安装cri-dockerk8s集群中启动cri-docker服务在k8s-master上拉取k8s所需镜像并上传到harbor上修改cri-docker.service文件k8s集群中启动kubeletk8s集…

你真的会用鼠标吗?它其实还可以这么用。

前言 小白最近比较忙&#xff0c;没大片的时间可以用来做实际测试&#xff0c;所以只能讲一些小知识。 如果有小伙伴们的电脑有问题&#xff0c;可以私下找小白咨询。 今天咱们要讲&#xff1a;鼠标怎么用。 接触过电脑的人&#xff0c;对鼠标这个东西一般都不陌生&#xf…