【CI/CD2】actions,daocloud
文章目录
- 1.github的actions:替代了travis,完成github上的cicd的操作
- 1.1 uses:后面可接其他仓库,还可接docker: //alpine: 3.8,注意只是在ubuntu下docker run一镜像,并不是下面的run在容器里运行
- 1.2 container:指定node8这个容器container下,显示8.x,不是ubuntu的node10.x版本
- 1.3 services:可指定基于nginx镜像的服务,点击Actions查看流程
- 1.4 Secrets:执行流程中有涉及到一些密码或敏感信息时,可在github中Settings中添加Secrets
- 2.生成springboot项目并上传github:https://start.spring.io/
- 3.daocloud关联github:https://www.daocloud.io/,用关联github登录注册。创建项目,关联github上的项目,点击开始创建后就进入cicd的配置流程,点击前往流程定义
- 3.1 测试:cicd的配置流程即点击如下测试任务,里面写mvn test。这个测试阶段不通过,不会到构建阶段,构建阶段主要目的是想要将项目生成docker镜像以便于后面的部署
- 3.2 构建:点击默认构建任务,在项目中直接创建Dockerfile文件即本地创建Dockerfile
- 3.3 docker pull:设为公开,docker pull就不用进行登录
- 3.4 发布:前面全是CI,这里CD
- 3.4.1 创建应用:应用就是将镜像部署到自由主机上
- 3.4.2 回到项目添加发布:自由主机就是集群管理中的虚拟机
1.github的actions:替代了travis,完成github上的cicd的操作
如下点击Actions按钮后选择自定义流程。
如上点击后产生如下main.yml文件。
如上点击提交代码后,Actions其实正在运行了。
如下是.yml文件怎么写?三类:name,on(触发时机),jobs(具体任务)。
name:流程命名为,会显示在图像化界面上。
on:[push] push代码时会触发。如下是src下文件发生改动的主分支下提交的代码才会触发当前的流程。
如下是每15分钟执行一次当前流程,有schedule(固定时间触发)就不能写push事件了。
具体触发的任务在jobs下,job1是命名,job2执行前必须是要job1执行完成。
runs-on是枚举类型,必须写如下8种。
steps:- (数组):git clone xxx 这样麻烦,如下uses中actions是github上有一官方用户叫actions,有一个仓库叫checkout,这仓库里面流程就是把代码下载下来【uses参数后面写另一个代码仓库,run参数后面写shell指令】。actions/setup-node@v1配置ubuntu-latest会安装好nodejs,这样下面npm就可用了。
1.1 uses:后面可接其他仓库,还可接docker: //alpine: 3.8,注意只是在ubuntu下docker run一镜像,并不是下面的run在容器里运行
timeout-minutes默认30分钟超时时间,指定超时时间如1分钟,1分钟内没有执行完会强制结束。如下指定3个版本的nodejs分别去测试。
如下是自己写的main.yml文件并执行。
1.2 container:指定node8这个容器container下,显示8.x,不是ubuntu的node10.x版本
1.3 services:可指定基于nginx镜像的服务,点击Actions查看流程
如下nginx容器在当前ubuntu-latest环境下启动起来了。
1.4 Secrets:执行流程中有涉及到一些密码或敏感信息时,可在github中Settings中添加Secrets
开源项目的actions日志可以被看到,所以如下日志打印*,但变量已经写进去了,比如登录其他网站用到密码时候,在这个脚本中其实是可用的。
2.生成springboot项目并上传github:https://start.spring.io/
如上项目生成压缩包,剪切到桌面进行解压,并用idea打开,并点击idea中提示的Enable Auto-import。如下DaocloudApplication.java和DaocloudApplicationTests.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 {@AutowiredMySvc mySvc;@GetMapping("/")public String index(){return "hello spring boot"; //首页}@GetMapping("/add")public String add(int a, int b ){return mySvc.add(a,b)+""; //最后加双引号是将数字变为字符串}
}
如上运行后,浏览器输入如下。
如下添加测试接口在test文件夹下,本机控制台mvn 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 {@AutowiredMySvc mySvc; // 对服务进行测试,只要测试mySvc@Testpublic void addTest() { // 测试用例,点击这行的开始播放按钮int res = mySvc.add(772,119);assert res == 891; // 892测试不通过,控制台报红}@Testpublic void addTest2() {int res = mySvc.add(556,119);assert res == 675;}
}
在GitHub上创建空的名为daocloud的仓库。如下push时出现Permission时将origin用的ssh换成https。
3.daocloud关联github:https://www.daocloud.io/,用关联github登录注册。创建项目,关联github上的项目,点击开始创建后就进入cicd的配置流程,点击前往流程定义
3.1 测试:cicd的配置流程即点击如下测试任务,里面写mvn test。这个测试阶段不通过,不会到构建阶段,构建阶段主要目的是想要将项目生成docker镜像以便于后面的部署
mvn test这个测试任务是在云端自动帮我们完成,云端并没有安装maven,云端是基于docker镜像的,改为如下。
3.2 构建:点击默认构建任务,在项目中直接创建Dockerfile文件即本地创建Dockerfile
// Dockerfile
FROM maven:3 AS bd
WORKDIR /code
COPY ./ /code
RUN mvn package -Dmaven.test.skip=true //会跳过测试,在target文件夹下生成jar包
// 如上利用maven3环境对代码进行打包
// 如下将这个jar包拷贝到java8镜像的根目录下并重命名为app.jar
FROM java:8
COPY --from=bd /code/target/*.jar /app.jar
CMD java -jar /app.jar // CMD是启动指令
在idea控制台中重新add,commit,push添加Dockerfile文件到github(上面3中项目)。再回到如下构建任务页面,点击保存,Dockerfile就是在项目根目录下。
如下返回流程定义页面,点击如下手动触发。
如下可以点进去查看日志。
如下先将github项目代码git clone拷贝到云端的一台机器上,加载了自己.yml默认配置文件,拉取了在测试时配置好的maven3镜像,真正运行配置了mvn test(下载了springboot依赖,时间长)。
如上测试阶段,如下构建阶段,docker build里就是上面Dockerfile内容,镜像构建完后,需要上传到daocloud的官方仓库上。
3.3 docker pull:设为公开,docker pull就不用进行登录
如下就可将镜像部署到自己机器上了。
如下解决上面的不自动化,点击导入主机,添加新主机。
如下用crt连接win上装的虚拟机(需安装docker),输入下面脚本。
如上点击查看主机出现如下。
3.4 发布:前面全是CI,这里CD
如下在流程定义中添加发布阶段。
3.4.1 创建应用:应用就是将镜像部署到自由主机上
点击左侧的应用 - 创建应用 - 部署最新版本,如下ubuntu就是虚拟机。
如下创建子网穿透,可让互联网访问到。
3.4.2 回到项目添加发布:自由主机就是集群管理中的虚拟机
修改了idea中代码并重新add,commit,push,通过提交代码方式重新触发了流程。
在集群管理中点击管理主机,可看见有容器(刚才被发布的)正在运行。
如下还要在应用中删除32768旧隧道,并新建32769新隧道。
执行CI:添加依赖,代码测试,将代码打包入docker并重新构建镜像。执行CD:生产机监听DaoCloud变化,拉取镜像并构建容器。
【CI/CD2】actions,daocloud相关推荐
- 【AI基础】OpenCV,PIL,Skimage你pick谁
文章首发于微信公众号<与有三学AI> [AI基础]OpenCV,PIL,Skimage你pick谁 如何对图像进行处理是深度学习图像处理的基础,我们常常需要对图像进行读取.保存.缩放.裁剪 ...
- eos和以太坊有什么关系_【EOS价格分析】EOS,宇宙,以太坊价格分析:8月6日
[EOS价格分析]EOS,宇宙,以太坊价格分析:8月6日 比特币是世界上最大的加密货币,在过去几个小时内成功飙升至11.500美元以上.但是,以太坊,EOS和Cosmos等山寨币似乎错过了提示,因为它 ...
- java寻宝算法_【Java 7】今天,你寻宝了吗?
[Java 7]今天,你寻宝了吗? 背景描述: Dmaven.multiModuleProjectDirectory system property is not set. Check $M2_HOM ...
- revit常用土建软件【桩转化】功能,CAD识别转化
revit常用土建软件[桩转化]功能,CAD识别转化,大家都知道revit建模时,一般都是先完成基础的建模,我们在revit土建软件建模过程中,会将CAD导入的方法以此来提高软件的建模效率. 今天就和 ...
- 链游Farmers World【农民世界】爆火,发布一个免费开源的辅助挂机脚本
初衷 <GameFi爆火,[农民世界]崛起,浅谈链游辅助脚本开发思路> https://blog.csdn.net/CharlesSimonyi/article/details/12141 ...
- 屏幕左上角出现【最小化】按钮,鼠标无法点击
屏幕左上角出现[最小化]按钮,鼠标无法点击 操作系统: 联想 win 11 解决方法: 关闭并强制退出[联?想?电?脑?管家],就会消失
- 【目标检测】YOLOv3 ,多尺度检测与特征融合
文章目录 一.YOLOv3简介 二.YOLOv3的改进 2.1 新的Backbone网络:DarkNet-53 2.2 多尺度检测 三.YOLOv3的网络结构 四.YOLOv3的优缺点 4.1 优点 ...
- 土建翻模【梁转化】功能,CAD识别批量梁生成
土建翻模[梁转化]功能,CAD识别批量梁生成?上一篇文章讲了墙转化的生成,这次和大家分享土建翻模的梁转化生成.大家都知道,结构梁的识别只会识别两根柱子中间的梁,其它的次梁无法绘制. 在土建翻模中,次梁 ...
- revit机电翻模【立管转化】功能,一键完成翻模
revit机电翻模[立管转化]功能,一键完成翻模.revit机电翻模一般选好样板后绘制排水管道,绘制立管.机电的小伙伴都知道绘制管道,在立面中绘制的管道,还要在平面图调整位置,等等操作.比较的繁琐,那 ...
最新文章
- SeaJS基本开发原则
- 软件工程综合实践阶段小结(2)
- list dict 性能测试
- Algorithms学习笔记-Chapter0序言
- linux 7.0查看防火墙状态,centos7查看防火墙状态
- 简单了解static
- centos 下安装配置nfs服务器
- 安卓能硬改的手机机型_【每日新闻】小米11部分镜头参数爆料;华为重新采购手机零部件 重启4G手机生产...
- linux的initrd.img的解压和打包
- delphi framerect 画透明_闭上眼睛一起进入彩色画的梦境,幻彩花精灵,彩铅手绘教程...
- 线程的五大状态及转换
- 如何断点调试Tomcat源码
- [转载]windows 7 IIS 7.5 ASP.Net 文件上传大小限制
- linux安装audit软件,linux audit工具
- 键盘侠小心了!微博或将推出“杠精”示众功能
- 论文翻译:2021_MetricGAN+: An Improved Version of MetricGAN for Speech Enhancement
- 分享16个经典面试问题回答思路
- Debian10自签CA证书
- Laravel 数据库
- python--孪生素数
热门文章
- OC中数组排序的3种方法
- kdevelp 导入makefile工程
- 2007年10月14日的日记
- Android与Linux以及GNU的关系
- 演练GridView控件显示目录图片
- mysql55和57的区别_技术分享 | MySQL:count(*)、count(字段) 实现上区别
- python抓取数据库_Python-7.爬取大量数据存入数据库
- vuex刷新页面数据丢失怎么解决_你是否真正了解Vuex
- 原生js删除html,原生js操作dom添加删除替换class
- C语言学习之输出“魔方阵”。所谓魔方阵是指这样的方阵,它的每一行、每一列和对角线之和均相等。