本帖最后由 我是楠楠 于 2020-4-30 10:38 编辑
【郑州校区】SpringBoot+GitLab+Docker+Jenkins实现持续集成 三
5. 编写SpringBoot项目 Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程。该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置。通过这种方式,Spring Boot致力于在蓬勃发展的快速应用开发领域(rapid application development)成为领导者。 接下来我们来编写一个最简单的SpringBoot入门项目。 5.1. POM文件[AppleScript] 纯文本查看 复制代码 <?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 [url=http://maven.apache.org/xsd/maven-4.0.0.xsd]http://maven.apache.org/xsd/maven-4.0.0.xsd[/url]">
<modelVersion>4.0.0</modelVersion>
<groupId>com.itheima</groupId>
<artifactId>springboot_jenkins01</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>jar</packaging>
<!--所有的springboot工程都必须继承spring-boot-starter-parent-->
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.0.6.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<java.version>1.8</java.version>
</properties>
<dependencies>
<!--web功能的起步依赖-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
5.2. 核心配置文件application.properties 由于我们是基础入门项目,所以我们只需要新建一个application.properties文件放在resources目录下(当然不放置也是可以的),内容为空即可。 5.3. Controller类[AppleScript] 纯文本查看 复制代码 package com.itheima.controller;
import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class QuickController {
@GetMapping("/quick")
public String quick(){
return "欢迎使用 springboot !Jenkins";
}
}
5.4. 引导类[AppleScript] 纯文本查看 复制代码 package com.itheima;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class SpringbootQuickApplication {
public static void main(String[] args) {
SpringApplication.run(SpringbootQuickApplication.class, args);
}
}
5.5. 运行项目 我们运行引导类的main方法即可运行项目,此时控制台会输出如下日志,注意观察标红的部分,由于我们并没有进行任何的配置,项目自动运行在了端口号为8080的tomcat中,项目名也默认为“”。 5.6. pom_docker_registry.xml 由于我们接下来会使用Jenkins把项目打包成Docker镜像,我们需要添加一个专门用于Docker的pom文件。内容为如下代码块: [AppleScript] 纯文本查看 复制代码 <?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 [url=http://maven.apache.org/xsd/maven-4.0.0.xsd]http://maven.apache.org/xsd/maven-4.0.0.xsd[/url]">
<modelVersion>4.0.0</modelVersion>
<groupId>com.itheima</groupId>
<artifactId>springboot_jenkins01</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>jar</packaging>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.0.6.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<java.version>1.8</java.version>
</properties>
<dependencies>
<!--web功能的起步依赖-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
</dependencies>
<build>
<finalName>${project.artifactId}-${project.version}</finalName>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
<plugin>
<groupId>com.spotify</groupId>
<artifactId>docker-maven-plugin</artifactId>
<version>1.0.0</version>
<!--docker镜像相关的配置信息-->
<configuration>
<!--镜像名,这里用工程名-->
<imageName>${project.artifactId}-${project.version}</imageName>
<!--Dockerfile文件所在目录-->
<dockerDirectory>
${project.basedir}/src/main/resources
</dockerDirectory>
<!--TAG,这里用工程版本号-->
<imageTags>
<imageTag>${project.version}</imageTag>
</imageTags>
<registryUrl>192.168.25.130:5000</registryUrl>
<pushImage>true</pushImage>
<imageName>
192.168.25.130:5000/${project.artifactId}:${project.version}
</imageName>
<!--构建镜像的配置信息-->
<resources>
<resource>
<targetPath>/</targetPath>
<directory>${project.build.directory}</directory>
<include>
${project.artifactId}-${project.version}.jar
</include>
</resource>
</resources>
</configuration>
</plugin>
</plugins>
</build>
</project> 5.7. 配置Dockerfile在resources目录下创建Dockerfile文件,该文件用于构建docker镜像,文件名称必须是Dockerfile。 [AppleScript] 纯文本查看 复制代码 FROM java:8
ENV ARTIFACTID springboot_jenkins01
ENV ARTIFACTVERSION 1.0-SNAPSHOT
ENV HOME_PATH /home
WORKDIR $HOME_PATH
ADD /$ARTIFACTID-$ARTIFACTVERSION.jar $HOME_PATH/$ARTIFACTID.jar
ENTRYPOINT ["java", "-jar", "springboot_jenkins01.jar"] 这一切都准备完毕之后,我们把项目push到上一节搭建好的GitLab中。 6. Jenkins Jenkins是一个开源软件项目,是基于Java开发的一种持续集成工具,用于监控持续重复的工作,旨在提供一个开放易用的软件平台,使软件的持续集成变成可能。 6.1. 安装Jenkins6.1.1. 下载Docker镜像[AppleScript] 纯文本查看 复制代码 docker pull jenkinsci/blueocean
6.1.2. 创建Docker容器[AppleScript] 纯文本查看 复制代码 docker create --name jenkins -u root -p 8889:8080 --privileged=true -v jenkins-data:/var/jenkins_home -v /var/run/docker.sock:/var/run/docker.sock -v /home/jenkins:/home docker.io/jenkinsci/blueocean
6.1.3. 启动Docker容器[AppleScript] 纯文本查看 复制代码 docker start Jenkins
6.1.4. 访问Jenkins6.1.5. 进入容器查看密码[AppleScript] 纯文本查看 复制代码 docker exec -it jenkins /bin/bash
cat /var/jenkins_home/secrets/initialAdminPassword
6.2. 配置Jenkins6.2.1. 插件安装进入Jenkins中,我们可以进行插件的安装,先选择下图第一个选项即可。 6.2.2. 创建用户
6.2.3. 保存进入
6.2.4. 设置JDK、Maven、Git进入【系统管理】,点击【全局工具配置】,设置JDK、Git和Maven,我们可以选择自动安装。 6.2.5. 设置全局凭据根据下图我们设置下全局的凭据,注意此处要设置的是当前CentOS7的用户名和密码
|