springcloud基于jenkins自动部署

本文介绍了如何利用Jenkins实现SpringCloud项目的自动化部署,包括从SVN拉取代码,运行Maven命令打包,通过Shell脚本启动项目,以及Jenkins的配置,如修改Tomcat字符编码,设置JDK和Maven,安装必要的插件,编写启动脚本,并解决在部署过程中遇到的问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

jenkins运行流程:

1、从SVN拉取代码到 jenkins 

2、运行maven命令clean install,将项目打 jar (war)包 

3、执行shell 脚本,启动项目

下图是我们的项目

两部分:红色是需要运行的项目、绿色是基础项目不需要运行(只需deploy到maven仓库即可)

jenkins下载:http://mirrors.jenkins.io/war-stable/

1、修改tomcat 字符编码

vi jenkins-tomcat/conf/server.xml

<Connector port="8088"  protocol="HTTP/1.1"   connectionTimeout="20000"   redirectPort="8443"  URIEncoding="UTF-8"/>

将下载的 jenkins.war 放到 tomcat,启动,插件默认安装即可

2、系统设置,配置jdk  maven

先同步下系统时间 

1.删除自带的 localtime

rm -rf /etc/localtime

2.创建软链接到 localtime

ln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

yum install -y ntpdate

 ntpdate ntp1.aliyun.com

3、安装插件

安装完成重启jenkins  :  

在使用 Jenkins 部署 Spring Cloud 应用时,需要结合自动构建、镜像打包以及容器化部署等技术。以下是一个完整的部署流程和技术要点: ### 1. 准备Maven配置以支持Spring Cloud依赖 由于某些版本的 Spring Cloud(如 Finchley.RC1 或 Finchley.M9)在 Maven 中央仓库中可能不完整,因此需要明确指定 `spring-cloud-dependencies` 的版本,并确保其与 Spring Boot 版本兼容[^1]。例如: ```xml <dependencyManagement> <dependencies> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-dependencies</artifactId> <version>Finchley.SR2</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement> ``` 此外,还需要确保 `<build>` 配置正确,以便将资源正确打包到 JAR 文件中[^2]: ```xml <build> <resources> <resource> <directory>${basedir}/src/main/resources</directory> <includes> <include>**/**</include> </includes> </resource> </resources> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build> ``` ### 2. 使用Jenkins进行持续集成/持续交付(CI/CD) 在 Jenkins 中配置项目时,需通过 Pipeline 脚本或自由风格项目实现自动部署。以下是基于 Pipeline 的典型脚本结构: ```groovy pipeline { agent any stages { stage('Build') { steps { sh 'mvn clean package' } } stage('Docker Build') { steps { sh 'docker build -t springcloud-app:latest .' } } stage('Docker Push') { steps { sh 'docker login -u admin -p Harbor12345 my-harbor.com' sh 'docker tag springcloud-app:latest my-harbor.com/myproject/springcloud-app:latest' sh 'docker push my-harbor.com/myproject/springcloud-app:latest' } } stage('Deploy to Docker Host') { steps { sshagent(['server-ssh-credentials']) { sh ''' ssh user@docker-host "mkdir -p /opt/app && cd /opt/app && wget http://jenkins-server/job/springcloud-app/lastSuccessfulBuild/artifact/target/springcloud-app.jar" ssh user@docker-host "cd /opt/app && java -jar springcloud-app.jar --spring.profiles.active=prod ''' } } } } } ``` ### 3. 使用Shell脚本自动部署Docker容器 对于更复杂的部署场景,可以编写 Shell 脚本来处理容器的清理、镜像拉取和启动过程。下面是一个示例脚本 `deployCluster.sh` 的简化版: ```bash #!/bin/sh harbor_url=$1 harbor_project_name=$2 project_name=$3 tag=$4 port=$5 profile=$6 imageName="$harbor_url/$harbor_project_name/$project_name:$tag" # Stop and remove existing container containerId=$(docker ps -a | grep "$project_name" | awk '{print $1}') if [ ! -z "$containerId" ]; then docker stop $containerId docker rm $containerId fi # Remove existing image imageId=$(docker images | grep "$project_name" | awk '{print $3}') if [ ! -z "$imageId" ]; then docker rmi -f $imageId fi # Pull new image docker pull $imageName # Run new container docker run -di -p $port:$port $imageName --spring.profiles.active=$profile ``` 此脚本可被 Jenkins 调用,实现自动化的容器更新和重启。 ### 4. Jenkins与Harbor集成 如果企业内部使用 Harbor 作为私有镜像仓库,则 Jenkins部署过程中需要登录并推送镜像至 Harbor。确保 Jenkins 所在主机能够访问 Harbor 并具有相应权限[^3]。 ### 5. 注意事项 - 确保 Jenkins 构建节点上安装了 Maven、Docker 和 Java 运行环境。 - 对于 Spring Cloud 微服务架构,建议为每个微服务单独配置 Jenkins Job 或 Pipeline。 - 若使用集群部署,应考虑负载均衡和服务发现机制,如 Eureka Server 或 Consul。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值