前提条件:已经安装Jenkins并能正常启动
如果Jenkins安装启动遇到问题可以参考:
1.创建pipeline
- 点击新建项目:
- 输入名称,选择
pipeline
:
- 进入配置页面,如果要配置
GitHub Webhook
要勾选:<font style="color:rgb(20, 20, 31);">GitHub hook trigger for GITScm polling</font>
- 进行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'
}
}
}
具体流程:
- 拉取代码(注意ssh方式和https方式的不同)
- 构建项目
- 进行测试
- 部署到远程服务器
①文件传输(jar)
②停止之前的进程
③重新启动进程