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的主要内容,如果未能解决你的问题,请参考以下文章