Github Actions YAML
我们还是以Kingfisher中出现的语法为准。
name
workflow的名称。GitHub在仓库的Actions页面上显示该仓库使用workflow的名称。如果省略name,GitHub将其设置为相对于仓库根目录的工作流程文件路径;
on
用来指定触发条件,触发条件被触发开始执行。
可以提供单一触发条件string、一组触发条件array、不同事件类型types的一组条件array或map,指明workflow的运行条件,或将workflow的执行限于特定文件、标记或分支更改。
jobs
指定当前的workflow在被触发时可以运行的一项或多项jobs。
jobs默认是并行运行。要按顺序运行jobs,可以使用<job_id>needs关键词在job定义依赖项。每个job在runs-on指定的服务器环境中运行。
defaults和jobs.<job_id>.defaults
设置将应用到workflow中所有job或指定job的默认设置。在job中定义的默认设置将覆盖在workflow中定义的同名默认设置。
defaults.run和jobs.<job_id>.defaults.run
为workflow中的所有run步骤提供默认的shell和working-directory选项。也可以设置只可用于job默认设置。
jobs.<job_id>.runs-on
必填。
指定要运行job的服务器类型。
服务器可以是GitHub托管的服务器器或自托管的服务器:
jobs.<job_id>.strategy.matrix
如果我们需要当前的workflow中的运行的job、执行的action或者执行的命令运行到多个操作系统、平台和语言,进行多个组合运行测试。
同时不想创建多个相同的操作,来区别进行区分。
这个时候可以使用构建矩阵:
1.构建矩阵是使用strategy关键字创建的,接收构建选项作为数组。构建矩阵在每次workflow运行时最多可生成256个jobs。此限制也适用于自托管服务器;
2.在matrix中定义的每个选项都有键和值。定义的键将成为matrix上下文中的属性,可以在workflow文件的其他区域中引用该属性。例如,如果定义包含操作系统数组的键os,您可以使用 matrix.os属性作为runs-on关键字的值,为每个操作系统创建一个job。定义的第一个选项将是工作流程中运行的第一个job;
steps
指明当前job包含的具体步骤。
step可以运行命令、运行设置任务,或者运行action等等。每个step在服务器环境中以其自己的进程运行,且可以访问工作区和文件系统。
因为step以自己的进程运行,所以step之间不会保留环境变量的更改。在workflow的使用限制之内可运行无限数量的steps。接下来,开始执行具体的操作;
jobs.<job_id>.steps[*].uses
指定在当前step中要运行的action。action是一种可重复使用的代码单位;
jobs.<job_id>.steps[*].id
当前step的唯一标识。用于在上下文环境中引用该step;
jobs.<job_id>.steps[*].with
指明当前action序言的输入参数,使用map。
每个输入参数都是一个键/值对。如果当前输入的不是action需要的输入参数,那么这些参数将被设置为环境变量。该变量的会自动加上前缀INPUT_,并转换为大写;
jobs.<job_id>.steps[*].if
通过if: 表达式,判断当前是否满足step运行需要的信息。
jobs.<job_id>.steps[*].env、env和jobs.<job_id>.env
用于设置当前workflow、单个job或者单个step的环境变量。当多个环境变量使用相同的名称定义时,GitHub有一套覆盖规则。
本文分享自 HelloCoder全栈小集 微信公众号,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。
本文参与 腾讯云自媒体分享计划 ,欢迎热爱写作的你一起参与!