Jenkins---部署Spring Cloud项目

1.前期准备

1.1 环境准备

搭建docker,搭建k8s集群,
搭建maven私服Nexus,
搭建Harbor,
搭建Jenkins,并且系统配置已经配置k8s云
在这里插入图片描述
准备springCloud项目。

1.2 上传Maven仓库jar包到Nexus

参考之前的文章《Jenkins—批量上传Maven仓库jar包到Nexus》

2.SpringCloud项目框架

2.1Dockfile

用于构建docker镜像(每个需要构建的项目都需要配置,放在所在项目的根目录下)
在这里插入图片描述

2.2 pom文件

在root的pom文件添加以下内容

	<!--默认使用Nexus私服,避免连接国外的Maven仓库下载 -->
	<repositories>
		<repository>
			<id>nexus_public</id>
			<url>http://Nexus的ip:端口/repository/上传的目录/</url>
			<releases>
				<enabled>true</enabled>
			</releases>
			<snapshots>
				<enabled>true</enabled>
			</snapshots>
		</repository>
	</repositories>
	<!--默认使用Nexus私服 -->
	<pluginRepositories>
		<pluginRepository>
			<id>nexus_public</id>
			<url>http://Nexus的ip:端口/repository/上传的目录/</url>
			<releases>
				<enabled>true</enabled>
			</releases>
			<snapshots>
				<enabled>true</enabled>
			</snapshots>
		</pluginRepository>
	</pluginRepositories>

在这里插入图片描述

<properties>
		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
		<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
		<java.version>1.8</java.version>
		<spring-cloud.version>Greenwich.SR3</spring-cloud.version>
		<admin-server.version>2.1.2</admin-server.version>
		<docker.image.prefix>Harbor地址/项目名</docker.image.prefix>
		<docker.image.tag>${project.version}</docker.image.tag>
	</properties>

每个需要构建的项目下添加以下内容

  <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>

            <plugin>
                <groupId>com.spotify</groupId>
                <artifactId>dockerfile-maven-plugin</artifactId>
                <version>1.4.9</version>
                <executions>
                    <execution>
                        <id>default</id>
                        <goals>
                            <goal>build</goal>
                        </goals>
                    </execution>

                    <execution>
                        <id>package-push</id>
                        <phase>package</phase>
                        <goals>
                            <goal>push</goal>    <!--相当于docker的push命令-->
                        </goals>
                        <configuration>
                            <repository>${docker.image.prefix}/${project.artifactId}</repository><!--要push的镜像名,,镜像重命名,构建完成自push-->
                            <tag>${docker.image.tag}</tag><!--通过tag来区分每次构建的镜像 -->
                        </configuration>
                    </execution>

                </executions>
                <configuration>
                    <useMavenSettingsForAuth>true</useMavenSettingsForAuth>
                    <repository>${docker.image.prefix}/${project.artifactId}</repository>
                    <tag>${docker.image.tag}</tag>
                    <contextDirectory>${project.basedir}</contextDirectory>
                    <googleContainerRegistryEnabled>false</googleContainerRegistryEnabled>
                    <buildArgs>
                        <JAR_FILE>${project.build.finalName}.jar</JAR_FILE>
                    </buildArgs>
                </configuration>
            </plugin>
        </plugins>
    </build>

2.3 k8s文件

每个需要构建的项目都需配置
在根目录下统一管理:
在这里插入图片描述
在这里插入图片描述在这里插入图片描述

2.4 Jenkinsfile文件

流水线项目才会用到
在这里插入图片描述
在这里插入图片描述

2.5 eureka端口

在这里插入图片描述

3.Maven方式部署(方案一)

3.1 新建maven项目

在这里插入图片描述
在这里插入图片描述

3.2 General设置

只保留一个历史构建
在这里插入图片描述

3.3 源码管理

在这里插入图片描述

3.4 构建前执行的步骤

获取jenkins内置变量作为docker镜像的tag
这里只是在构建前打印出来,方便观察
在这里插入图片描述
点击“可用的环境变量列表”,可查询到jenkins所有的内置变量
在这里插入图片描述

3.5 构建

在这里插入图片描述

clean package -Ddocker.image.tag=$BUILD_NUMBER

项目打jar包时,自动构建镜像,镜像的tag替换为jenkins内置变量,构建完成自动推送到Harbor(pom文件已经配置)

3.6 构建成功后的操作,k8s的部署操作

按照服务的启动顺序,依次添加服务对应yaml文件
在这里插入图片描述

3.7 项目构建

在这里插入图片描述

4.流水线(方案二,推荐使用)

脚本都是写在Jenkinsfile里,便于项目的迁移。
可以看到流水线各个阶段的执行状态,如下
在这里插入图片描述

4.1 项目构建

在这里插入图片描述在这里插入图片描述

4.2 General设置

只保留一个历史构建
在这里插入图片描述
构建触发器,高级项目选项可以不填

4.3 流水线

在这里插入图片描述

4.4 流水线文件中的内容

流水线文件格式:
顶层是pipeline
tools引入环境工具类
接着是stages
stage代表流水线中每一环的作业内容
steps中的操作内容通过流水线语法片段生成器生成
在这里插入图片描述

4.5 流水线脚本生成

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
按照服务的启动顺序,依次生成部署到K8s的流水线脚本
在这里插入图片描述

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Jenkins可以用于部署Spring Cloud项目。根据引用\[1\]中提到的方案,可以使用Jenkins + Docker + Spring Cloud的集群部署流程来实现。首先,需要搭建一个Docker服务器,并进行配置。然后,修改所有微服务的配置,包括eureka、admin、gathering和zuul等。接下来,在Jenkins中创建一个流水线项目,并安装Extended Choice Parameter插件。通过配置构建参数,可以实现多服务器远程发布。在项目配置中,需要修改Docker配置以信任Harbor私服地址。然后,编写部署脚本,并进行构建测试。最后,可以使用Nginx+Zuul实现高可用网关,通过在web2-server服务器上安装nginx并修改配置文件来实现。\[2\]\[3\] #### 引用[.reference_title] - *1* [Jenkins---部署Spring Cloud项目](https://blog.csdn.net/qq_40823910/article/details/106197154)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* *3* [Jenkins 微服务持续集成之集群部署(SpringCloud微服务)(六)](https://blog.csdn.net/m0_59430185/article/details/123296947)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值