Jenkins---部署Spring Cloud项目

1.前期准备

1.1 环境准备

搭建docker,搭建k8s集群,
搭建maven私服Nexus,
搭建Harbor,
搭建Jenkins,并且系统配置已经配置k8s云
Jenkins---部署Spring Cloud项目_第1张图片
准备springCloud项目。

1.2 上传Maven仓库jar包到Nexus

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

2.SpringCloud项目框架

2.1Dockfile

用于构建docker镜像(每个需要构建的项目都需要配置,放在所在项目的根目录下)
Jenkins---部署Spring Cloud项目_第2张图片

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>

Jenkins---部署Spring Cloud项目_第3张图片

<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文件

每个需要构建的项目都需配置
在根目录下统一管理:
Jenkins---部署Spring Cloud项目_第4张图片
Jenkins---部署Spring Cloud项目_第5张图片Jenkins---部署Spring Cloud项目_第6张图片

2.4 Jenkinsfile文件

流水线项目才会用到
Jenkins---部署Spring Cloud项目_第7张图片
Jenkins---部署Spring Cloud项目_第8张图片

2.5 eureka端口

Jenkins---部署Spring Cloud项目_第9张图片

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

3.1 新建maven项目

Jenkins---部署Spring Cloud项目_第10张图片
Jenkins---部署Spring Cloud项目_第11张图片

3.2 General设置

只保留一个历史构建
Jenkins---部署Spring Cloud项目_第12张图片

3.3 源码管理

Jenkins---部署Spring Cloud项目_第13张图片

3.4 构建前执行的步骤

获取jenkins内置变量作为docker镜像的tag
这里只是在构建前打印出来,方便观察
Jenkins---部署Spring Cloud项目_第14张图片
点击“可用的环境变量列表”,可查询到jenkins所有的内置变量
Jenkins---部署Spring Cloud项目_第15张图片

3.5 构建

Jenkins---部署Spring Cloud项目_第16张图片

clean package -Ddocker.image.tag=$BUILD_NUMBER

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

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

按照服务的启动顺序,依次添加服务对应yaml文件
Jenkins---部署Spring Cloud项目_第17张图片

3.7 项目构建

Jenkins---部署Spring Cloud项目_第18张图片

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

脚本都是写在Jenkinsfile里,便于项目的迁移。
可以看到流水线各个阶段的执行状态,如下
Jenkins---部署Spring Cloud项目_第19张图片

4.1 项目构建

Jenkins---部署Spring Cloud项目_第20张图片Jenkins---部署Spring Cloud项目_第21张图片

4.2 General设置

只保留一个历史构建
Jenkins---部署Spring Cloud项目_第22张图片
构建触发器,高级项目选项可以不填

4.3 流水线

Jenkins---部署Spring Cloud项目_第23张图片

4.4 流水线文件中的内容

流水线文件格式:
顶层是pipeline
tools引入环境工具类
接着是stages
stage代表流水线中每一环的作业内容
steps中的操作内容通过流水线语法片段生成器生成
Jenkins---部署Spring Cloud项目_第24张图片

4.5 流水线脚本生成

Jenkins---部署Spring Cloud项目_第25张图片
Jenkins---部署Spring Cloud项目_第26张图片
Jenkins---部署Spring Cloud项目_第27张图片
按照服务的启动顺序,依次生成部署到K8s的流水线脚本
Jenkins---部署Spring Cloud项目_第28张图片

你可能感兴趣的:(Jenkins)