CI/CD2daocloud

Posted 码农编程录

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了CI/CD2daocloud相关的知识,希望对你有一定的参考价值。


1.

官网:https://www.daocloud.io/,用关联github登录。如下生成springboot项目的网站:https://start.spring.io/。选择如下:

如下只添加web依赖即可。

如上项目生成压缩包,剪切到桌面进行解压,并用idea打开,并点击idea中提示的Enable Auto-import。如下DaocloudApplication.java是默认有的,MyController.java和MySrc.java是自己添加的。

//MySvc.java
package com.example.daocloud;
import org.springframework.stereotype.Service;

@Service
public class MySvc {
    public int add(int a,int b){
        return a+b;
    }
}
//MyController.java
package com.example.daocloud;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.ResponseBody;

@Controller
@ResponseBody
public class MyController {
    @Autowired
    MySvc mySvc;
    @GetMapping("/")
    public String index(){
        return "hello spring boot";   //首页
    }
    @GetMapping("/add")
    public String add(int a, int b ){
        return mySvc.add(a,b)+"";  //最后加双引号是将数字变为字符串
    }
}


如上运行后,浏览器输入如下。

如下测一下接口。

如上就是两个http接口(/,/add)和一个服务接口(DaocloudApplication.java),如下添加测试接口在test文件夹下。

package com.example.daocloud;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;

@RunWith(SpringRunner.class)
@SpringBootTest
public class DaocloudApplicationTests {
	@Autowired
	MySvc mySvc;  //对服务进行测试,只要测试mySvc
	@Test
	public void addTest() { //测试用例
		int res = mySvc.add(772,119);
		assert  res == 891;
	}
	@Test
	public void addTest2() {
		int res = mySvc.add(556,119);
		assert  res == 675;
	}
}

在GitHub上创建空的名为daocloud的仓库。

如下在daocloud官网中创建项目,关联github上项目,点击开始创建后就进入cicd的配置流程,点击前往流程定义。

2.测试

点击如上的开始创建后就进入cicd的配置流程了:点击如下测试任务,里面写mvn test。这个测试阶段不通过,不会到构建阶段,构建阶段主要目的是想要将项目生成docker镜像以便于后面的部署。

mvn test这个测试任务是在云端自动帮我们完成,云端并没有安装maven,云端是基于docker镜像的,改为如下。

3.构建

点击默认构建任务,在项目中直接创建Dockerfile文件即本地创建Dockerfile如下。在idea控制台运行如下第4行会在target文件夹下生成jar包,后面会将这个jar包拷贝到java 8 镜像的根目录下重命名为app.jar,最后CMD是启动指令。

FROM maven:3 AS bd
WORKDIR /code
COPY ./ /code
RUN mvn package -Dmaven.test.skip=true

FROM java:8
COPY --from=bd /code/target/*.jar /app.jar
CMD java -jar /app.jar

在idea控制台中重新add,commit,push更新远程代码。再回到如下构建任务页面。

如下返回流程定义页面,点击如下手动触发。

如下可以点进去查看。

如下先将项目代码拷贝到云端的一台机器上,加载了自己的默认配置文件,拉取了在测试时配置好的maven3镜像,真正运行配置了mvn test(下载了springboot依赖,时间长)。

如下镜像构建完后,需要上传到daocloud的官方仓库上。


点击如下镜像。

如下设为公开,docker pull就不用进行登录。

如下解决上面的不自动化,点击导入主机,添加新主机。

如下可以运行虚拟机里的系统,用crt连接虚拟机里系统,输入下面脚本。

点击如上查看主机出现如下。

4.发布

如下在流程定义中添加发布阶段。


应用就是将镜像部署到自由主机上。点击左侧应用中 - 创建应用 - 部署最新版本。


如上点击立即部署,开启了tomcat服务。


如下创建子网穿透。



回到项目中点击添加发布任务,发布到自由主机。

修改了idea中代码并重新add,commit,push,通过提交代码方式重新触发了流程。

总结:本地修改代码 == 推送托管仓库 == DaoCloud 监听仓库变化,拉取最新代码 == 执行 CI:添加依赖,代码测试,将代码打包入docker并重新构建镜像 == 执行 CD:生产机监听 DaoCloud 变化,拉取镜像并构建容器。

以上是关于CI/CD2daocloud的主要内容,如果未能解决你的问题,请参考以下文章

VSCode自定义代码片段——CSS选择器

谷歌浏览器调试jsp 引入代码片段,如何调试代码片段中的js

片段和活动之间的核心区别是啥?哪些代码可以写成片段?

VSCode自定义代码片段——.vue文件的模板

VSCode自定义代码片段6——CSS选择器

VSCode自定义代码片段——声明函数