1️⃣ 首先是一个模板名 name:
, 多个编译模板的时候可以用来区分
name: 流程名称
2️⃣ 然后是执行方式 on:
支持多种方式触发执行
①手动触发:workflow_dispatch:
name: 我的流程1
on:
#手动触发执行
workflow_dispatch:
里面的#
是用来注释的 不会生效,也不会影响执行,方便标识用的
手动触发执行并指定一些参数inputs:
如下的 branch upx target 等 表示输入的值的变量名
name: 我的流程1
on:
#手动触发执行并指定一些参数
workflow_dispatch:
inputs:
branch:
description: '指定编译的版本号'
# false 表示这个参数的值可留空,若要求不能留空 则使用 true 必须填入一些字符
required: false
default: ''
upx:
description: '是否使用upx压缩'
#这是开关选项 勾选框
required: true
default: false
type: boolean
target:
description: '请选择架构'
#这是预设选项框 单选
required: true
type: choice
default: 'aarch64'
options:
- aarch64
- armv7
- armv6
- armv5
core_run_id:
description: '请输入ID'
#这是限制只能输入数字
type: number
default: 10322498549
required: true
②定时自动触发:schedule:
使用的是cron语法
name: 我的流程1
on:
#每天北京时间(+8)11点 04点自动检测更新
schedule:
- cron: "0 3,20 * * *"
③修改仓库文件自动触发:
push:
当有代码被推送到指定的分支或修改了文件时触发
name: 我的流程1
on:
# 当修改 main 分支的内容时自动执行该流程
push:
branches:
- main
pull_request:
当创建或更新拉取请求(PR)时触发
name: 我的流程1
on:
# 当 main test 分支创建或更新拉取请求(PR)时触发
pull_request:
branches: ["main", "test"]
3️⃣ 设置此流程的全局权限 permissions:
简单的流程无需设置
name: 我的流程1
on:
workflow_dispatch:
permissions:
contents: write
⚠️ 以下是一些可选项:
permissions:
# Actions 工作流相关权限
actions:
# read 仅允许读取工作流运行信息,例如查看工作流状态
# write 允许操作工作流运行,例如重新运行或取消工作流
# 检查运行相关权限
checks:
# read 仅允许读取检查运行状态
# write 允许重新运行或更新检查
# 仓库内容访问权限
contents:
# read 允许读取仓库内容,例如克隆代码
# write 允许推送更改到仓库
none: # 禁止访问仓库内容
# 部署相关权限
deployments:
# read 允许查看部署信息
# write 允许触发和操作部署
# Discussions 讨论区相关权限
discussions:
# read 允许查看讨论内容
# write 允许创建或更新讨论
# Issues 问题(Issues)相关权限
issues:
# read 允许查看问题列表和详情
# write 允许创建、更新或关闭问题
# Packages 包管理相关权限
packages:
# read 允许下载包或查看包信息
# write 允许上传、删除或更新包
# Pull Requests 拉取请求相关权限
pull-requests:
# read 允许查看拉取请求信息
# write 允许创建、更新或合并拉取请求
# 仓库项目相关权限
repository-projects:
# read 允许查看项目内容
# write 允许管理和更新项目
# 安全事件相关权限
security-events:
# read 允许查看安全事件
# write 允许创建和更新安全事件
# 提交状态相关权限
statuses:
# read 允许查看提交状态
# write 允许更新提交状态
像 发布Releases版本
提交修改到仓库
需要使用 contents: write
权限
删除工作流记录
需要用到 actions: write
等,一般需要加 因为默认的设置是read
4️⃣ 设置全局的环境变量 env:
设置时区上海 TZ
的值
name: 我的流程1
on:
workflow_dispatch:
env:
TZ: Asia/Shanghai
甚至可以把之前触发里的手动输入的参数也设置为全局变量 github.event.inputs.名称
输出测试效果
5️⃣ 正式流程内容 jobs:
name: 我的流程1
on:
workflow_dispatch:
env:
TZ: Asia/Shanghai
jobs:
build:
runs-on: ubuntu-latest
steps:
- name: 输出helloworld
run: |
echo "Hello World !"
echo "多个命令演示"
build2:
runs-on: windows-latest
steps:
- name: 输出helloworld
run: echo "Hello World !"
build3:
runs-on: macos-latest
steps:
- name: 输出helloworld
run: echo "Hello World !"
build:
表示作业名 可以多个 build1:
test:
等等,不支持中文, 不同的功能 缩进位置也都不同
runs-on:
表示这个作业需要运行的系统
ubuntu-latest
: 当前最新版本的 Ubuntu(通常是最新 LTS 版本)ubuntu-22.04
: Ubuntu 22.04 LTSubuntu-20.04
: Ubuntu 20.04 LTSubuntu-18.04
: Ubuntu 18.04 LTSwindows-latest
: 当前最新版本的 Windows Server(通常是 Windows Server 2022)windows-2022
: Windows Server 2022windows-2019
: Windows Server 2019windows-2016
: Windows Server 2016macos-latest
: 当前最新版本的 macOS(通常是 macOS Ventura)macos-13
: macOS 13 (Ventura)macos-12
: macOS 12 (Monterey)macos-11
: macOS 11 (Big Sur)steps:
表示步骤执行 后续代码要按顺序来执行
jobs:
build:
runs-on: ubuntu-latest # 选择运行环境
steps:
#设置了四个步骤
- name: Checkout 代码
uses: actions/checkout@v4 # 获取仓库代码
#步骤二
- name: 设置 Python 环境
uses: actions/setup-python@v2 # 安装指定版本的 Python
with:
python-version: '3.8'
#步骤三
- name: 安装依赖
run: pip install -r requirements.txt # 执行命令安装依赖
#步骤四
- name: 运行测试
run: pytest # 执行测试
更多步骤可以参考别人的 GitHub 里的
.github/workflows/
目录里的yml
文件,大胆 复制 粘贴 😆
上方提供的几个yml 可以参考一下,同样也复制粘贴而来🤓
先登陆自己的GitHub帐号,然后点击右上角的 +
然后填写仓库的一些信息
另外除了fork 还可以自己创建仓库的时候 导入被人的仓库代码
新仓库创建好之后 需要上传文件或者新建一个文件
yml
云编译模板可以在这里点击新建或者上传
GitHub的云编译必须要把yml
模板文件放至.github/workflows/
目录下才行 .github/workflows/我的编译模板.yml
如果你是上传的,上传到仓库根目录也不怕,点击文件进去,点编辑,修改名字将文件夹加进去
如文件名是 我的编译模板.yml
重命名为 .github/workflows/我的编译模板.yml
即可
修改yml模板文件格式,必须全文没有出现红色 ﹏﹏ 和红色 ˇ
这个token是应用于所有仓库的高权限,一般不需要,常用的编译 直接使用GitHub默认生成的token即可
先登录帐号进去,点击右上角的头像
然后点击左侧菜单栏 最底部的
新建一个token,设置永不过期,勾选所有权限,详细可以百度搜索不再详细了
我设置的是永不过期 所有仓库有效 最高权限
点击进入当前仓库的设置页面
可以创建多个,用来在执行云编译的时候使用这个环境变量来隐藏私密信息,不会显示在日志里