乐趣区

关于java:Github-Action-快速上手指南

前言

各位读者,新年快乐,我是过了年匆忙赶回上海致力搬砖的蛮三刀。

Github 之前更新了一个 Action 性能(应该是很久以前了),能够实现很多自动化操作。用来代替用户本人设置的自动化脚本(比方:钩子 +Jenkins)。

因为平时基本不会有需要用到它,毕竟平时都在用公司的 CI/CD 流程,所以始终没有机会玩 Action。

借着春节放假,就本人写个小 Demo 体验一下。

本文通过实现一个 提交代码后主动执行 Junit 单元测试并输入测试报告的自动化流程 小 Demo,来疾速上手 Github Action。

Github Action 是什么?

如果你对 Github Action 齐全没有概念,我举荐先去看一下 CI/CD(继续集成 / 继续交付)的概念:

https://www.redhat.com/zh/top…

Github Action 官网文档中对本身的定义:

在 GitHub Actions 的仓库中自动化、自定义和执行软件开发工作流程。您能够发现、创立和共享操作以执行您喜爱的任何作业(包含 CI/CD),并将操作合并到齐全自定义的工作流程中。

用人话说,就是你能够给你的代码仓库部署一系列自动化脚本,在你进行了提交 / 合并分支等操作后,主动执行脚本。

阮一峰 Github Action 指南中的介绍:

大家晓得,继续集成由很多操作组成,比方抓取代码、运行测试、登录近程服务器,公布到第三方服务等等。GitHub 把这些操作就称为 actions。

很多操作在不同我的项目外面是相似的,齐全能够共享。GitHub 留神到了这一点,想出了一个很妙的点子,容许开发者把每个操作写成独立的脚本文件,寄存到代码仓库,使得其余开发者能够援用。

如果你须要某个 action,不用本人写简单的脚本,间接援用别人写好的 action 即可,整个继续集成过程,就变成了一个 actions 的组合。这就是 GitHub Actions 最特地的中央。

GitHub Actions 有一些本人的术语:

  • workflow(工作流程):继续集成一次运行的过程,就是一个 workflow。
  • job(工作):一个 workflow 由一个或多个 jobs 形成,含意是一次继续集成的运行,能够实现多个工作。
  • step(步骤):每个 job 由多个 step 形成,一步步实现。
  • action(动作):每个 step 能够顺次执行一个或多个命令(action)。

看这些介绍和定义,其实比拟干燥,咱们间接来看代码实现,在代码中来了解这些定义和指令。

疾速上手

给仓库创立新文件夹.github/workflow

首先,用你本人的任意 GitHub 仓库,在仓库内增加文件夹.github/workflow 或者.github/workflows

一个库能够有多个 workflow 文件。GitHub 只有发现.github/workflows 目录外面有.yml 文件,就会主动运行该文件。

撰写你的 workflow

一个 yml 脚本便是 Action 的外围了,咱们新建一个blank.yml,内容如下:

我在代码里做了一些正文,帮忙大家了解每个指令的含意。

整个脚本大抵的流程如下:

  • 指定在 push 或者 pull request 时触发脚本执行
  • 拉取 ubuntu 最新版的镜像
  • 缓存 Maven 依赖目录,防止每次都下载全量依赖包,放慢执行速度
  • 装置 Java8
  • 指定 pom.xml 文件门路,随后用 Maven 编译我的项目
  • 运行 Junit 单元测试

给我的项目撰写单元测试代码

ok,写完脚本,咱们须要来编写一些测试代码,让 Junit 有事可做。

我应用了本人的一个仓库,下面有残缺的 action 脚本和测试类代码,供参考:

https://github.com/qqxx6661/a…

这是一个 Maven 仓库,咱们在 test 文件夹内退出测试代码。

下面的测试代码测试的是上面的一个静态方法:

提交代码,触发 Github Action 执行

将代码 commit 并 push 后,点开你的仓库主页,点击 Action 标签:

能够看到曾经有了执行信息。

接着看下咱们的 Action 到底有没有执行,点开 Action 标签,曾经发现了 Junit:

能够进行脚本代码的在线编辑:

点进本次 commit 执行的记录,能够看到,action 顺利完成了几个步骤:

点开 Maven 的构建日志,能够看到咱们第一次跑 action,所有的依赖还是即时下载的:

单元测试运行的日志输入失常:

为了试验 Maven 的依赖包是否可能应用到缓存,咱们再写几个单元测试,而后 commit:

能够看到,新的 action 日志里间接开始了编译,不再须要下载全量的包:

单元测试页胜利执行:

至此,咱们的繁难入门教程便完结了。

还有很多性能期待摸索

当然,这还只是 Action 的冰山一角,其能做的事件远不止于此:

  • 编译打包代码
  • 主动上传至私有云 /App 容器
  • 单元测试 / 代码覆盖率测试 / 文档同步 / 公布版本

等着你们的摸索。

参考

https://docs.github.com/cn/ac…

http://www.ruanyifeng.com/blo…

关注我

我是一名奋斗在一线的互联网后端开发工程师。

平时次要关注后端开发,数据安全,边缘计算等方向,欢送交换。

各大平台都能找到我

  • 微信公众号:后端技术漫谈
  • Github:@qqxx6661
  • CSDN:@蛮三刀把刀
  • 知乎:@后端技术漫谈
  • 掘金:@蛮三刀把刀
  • 腾讯云 + 社区:@后端技术漫谈
  • 博客园:@后端技术漫谈
  • BiliBili:@蛮三刀把刀

原创文章次要内容

  • 后端开发实战
  • 后端技术面试
  • 算法题解 / 数据结构 / 设计模式
  • 生存感悟

集体公众号:后端技术漫谈

如果文章对你有帮忙,求各位大佬点赞反对一下,你的点赞和在看是我更新的能源~

退出移动版