源代码:

name: learn-github-actions
on: [push]
jobs:check-bats-version:runs-on: ubuntu-lateststeps:- uses: actions/checkout@v2- uses: actions/setup-node@v2with:node-version: '14'- run: npm install -g bats- run: bats -v

workflow

工作流程是您添加到仓库的自动化过程。

工作流程由一项或多项 jobs 组成,可以计划或由事件触发。

工作流程可用于在 GitHub 上构建、测试、打包、发布或部署项目。

本文例子里,我们创建了一个名称叫做 learn-github-actions 的 工作流。

event

事件是触发工作流程的特定活动。 例如,当有推送提交到仓库或者创建议题或拉取请求时,GitHub 就可能产生活动。 您还可以使用仓库分发 web 挂钩在发生外部事件时触发工作流程。 有关可用于触发工作流程的事件的完整列表,请参阅触发工作流程的事件。

本文例子,on: [push], 意思是有代码 push 到 Github 仓库时,触发该工作流。

Jobs

作业是在同一运行服务器上执行的一组步骤的集合。 默认情况下,包含多个作业的工作流程将同时运行这些作业。 您也可以配置工作流程按顺序运行作业。 例如,工作流程可以有两个连续的任务来构建和测试代码,其中测试作业取决于构建作业的状态。 如果构建作业失败,测试作业将不会运行。

本文例子,定义了一个叫做 check-bats-version 的作业。

steps

步骤是可以在作业中运行命令的单个任务。 步骤可以是操作或 shell 命令。 作业中的每个步骤在同一运行器上执行,可让该作业中的操作互相共享数据。

一个作业可以包含多个步骤。

action 操作

操作是独立命令,它们组合到步骤以创建作业。 操作是工作流程最小的便携式构建块。 您可以创建自己的操作,也可以使用 GitHub 社区创建的操作。 要在工作流程中使用操作,必须将其作为一个步骤,即放到一个 step 中去。

本文例子内包含的 actin 见下图高亮:

runner

运行器是安装了 GitHub Actions 运行器应用程序的服务器。 您可以使用 GitHub 托管的运行器或托管您自己的运行器。 运行器将侦听可用的作业,每次运行一个作业,并将进度、日志和结果报告回 GitHub。 GitHub 托管的运行器基于 Ubuntu Linux、Microsoft Windows 和 macOS,并且工作流程中的每个作业都在新的虚拟环境中运行。

本文例子的工作流,通过 yml 文件里的定义:

runs-on: ubuntu-latest

工作于 Github 托管的 Ubuntu 服务器上。

代码第7行:

- uses: actions/checkout@v2

uses 关键字指示作业检索名为 actions/checkout@v2 的社区操作的 v2。

这是检出仓库并将其下载到运行器的操作,允许针对您的代码运行操作(例如测试工具)。 只要工作流程针对仓库的代码运行,或者您使用仓库中定义的操作,您都必须使用检出操作。

- uses: actions/setup-node@v2with:node-version: '14'

安装 Node.js 运行环境到托管服务器上,版本为 14

这个工作流逻辑的可视化版本如下:

更多Jerry的原创文章,尽在:“汪子熙”:

一个最简单的 Github workflow 例子相关推荐

  1. 一个简单的规则引擎例子

    本例使用的规则引擎包是RulesEngine,关于RulesEngine的介绍,请自行补充,这里只是一个极简单使用场景. 例子大体就是用户有一些优惠券,系统会根据用户订单情况,筛选可以使用的优惠券供用 ...

  2. 收了100元辛苦费,写了一个最简单的C#ASP.NET的3层架构例子代码,源码是通过代码生成器生成的【写程序的效率神奇的高】...

    为什么80%的码农都做不了架构师?>>>    有一个客户购买了代码生成器,虽然我把很多基础类库的源码及配套的源码都发给他了,但是他由于时间忙的原因,还是没自己仔细看,而是希望我以他 ...

  3. 一个简单的epoll测试例子

    一个简单的epoll测试例子 一段简单的epoll测试例子,编译运行后可以直接用浏览器访问localhost来测试. 1 #include <unistd.h> 2 #include &l ...

  4. boost::math模块使用 non_finite_num facet 的一个非常简单的例子

    boost::math模块使用 non_finite_num facet 的一个非常简单的例子 实现功能 C++实现代码 实现功能 boost::math模块使用 non_finite_num fac ...

  5. boost::math模块使用词法转换的一个非常简单的例子的测试程序

    boost::math模块使用词法转换的一个非常简单的例子的测试程序 实现功能 C++实现代码 实现功能 boost::math模块使用词法转换的一个非常简单的例子的测试程序 C++实现代码 #inc ...

  6. 一个简单的三层架构例子(.NET入门)

    最近开始学习.NET 用的是c# 目前要用三层架构的模式开发一个简单的图书管理系统,不过以为刚接触这门技术.做起来分外吃力,甚至连究竟要写些什么都不清楚. 于是乎上网到处找寻三层架构的基础入门知识,终 ...

  7. 一个最简单的Makefile例子(转)

    原文地址:http://hi.baidu.com/hellosim/blog/item/42e78341b40c3e8db2b7dce3.html 转载请注明出处 1.hello.c #include ...

  8. 一个简单的iBatis入门例子

    一个简单的iBatis入门例子,用ORACLE和Java测试 目录结构: 1.导入iBatis和oracle驱动. ibatis-2.3.4.726.jar ojdbc14.jar 2.创建类com/ ...

  9. Github上利用win10使用TensorFlow(GPU)上如何去训练一个目标多分类检测的例子

    Github上利用win10使用TensorFlow(GPU)上如何去训练一个目标多分类检测的例子 我们从github找到一个用fast-rcnn训练模型用于目标物体检测的例子,文中是实现检测扑克牌的 ...

最新文章

  1. java int类源码,一起学JDK源码 -- Integer类
  2. LeetCode Additive Number(递归)
  3. maven工程中添加scala-library并非idea scala插件
  4. Linux 文件权限管理命令chmod、chown
  5. 使用HTML5技术控制电脑或手机上的摄像头
  6. 查找ipa包,删除接的ipa包
  7. go语言学习--string、int、int64互相转换,字符串的截取,数组和字符串的转换
  8. python自动化办公-python自动化办公?学这些就够用了
  9. Android: app不被系统kill掉
  10. 使用Python在指定文件夹新建一个文本文档(其他类型文件也可)
  11. 照片视频拼接软件哪个好?一半图片一半视频的快速上手教程,朋友圈超吸赞效果
  12. js实现城市拼音首字母排序
  13. 机器学习【系列】之第六章随机森林模型
  14. mysql中文版 win7_MySQL数据库下载64位下载-MySQL数据库64位【支持win7/win10】8.0.18 官方中文最新版-东坡下载...
  15. 18个免费视频素材网站,超高清、不限速、无版权、可商用,1秒解决你90%的视频剪辑难题!
  16. 端口扫描工具NMAP(个人总结)
  17. android打开cad文件怎么打开方式,dwg文件怎么打开_手机上dwg文件用什么程序可以打开...
  18. Java多线程系列--“JUC线程池”03之 线程池原理——线程池源码分析
  19. Bsphp验证系统,免费网络验证系统
  20. 带节日和农历的js日历

热门文章

  1. UISwitch,UISegmentedControl及UISlider的初步学习
  2. 观察+|腾讯网易终获游戏版号,但all in 游戏时代已结束
  3. 使用django创建一个单表查询的图书管理系统
  4. 关于活动目录中DNS没有SRV记录的解决方法
  5. bash參考手冊之六(Bash特性)
  6. 利用jsonp实现跨域登陆
  7. 一起谈.NET技术,C#权限管理和设计浅谈
  8. PON的技术优势及前景应用
  9. Maven学习笔记(待完善)
  10. 方立勋_30天掌握JavaWeb_Servlet