前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Github Actions YAML语法详解(二)

Github Actions YAML语法详解(二)

作者头像
CC老师
发布2021-08-25 14:55:37
1K0
发布2021-08-25 14:55:37
举报

Github Actions YAML

我们还是以Kingfisher中出现的语法为准。

name

workflow的名称。GitHub在仓库的Actions页面上显示该仓库使用workflow的名称。如果省略nameGitHub将其设置为相对于仓库根目录的工作流程文件路径;

on

用来指定触发条件,触发条件被触发开始执行。

可以提供单一触发条件string、一组触发条件array、不同事件类型types的一组条件arraymap,指明workflow的运行条件,或将workflow的执行限于特定文件、标记或分支更改。

jobs

指定当前的workflow在被触发时可以运行的一项或多项jobs

jobs默认是并行运行。要按顺序运行jobs,可以使用<job_id>needs关键词在job定义依赖项。每个jobruns-on指定的服务器环境中运行。

defaultsjobs.<job_id>.defaults

设置将应用到workflow中所有job或指定job的默认设置。在job中定义的默认设置将覆盖在workflow中定义的同名默认设置。

defaults.run和jobs.<job_id>.defaults.run

workflow中的所有run步骤提供默认的shellworking-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中要运行的actionaction是一种可重复使用的代码单位;

jobs.<job_id>.steps[*].id

当前step的唯一标识。用于在上下文环境中引用该step

jobs.<job_id>.steps[*].with

指明当前action序言的输入参数,使用map

每个输入参数都是一个键/值对。如果当前输入的不是action需要的输入参数,那么这些参数将被设置为环境变量。该变量的会自动加上前缀INPUT_,并转换为大写;

jobs.<job_id>.steps[*].if

通过if: 表达式,判断当前是否满足step运行需要的信息。

  • 表达式可以是文字值、上下文引用或函数的任意组合。以使用运算符组合文字、上下文引用和函数。达式通常在工作流程文件中与条件性if关键词一起用来确定步骤是否应该运行。当if条件为true时,步骤将会运行;
  • 在if条件下使用表达式时,可以省略表达式语法({{ }}),因为GitHub会自动将if条件作为表达式求值,除非表达式包含任何运算符。如果表达式包含任何运算符,则表达式必须包含在 {{ }}内,以明确标记它进行计算。

jobs.<job_id>.steps[*].env、env和jobs.<job_id>.env

用于设置当前workflow、单个job或者单个step的环境变量。当多个环境变量使用相同的名称定义时,GitHub有一套覆盖规则。

  • step中定义的环境变量在step执行时将覆盖名称相同的job和workflow变量;
  • job定义的变量在job执行时将覆盖名称相同的workflow变量。
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2021-08-10,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 HelloCoder全栈小集 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档