workflow
name: {{workflow name}}
run-name: {{workflow runs name}}
on: {{触发器}} #[push]
env:
{{定义workflow变量}}: value
jobs:
{{job name}}:
runs-on: {{运行机器}} #ubuntu-latest
env:
{{定义job变量}}: value
defaults: # set default settings
run: # default shell and working-directory options
shell: bash
working-directory: xxx
# steps下嵌套的每个项目都是一个单独的操作或 shell 脚本。
steps:
- name: {{step name}}
env:
{{定义step变量}}: value
if : ${{执行条件}}
continue-on-error: {{失败继续执行条件}}
- name: 使用变量、context上下文
run: $变量 , ${{ context }}
- name: 执行action
uses: {{action@version}}
with:
{{action 输入参数}}: value
- name: 执行shell
run: {{shell 命令}}
shell: bash
working-directory: {{执行目录}}
触发器
# 事件触发
on: push
# 多事件触发
on: [push, fork]
# 筛选器
on:
push:
branches: # 分支筛选器
- main
- 'releases/**'
# 手动事件触发
on:
workflow_dispatch:
inputs:
# 工作流可以由另一个工作流调用
on:
workflow_call:
inputs:
action市场
https://github.com/marketplace?type=actions
context 上下文
上下文是一种访问工作流运行、变量、运行器环境、作业及步骤相关信息的方式
在workflow 和 action 中访问 context信息
- 使用方式
${{ <context> }}
- 支持的 context
https://docs.github.com/zh/actions/learn-github-actions/contexts
secrets
若要在个人帐户存储库中为某个环境创建机密或变量,你必须是存储库所有者。
若要在组织存储库中为某个环境创建机密或变量,你必须拥有 admin 访问权限。
变量
变量在运行工作流的运行器计算机上插值。 在操作或工作流步骤中运行的命令可以创建、读取和修改变量。
- 变量定义
使用env
键对其进行定义
GitHub 默认环境变量
- GITHUB_OUTPUT
Workflow commands
作用:与运行器机器进行通信,以设置环境变量,其他操作使用的输出值,将调试消息添加到输出日志和其他任务。
使用方式:
- 大多数工作流程命令使用特定格式的 echo 命令
- 其他工作流程则通过写入文件被调用
# workflow-command 和 parameter 不区分大小写
echo "::workflow-command parameter1={data},parameter2={data}::{command value}"
actions/toolkit
workflow-command可执行 actions/toolkit的许多函数
https://github.com/actions/toolkit
- 例:
actions/toolkit的 @actions/core
//npm install @actions/core
const core = require('@actions/core');
core.error('Missing semicolon', {file: 'app.js', startLine: 1})
在 workflow中表示为:
run: echo "::error file=app.js,line=1::Missing semicolon"
- 例:set-output输出
set-output
命令已被弃用,并将很快被禁用。
echo "::set-output name=<name>::<value>"
- 例:输出写入到 $GITHUB_OUTPUT 文件中
echo "{name}={value}" >> "$GITHUB_OUTPUT"