Github Actions全方位演示

2019/8 ——推出的新功能。

可以完全替代掉好基友Travis CI来完成github项目的CI/CD操作了。


1.新建一个项目

 

2.Actions基础介绍:

 

这里给了一些推荐的流程,比如Nodejs等。

这里还是使用自定义流程:

这里什么都不修改,直接点击提交代码:

Actions已经正在运行了:

然后回过头再看看这个CI执行了什么东西:

1. 先给这个流程命名为CI:

2.on:决定它什么时候触发:

3. 然后是触发的是具体的jobs:

jobs可以写多项,这里只写了一项build.

runs-on表示在什么系统下运行的,这里指定的是ubuntu,github给我们提供了默认的几个。

然后steps指定具体的步骤,每个 - 代表一步:

第一步是checkout把代码下载下来,第二步是运行一行简单的shell脚本,第3步是运行多行shell脚本。


 3. Actions的各种用法:

 

这里是actions的语法文档:

文档:传送门

(这一列很有意思)

通过actions的文档可以大体看出主要分为3类:

  1. name: 命令actions为什么名字
  2. on: 什么时机下触发我们的任务
  3. jobs: 具体触发的任务

来看看actions的各种用法:

主分支的src下发生了改动提交了代码就触发当前流程。

schedule: 和提交代码相互独立,写schedule就不能写push,原因是schedule是指定了固定时间去触发。(cron可以看我的cron博客)

jobs:

name: 可以给任务一个名字:

need: 指当前job执行之前需要等待指定的job执行完成

runs-on: 当前运行的流程在什么系统下去运行

 

steps: 指定运行什么步骤:

一般拉取代码需要这样:

当然太繁琐了,所以github提供了类似这样的:

这个是怎么做到的?

不得不提uses参数:

官网讲的很清楚了,uses参数可以接多种类型,最常用的类型是接另一个代码仓库。

比如

意思就是github上有个用户叫actions(github actions官方账号),有个仓库就叫checkout,仓库里写好了一些流程把代码下载下来等,这里我们可以直接复用它的流程。

默认的机器是没有node和java这样的环境,github给我们提供了这些语言的默认流程:

这里有各种语言的,比如docker:

语言环境actions yml参考:

https://github.com/actions/starter-workflows/tree/master/ci

就可以参考这个怎么写的:

 来看看nodejs它怎么写的:

运行了uses: actions/setup-node来设置当前使用nodejs这个库来运行。

 

timout-minutes: 指定超时时间

 

strategy: 指定策略

如上面nodejs的多策略的写法。

uses的工作原理:

 

具体的用法:

 定义了输入和参数、描述。

可以发现并没有下载和安装nodejs的步骤。那怎么做到让当前环境使用nodejs呢?

其实在ubuntu-latest下已经安装了各种语言的环境,可以自己尝试一下打印一下语言的version就知道了。

甚至机器下的每种语言的多版本都安装了,可以通过with -- version来指定具体的版本,不指定就使用默认版本。

其实uses不仅仅限定于引用其他仓库的描述文件,还可以引用当前仓库的action文件和其他仓库的action文件可以接commit标号和release版本或者branch分支的版本。甚至还可以引用docker,但是引用镜像只是运行了docker run,并不是说run 指令在具体的容器中运行,这里不是在容器中运行,而是在分配的机器中运行。那么怎么在容器中运行呢?

下面的container指令就是答案:

关于docker的高级用法:

比如:

所以在container下使用docker才是正确用法而不是在uses下。

 

最后再来看services:

 它就是运性一个job的service,下面可以运行镜像。

 

具体用法就自己查阅吧,其实官方文档才是最权威的,而且示例给的很清楚,就不再废话了。

- run: | 
    xxxxx
    xxx

不加竖线,只能写一行脚本.加了就可以写多行

如果执行的流程中设计到密码等比较敏感的信息可以添加secrets:

 

 

 然后查看日志,看到是***,具体的是没有显示的,这时因为开源项目的actions日志是可以被别人看到的,但实际上变量实际上已经写进去了是可用的。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章