文章目录

  • 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相关推荐

  1. 【AI基础】OpenCV,PIL,Skimage你pick谁

    文章首发于微信公众号<与有三学AI> [AI基础]OpenCV,PIL,Skimage你pick谁 如何对图像进行处理是深度学习图像处理的基础,我们常常需要对图像进行读取.保存.缩放.裁剪 ...

  2. eos和以太坊有什么关系_【EOS价格分析】EOS,宇宙,以太坊价格分析:8月6日

    [EOS价格分析]EOS,宇宙,以太坊价格分析:8月6日 比特币是世界上最大的加密货币,在过去几个小时内成功飙升至11.500美元以上.但是,以太坊,EOS和Cosmos等山寨币似乎错过了提示,因为它 ...

  3. java寻宝算法_【Java 7】今天,你寻宝了吗?

    [Java 7]今天,你寻宝了吗? 背景描述: Dmaven.multiModuleProjectDirectory system property is not set. Check $M2_HOM ...

  4. revit常用土建软件【桩转化】功能,CAD识别转化

    revit常用土建软件[桩转化]功能,CAD识别转化,大家都知道revit建模时,一般都是先完成基础的建模,我们在revit土建软件建模过程中,会将CAD导入的方法以此来提高软件的建模效率. 今天就和 ...

  5. 链游Farmers World【农民世界】爆火,发布一个免费开源的辅助挂机脚本

    初衷 <GameFi爆火,[农民世界]崛起,浅谈链游辅助脚本开发思路> https://blog.csdn.net/CharlesSimonyi/article/details/12141 ...

  6. 屏幕左上角出现【最小化】按钮,鼠标无法点击

    屏幕左上角出现[最小化]按钮,鼠标无法点击 操作系统: 联想 win 11 解决方法: 关闭并强制退出[联?想?电?脑?管家],就会消失

  7. 【目标检测】YOLOv3 ,多尺度检测与特征融合

    文章目录 一.YOLOv3简介 二.YOLOv3的改进 2.1 新的Backbone网络:DarkNet-53 2.2 多尺度检测 三.YOLOv3的网络结构 四.YOLOv3的优缺点 4.1 优点 ...

  8. 土建翻模【梁转化】功能,CAD识别批量梁生成

    土建翻模[梁转化]功能,CAD识别批量梁生成?上一篇文章讲了墙转化的生成,这次和大家分享土建翻模的梁转化生成.大家都知道,结构梁的识别只会识别两根柱子中间的梁,其它的次梁无法绘制. 在土建翻模中,次梁 ...

  9. revit机电翻模【立管转化】功能,一键完成翻模

    revit机电翻模[立管转化]功能,一键完成翻模.revit机电翻模一般选好样板后绘制排水管道,绘制立管.机电的小伙伴都知道绘制管道,在立面中绘制的管道,还要在平面图调整位置,等等操作.比较的繁琐,那 ...

最新文章

  1. SeaJS基本开发原则
  2. 软件工程综合实践阶段小结(2)
  3. list dict 性能测试
  4. Algorithms学习笔记-Chapter0序言
  5. linux 7.0查看防火墙状态,centos7查看防火墙状态
  6. 简单了解static
  7. centos 下安装配置nfs服务器
  8. 安卓能硬改的手机机型_【每日新闻】小米11部分镜头参数爆料;华为重新采购手机零部件 重启4G手机生产...
  9. linux的initrd.img的解压和打包
  10. delphi framerect 画透明_闭上眼睛一起进入彩色画的梦境,幻彩花精灵,彩铅手绘教程...
  11. 线程的五大状态及转换
  12. 如何断点调试Tomcat源码
  13. [转载]windows 7 IIS 7.5 ASP.Net 文件上传大小限制
  14. linux安装audit软件,linux audit工具
  15. 键盘侠小心了!微博或将推出“杠精”示众功能
  16. 论文翻译:2021_MetricGAN+: An Improved Version of MetricGAN for Speech Enhancement
  17. 分享16个经典面试问题回答思路
  18. Debian10自签CA证书
  19. Laravel 数据库
  20. python--孪生素数

热门文章

  1. OC中数组排序的3种方法
  2. kdevelp 导入makefile工程
  3. 2007年10月14日的日记
  4. Android与Linux以及GNU的关系
  5. 演练GridView控件显示目录图片
  6. mysql55和57的区别_技术分享 | MySQL:count(*)、count(字段) 实现上区别
  7. python抓取数据库_Python-7.爬取大量数据存入数据库
  8. vuex刷新页面数据丢失怎么解决_你是否真正了解Vuex
  9. 原生js删除html,原生js操作dom添加删除替换class
  10. C语言学习之输出“魔方阵”。所谓魔方阵是指这样的方阵,它的每一行、每一列和对角线之和均相等。