在新流水线使用 Java 应用演示

目标:用 Docker 的方式搭建一个 Java Spring Boot 应用。本项目代码维护在 https://github.com/DaoCloud-Labs/spring-boot-demo 项目中。您可以在 GitHub 找到本项目并获取本文中所提到的所有代码文件。

 


 创建 Spring Boot 项目

访问 http://start.spring.io 站点,根据需要建立自己的应用。

首先,我们建立一个基于 Spring Boot 的 Web 应用。填写完项目信息后,在 Dependencies 中选择 Web ,然后点击 Generate Project 按钮,默认下载一个基于 Maven 的项目模板。

添加项目代码

在LabsDemoApplication.java 文件中,添加一个方法,加上 @RequestMapping  注解,并添加类注解 @RestController 

@SpringBootApplication
@RestController
public class LabsDemoApplication {

public static void main(String[] args) {
SpringApplication.run(LabsDemoApplication.class, args);
}

@RequestMapping("")
public String hello() {
return "Hello! Docker!";
}
}

运行程序,打开浏览器,或者使用 curl 访问如下地址:

http://127.0.0.1:8080

如果成功的话,您将会看到  Hello! Docker!  的 文字。
接下来,我们一起来看看如何将这个应用以  docker 的方式通过 DaoCloud 进行构建。

添加 Dockerfile

在此我们推荐安全构建的方式,能够更好的保护您的源码。首先在应用根目录下建立 Dockerfile-package 文件,内容如下:

FROM maven:3.5.0-jdk-8-alpine

LABEL maintainer "misha"

WORKDIR /project
ADD . /project

RUN mvn package -Dmaven.test.skip=true
CMD ["mvn"]

 因为 Spring Boot 框架打包的应用是一个包含依赖的 jar 文件,内嵌了 Tomcat 和 Jetty 支持,所以我们只需要使用包含 Java 的 Maven 镜像即可。写好打包文件后,接着我们编写 Dockerfile-publish 文件:

FROM java

LABEL maintainer "misha"

COPY /project/target/labs-demo-0.0.1-SNAPSHOT.jar /usr/src/myapp/labs-demo-0.0.1-SNAPSHOT.jar

WORKDIR /usr/src/myapp/

ENTRYPOINT java -jar labs-demo-0.0.1-SNAPSHOT.jar

DaoCloud Services 使用小技巧:

在 pom.xml 文件中加入Nexus daocloud 可以优化流水线的速度哦!

<repositories>
	<repository>
		<id>nexus-daocloud</id>
		<name>Nexus daocloud</name>
		<url>http://nexus.daocloud.io/repository/maven-public/</url>
	</repository>
</repositories>

接下来我们开始正式进入 DaoCloud Services 的世界吧!

DaoCloud Services 使用示例

创建新项目

通过 Github / Gitlab / Bitbucket / Coding 绑定代码源或者通过 Git 地址进行代码源设置。点击创建新项目选择之前 fork 的代码仓库(https://github.com/DaoCloud-Labs/spring-boot-demo)或者通过 Git 地址进行代码源设置,点击 开始创建。

 

设置流水线

回到我们的构建项目页,可以看到如下界面:

选择“流程定义”进行设置,在这里默认可以看到三个阶段:测试阶段、构建阶段和发布阶段,在每个阶段中您可以自定义需要的任务,详情请参考使用流水线持续发布应用

接下来,我们来具体看一下流水线应该如何定义!

  • 测试阶段

流水线支持对每个阶段进行操作,点击“测试阶段”右侧的“...”可以为阶段添加任务、重命名阶段名、在左/右侧添加新阶段、删除阶段:

选择“增加任务”或者“添加并行任务”,可以通过任务模板快捷创建该阶段新的任务。

点击添加任务,选择您需要的任务添加到您的流水线中。

示例使用 Sonar 进行代码审查,在此选择 Maven 测试:

点击“ Maven测试 ”右侧的小齿轮图标,可以编辑和删除任务:

点击编辑任务,界面如下:

我们将 Sonar 相关配置填写进去(在此需要关联 Sonar 服务端,便于将代码质量审核报告推送及显示):

当流水线的该 Maven 任务被自动或手动触发后,会执行静态代码质量审查以及生成测试覆盖率报告,运行成功后可登陆 Sonar 的 Dashboard 查看审核结果:

Sonar 的具体配置参见官方文档:SonarQube

  • 构建阶段

在此示例我们采用安全构建:

在配置中选择我们前述写好的Dockerfile 进行构建:

在安全构建阶段,需要从构建准备的结果中提取 jar 文件,因此在“文件提取”一栏中需要知名目标文件路径。

触发条件默认为任意分支或标签的提交,当然,您可以根据自己的需求自定义触发条件:

  • 部署到 DCE

在发布阶段点击添加并行任务,按照您的需求快速选择发布目标:

此时选择手动执行或任何更新代码都会触发“流水线”实现自动测试、构建和部署!

在流程定义页面,设置好的完整流水线逻辑会清晰的展现在您的眼前!

流水线开始工作之后,可以在执行记录页面随时查看流水线执行情况、状态及日志。

到这里,流水线基本配置完成,当然,您可以按照自己的需要创建并行任务,一切由您掌控。


欢迎来到 DaoCloud Services 的世界,这里有您意想不到的精彩!