Jenkins Pipeline 部署 SpringBoot 应用

一. 安装依赖包
yum install -y wget
yum install -y gcc-c++
yum install -y zlib-devel perl-ExtUtils-MakeMaker
yum -y install curl-devel expat-devel gettext-devel openssl-devel zlib-devel gcc perl-ExtUtils-MakeMaker
yum install -y openssh-clients
yum install -y fontconfig
二. 环境准备

1.安装JAVA环境

yum -y install java-1.8.0-openjdk
#检测是否安装成功
java -version

修改/etc/profile文件,添加JAVA_HOME

vi /etc/profile
在文件的最后面,加上以下代码
export JAVA_HOME=/java/jdk1.8.0_171
export CLASSPATH=.:$JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export PATH=$JAVA_HOME/bin:$PATH

在执行完保存过后,必须执行以下source /etc/profile,重置文件,让它生效。

2.安装Maven

#下载
wget http://mirrors.hust.edu.cn/apache/maven/maven-3/3.1.1/binaries/apache-maven-3.1.1-bin.tar.gz
#解压改名移动目录
tar zxf apache-maven-3.1.1-bin.tar.gz 
mv apache-maven-3.1.1 /usr/local/maven3

vi /etc/profile然后还需要 配置环境变量。 #在适当的位置添加

export M2_HOME=/usr/local/maven3
export PATH=$PATH:$JAVA_HOME/bin:$M2_HOME/bin

保存退出后运行下面的命令使配置生效,或者重启服务器生效。

source /etc/profile

验证版本

mvn -v

出现maven版本即成功

阿里云源

<mirrors>
    <mirror>
      <id>alimaven</id>
      <name>aliyun maven</name>
      <url>http://maven.aliyun.com/nexus/content/groups/public/</url>
      <mirrorOf>central</mirrorOf>        
    </mirror>
</mirrors>
三. 安装Jenkins部署SpringBoot应用

rpm方式安装:

sudo wget  https://pkg.jenkins.io/redhat-stable/jenkins-2.164.1-1.1.noarch.rpm
sudo rpm -ivh jenkins-2.164.1-1.1.noarch.rpm
#重载服务(由于前面修改了Jenkins启动脚本)
sudo systemctl daemon-reload

#启动Jenkins服务
sudo systemctl start jenkins

#将Jenkins服务设置为开机启动
#由于Jenkins不是Native Service,所以需要用chkconfig命令而不是systemctl命令
sudo /sbin/chkconfig jenkins on

war包方式:

修改Jenkins默认用户:

vi /etc/sysconfig/jenkins
#修改为Root用户
JENKINS_USER="root"
#给用户授权
sudo chown -R root /var/log/jenkins
sudo chgrp -R root /var/log/jenkins
sudo chown -R root /var/lib/jenkins 
sudo chgrp -R root /var/lib/jenkins
sudo chown -R root /var/cache/jenkins
sudo chgrp -R root /var/cache/jenkins

直接将War包上传到服务器运行即可。

nohup java -jar jenkins.war >jenkins.log 2>&1 &

运行后访问localhost:8080即可。

进入界面后需要输入一串密码在服务器查看即可:

sudo cat /var/lib/jenkins/secrets/initialAdminPassword

进入之后创建好自己的用户名与密码,跳过所有下载。

登陆之后进入Manage Jenkins -> Global Tool Configuration 中进行配置Maven,Git,JDK

四. 新建Pipeline 项目

配置Git仓库:

脚本路径是指代码拉下的jenkins_files目录里面的01_eureka文件。·

node {
   def mvnHome
   def workspace = pwd()
   def project_name = 'eureka-server-1.0.0.jar'
   def project_log = 'eureka-server-1.0.0.log'
   def project_home = 'app-centre/eureka-server'
   def vm_ip = 'xxx.xxx.xxx.xxx'
   def vm_port = '22'
   def vm_user = 'root'
   //代码获取
   stage('Preparation') { // for display purposes
	  git branch: 'dev',
	  url:'https://xxxxxxx.git'
   }
   //构建
   stage('Build') {
      // Run the maven build
      if (isUnix()) {
         sh "mvn -Dmaven.test.skip=true clean package"
 
      } else {
         bat(/mvn -Dmaven.test.skip=true clean package/)
      }
   }
   
   //移动
   stage('MV') {
     sh "mv ${project_home}/target/${project_name} /usr/local/src/"
   }
   
   //上传到服务器
   stage('Upload VM') {
     sh "scp -P ${vm_port} /usr/local/src/${project_name} ${vm_user}@${vm_port}:/usr/local/src/bk"
	 //sh "ssh -p ${vm_port} ${vm_user}@${vm_ip} 'nohup java -jar /usr/local/src/${project_name} >> ${project_log} '"
   }
   
   
  //运行JAR包
  stage('Run') {
	 //sh "if (ps -ef| grep java|grep ${project_name})then (ps -ef| grep java|grep ${project_name}| awk '{print \$2}'|xargs kill -9) fi"
     sh "ssh -p ${vm_port} ${vm_user}@${vm_ip} 'nohup java -jar /usr/local/src/${project_name} >${project_log} 2>&1 &'"
  }
}

脚本步骤为

1.Preparation 拉取代码

2.Build 编译打包

3.MV 移动到指定目录

4.Upload VM 上传 jar包到虚拟机

5.Run 运行远程服务器Jar包

注意事项:

需要在脚本上直接将Jar上传到服务器必须配置ssh公钥私钥,配置步骤为:

进入服务器Root目录

  1. 输入命令:cd .ssh进入rsa公钥私钥目录(清空旧秘钥)
  2. 在当前目录下执行ssh-keygen -t rsa,三次回车后生成新的公钥(id_rsa.pub)私钥(id_rsa)文件(每个节点都要重新生成)
  3. 在主节点上执行命令:cat id_rsa.pub >> authorized_keys把公钥内容拷贝到该文件中
  4. 登录其它节点,把其它节点的公钥都拷贝到主节点的authorized_keys文件中(需要输入密码)
### 使用 Jenkins 部署基于 Gradle 构建的 Spring Boot 项目 为了实现通过 Jenkins 部署基于 Gradle 构建的 Spring Boot 应用程序,可以按照以下方法设计一个完整的 Jenkins Pipeline 脚本。 #### 基础概念 Jenkins Pipeline 提供了一种灵活的方式来定义持续集成和部署流程。它允许开发者编写类似于代码的脚本来控制构建过程,并将其存储在版本控制系统中以便于管理和协作[^1]。 #### 完整的 Jenkinsfile 示例 下面是一个用于构建、测试并最终部署 Spring Boot 应用程序的 `Jenkinsfile`: ```groovy pipeline { agent any environment { // 设置环境变量 GRADLE_OPTS = "-Dorg.gradle.daemon=true" APP_NAME = "spring-boot-app" } stages { stage('Checkout') { steps { git branch: 'main', url: 'https://github.com/example/spring-boot-project.git' } } stage('Build') { steps { script { echo "Building ${APP_NAME}..." sh "./gradlew build --info" } } } stage('Test') { steps { script { echo "Running tests for ${APP_NAME}..." sh "./gradlew test" } } } stage('Package') { steps { script { echo "Packaging ${APP_NAME}..." sh "./gradlew bootJar" } } } stage('Deploy') { steps { script { echo "Deploying ${APP_NAME}..." sshPublisher( publishers: [ sshPublisherDesc( configName: 'production-server', transfers: [ sshTransfer( sourceFiles: "build/libs/${APP_NAME}-*.jar", remoteDirectory: "/opt/apps/" ) ], usePromotionTimestamp: false, verbose: true ) ] ) } } } } post { success { echo "${APP_NAME} has been successfully deployed." } failure { echo "Failed to deploy ${APP_NAME}. Please check the logs." } } } ``` #### 关键点解析 1. **Git Checkout**: 在第一个阶段 (`stage`) 中,使用 Git 插件拉取最新的源码到工作区。 2. **Gradle Build**: 利用 Gradle 的命令来编译应用程序以及运行单元测试。这里调用了 `./gradlew build` 和 `./gradlew test` 来完成这些操作[^3]。 3. **打包应用**: 使用 `bootJar` 或者其他适合的方式生成可执行 JAR 文件。 4. **远程服务器部署**: 运用 SSH Publisher Plugin 将生成的应用包传输至目标生产环境中指定目录下。 以上配置展示了如何利用 Jenkins Pipelines 自动化整个开发周期中的不同环节,从代码检出直到最后一步的实际部署。 #### 注意事项 - 确保安装好必要的插件如 Git Plugin 和 SSH Publisher Plugin。 - 正确设置 SSH 密钥认证机制以支持无密码登录到目标机器上。 - 如果有额外的安全需求,则可能还需要考虑容器化解决方案比如 Docker,在隔离环境下执行任务[^4]。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值