一个最简单的 Github workflow 例子

源代码:

name: learn-github-actions
on: [push]
jobs:
  check-bats-version:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v2
      - uses: actions/setup-node@v2
        with:
          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@v2
        with:
          node-version: '14'

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

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

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


Jerry Wang的SAP技术专栏
SAP成都研究院开发专家,SAP社区导师,SAP中国技术大使
914 声望
1.6k 粉丝
0 条评论
推荐阅读
线性表的顺序存储和链式存储
在计算机科学中,线性表是一种常见的数据结构,用于存储一组具有顺序关系的元素。线性表中的元素之间存在一对一的前驱和后继关系,每个元素都有唯一的前驱和后继(除了首元素和末元素)。线性表可以通过顺序存储...

JerryWang_汪子熙阅读 102

封面图
git 常用命令 记录
有错误和改进的地方望留言,谢谢 : )顺便推荐一下,git入门教程Git 教程图解 GitPro Git 2(中文版)Git 使用Git 使用规范流程Git 工作流程Commit message 和 Change log 编写指南全局设置git config --system //...

Luff阅读 3.2k

写一个Vue DevTools,让开发体验飞一会
近年来,人们越来越关注开发者体验 (DX)。工具和框架也一直在努力改进 DX,比如这两年光速发展的Vite。在大多数人的印象中,Vite的特点是快,但是在我看来让它发展迅速并在前端构建工具占据一席之地的主要原因是...

null仔2阅读 893

封面图
git/pip/easy_install/apt代理/源设置
在公司内网环境中,访问公网往往需要经过公司的代理,对于浏览器、IDE等开发工具,都提供了设置代理的配置,而git、pip、easy_install等CLI工具,则需要通过命令或配置文件进行代理设置;对于Python、Ubuntu、Mav...

乘着风1阅读 5.5k

Laravel入门及实践,快速上手ThinkSNS+二次开发
【摘要】自从ThinkSNS+不使用ThinkPHP框架而使用Laravel框架之后,很多人都说技术门槛抬高了,其实你与TS+的距离仅仅只是学习一个新框架而已,所以,我们今天来说说Laravel的入门。

ThinkSNS1阅读 2.4k

一个令人惊艳的ChatGPT项目,开源了!
最近在GitHub上发现了一个爆火的开源项目。好家伙,凑近一看,居然还是由微软开源,并且和最近炙手可热的ChatGPT息息相关。项目的名字叫做:Visual ChatGPT。[链接]这个项目最早是3月上旬微软开源的,项目宣布开...

CodeSheep2阅读 1.9k

封面图
github 和 gitlab 之自定义首页样式
🎈 个性首页相信很多小伙伴在逛 github 和 gitlab 的时候会发现很多开发者的首页异常的炫酷,如 [链接]🎈 制作步骤是不是立马想拥有一个属于自己的高大上主页了从上图中我们可以看出,其实它展示的一个 readme 里面...

tiny极客3阅读 1.9k评论 4

封面图
914 声望
1.6k 粉丝
宣传栏