jenkins启动部署springcloud项目

本文介绍了如何使用Jenkins搭建项目,通过Git拉取代码、Maven构建并利用Docker启动容器的过程,适合DevOps初学者参考。

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

1.安装并且启动Jenkins:
下载jenkins的war包,
启动命令:

nohup java -jar jenkins.war --httpPort=8088 >output 2>&1 &

2.在服务器主机配置号,JDK,GIT,MAVEN三个环境,不赘述。

3.登录jenkins创建Freestyle Project,如图:
在这里插入图片描述

4.其他的不用管,直接拉到后面的“构建”模块,选择“执行shell”,如图:
在这里插入图片描述
5.然后填入shell指令:在这里插入图片描述

指令编码,如下:

cd /var/jenkins_home/workspace/cloud-shared-flight && git pull && mvn -X clean install -Dmaven.test.skip=true && cd /opt/docker && docker-compose --compatibility up --detach --build

解析指令:cd打开git拉取的项目目录处,git pull 拉取更新默认分支的代码,mvn 打包项目,然后转到docker-compose 根目录进行容器启动目录(这个步骤看各自需要,我用的是docker容器部署的,如果是普通的jar启动就直接java -jar启动需要启动的jar包即可)。

在使用 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。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

迪八戈

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值