act 运维手册
act 运维手册:五层日常巡检与一键巡检脚本、平台镜像与缓存目录管理、push/pull_request 工作流模拟实战、升级回滚回归清单,以及九类故障的实测排查手册,全部命令附真实回显。
act 运维手册
> 目标:面向把 act(nektos/act,本地运行 GitHub Actions 的命令行工具)作为长期本地验证工具的运维场景,覆盖日常巡检、平台镜像与缓存管理、push/pull_request 工作流模拟实战、升级与回滚流程,以及九类故障的实测排查手册。全部命令在 Ubuntu 22.04(x86_64)+ act v0.2.89 环境实测(实测日期 2026-10-18);工具定位、安装方法、参数详解分别见 《act 介绍与选型指南》、《Ubuntu 22.04 安装 act 指南》、《act 常用 CLI 命令与工具详解》。
一、环境信息
| 项目 | 内容 |
|---|---|
| 操作系统 | Ubuntu 22.04(x86_64) |
| act 版本 | v0.2.89(实测基线:act version 0.2.89) |
| Docker Engine | 运行中(实测版本 29.1.3;act 的执行前置) |
| actrc | /root/.config/act/actrc,预写 -P ubuntu-latest=ghcr.io/catthehacker/ubuntu:act-latest、-P ubuntu-22.04=ghcr.io/catthehacker/ubuntu:act-22.04、-P ubuntu-20.04=ghcr.io/catthehacker/ubuntu:act-20.04(三行映射,与 act --bug-report 的 Config files 段一致) |
| 平台镜像 | ghcr.io/catthehacker/ubuntu(Medium 档,act-latest 与 act-22.04 两个 tag) |
| 缓存目录 | /root/.cache/act(action 缓存/宿主工作区)、/root/.cache/actcache(缓存服务数据) |
| 演示仓库 | /opt/act-demo(git 仓库,main 分支,含 ci.yml/pr.yml/secret.yml/env.yml/platform.yml/checkout.yml 六个工作流) |
运维基线验证(巡检第一章的第二步即逐项复核此表):
act --version
实测回显:
act version 0.2.89
二、日常巡检
2.1 巡检项与命令
act 本身无常驻进程,巡检对象是「act 二进制 → Docker Engine → 平台镜像 → 缓存目录 → 解析链路」五层。逐项命令与实测回显:
第 1 项:act 二进制可用。
act --version
实测回显:
act version 0.2.89
第 2 项:Docker Engine 运行中。
systemctl is-active docker
实测回显:
active
第 3 项:平台镜像在场且体积受控。
docker images
实测回显(Docker 29 的新版表头:DISK USAGE 为本地磁盘占用,CONTENT SIZE 为内容层大小):
IMAGE ID DISK USAGE CONTENT SIZE EXTRA
ghcr.io/catthehacker/ubuntu:act-22.04 f5f5c29208c4 2.18GB 546MB
ghcr.io/catthehacker/ubuntu:act-latest 62d572b92f9f 2.31GB 578MB U
第 4 项:workflow 解析链路正常(最快功能巡检)。
cd /opt/act-demo && act -l
实测回显(完整输出,能列出全部工作流与 Stage 即解析链路健康):
time="2026-10-18T02:49:07Z" level=info msg="Using docker host 'unix:///var/run/docker.sock', and daemon socket 'unix:///var/run/docker.sock'"
Stage Job ID Job name Workflow name Workflow file Events
0 checkout checkout Checkout Demo checkout.yml push
0 build build CI ci.yml push
0 show show EnvFile Demo env.yml push
0 show-os show-os Platform Demo platform.yml push
0 lint lint PR Check pr.yml pull_request
0 use-secret use-secret Secrets Demo secret.yml push
1 test test CI ci.yml push
EXIT=0
第 5 项:actrc 配置被正确加载。
act --bug-report | sed -n '/Config files/,/Build info/p'
实测回显:
Config files:
/root/.config/act/actrc:
-P ubuntu-latest=ghcr.io/catthehacker/ubuntu:act-latest
-P ubuntu-22.04=ghcr.io/catthehacker/ubuntu:act-22.04
-P ubuntu-20.04=ghcr.io/catthehacker/ubuntu:act-20.04
第 6 项:缓存目录体积受控。
du -sb /root/.cache/act /root/.cache/actcache
实测回显:
4132 /root/.cache/act
24576 /root/.cache/actcache
2.2 一键巡检脚本
把六项巡检固化为脚本(任一检查失败即退出非零,适合放进 crontab 或登录时执行):
cat > /usr/local/bin/act-daily-check << 'EOF'
#!/bin/sh
set -e
act --version
[ "$(systemctl is-active docker)" = "active" ] || { echo "docker not active"; exit 1; }
act -l > /dev/null 2>&1 || { echo "act -l failed"; exit 1; }
grep -q catthehacker /root/.config/act/actrc || { echo "actrc missing platform map"; exit 1; }
du -sb /root/.cache/act /root/.cache/actcache
echo "ALL CHECKS PASSED"
EOF
chmod +x /usr/local/bin/act-daily-check
实测运行回显:
act version 0.2.89
4132 /root/.cache/act
24576 /root/.cache/actcache
ALL CHECKS PASSED
2.3 巡检频率建议
| 频率 | 覆盖项 |
|---|---|
| 每次使用前(或每日) | 第 1~4 项(二进制/Docker/镜像/解析链路) |
| 每周 | 第 5~6 项(actrc、缓存体积)+ docker system df 磁盘盘点(见 3.1) |
| 每次升级 act 或更换平台镜像后 | 全部六项 + 第四章冒烟演练 |
三、平台镜像与缓存管理
3.1 磁盘盘点
act 的磁盘开销集中在平台镜像。全局盘点:
docker system df
实测回显:
TYPE TOTAL ACTIVE SIZE RECLAIMABLE
Images 2 1 4.49GB 2.183GB (48%)
Containers 3 1 86.02kB 57.34kB (66%)
Local Volumes 7 7 325B 0B (0%)
Build Cache 0 0 0B 0B
解读:两个平台镜像合计约 4.49GB,其中 2.183GB(48%)标记为可回收——通常是历史 tag 层;RECLAIMABLE 高企时按 3.3 节清理。
3.2 平台镜像更新
actrc 中 act-latest 是滚动 tag,镜像内容随上游更新;-P 映射本身不触发更新。两种更新方式:
方式一:手动拉取(立即生效)。actrc 的 -p --pull 默认 true,act 每次运行前都会拉取最新镜像(4.x 命令日志中的 forcePull=true),但受网络与频率影响,也可显式拉取:
docker pull ghcr.io/catthehacker/ubuntu:act-latest
实测回显(已是最新时的输出):
Digest: sha256:62d572b92f9f32d3427b6d220ad1f9dca9c7b6ffad37d295425037dbff78abaf
Status: Image is up to date for ghcr.io/catthehacker/ubuntu:act-latest
ghcr.io/catthehacker/ubuntu:act-latest
方式二:固定版本 tag(可复现优先)。把 actrc 映射从 act-latest 改为具体版本 tag(如上游发布的 act-22.04 系列 tag),消除滚动漂移;本地验证环境建议「日常 latest、需要复现时切固定 tag」,映射修改方法见《Ubuntu 22.04 安装 act 指南》第七章。
3.3 镜像清理
删除不再需要的平台镜像 tag(实测回显):
docker rmi ghcr.io/catthehacker/ubuntu:act-20.04
Untagged: ghcr.io/catthehacker/ubuntu:act-20.04
⚠️ 注意:actrc 中映射引用的 tag 删除后,下次运行会因镜像缺失而重新拉取;确认不再使用再删(镜像拉取失败的排查见六章 6.4)。
回收悬空层(实测当前无可回收项):
docker image prune -f
Total reclaimed space: 0B
3.4 缓存目录管理
act 的两个本地缓存目录(默认路径由 --action-cache-path/--cache-server-path 定义,help 原文默认值分别为 /root/.cache/act 与 /root/.cache/actcache):
| 目录 | 用途 | 实测状态 |
|---|---|---|
/root/.cache/act | action 缓存与宿主工作区 | 4132 字节(仅 .notices.etag 通知缓存——默认本地复制模式下 actions/checkout 被跳过,无远端 action 缓存) |
/root/.cache/actcache | 内置缓存服务数据(actions/cache 类步骤) | 24576 字节 |
清理与重建验证(实测:清空后立即运行一次含 checkout 的工作流,目录自动重建):
rm -rf /root/.cache/act /root/.cache/actcache
cd /opt/act-demo && act push -W .github/workflows/checkout.yml --pull=false
du -sb /root/.cache/act /root/.cache/actcache
实测回显(运行成功后):
4132 /root/.cache/act
24576 /root/.cache/actcache
结论:两个目录可安全清空,act 运行时自动重建,不影响后续使用;缓存膨胀到异常体积时直接清空即可。使用 --no-skip-checkout 或远端 action 较多的环境,/root/.cache/act 会存放 action 副本,体积随使用增长,同样适用该清理方法。
四、工作流模拟实战(push 与 pull_request)
4.1 push 场景:验证一次真实变更
以「修改测试输出文案」为例走完整闭环:改 workflow → dryrun 核对 → 真实执行。修改并提交(演示仓库):
cd /opt/act-demo
sed -i 's/echo "run tests"/echo "run tests (ops-demo v2)"/' .github/workflows/ci.yml
git add -A && git commit -qm "ops demo: bump test message"
git log --oneline -1
实测回显:
509e77b ops demo: bump test message
第一步:dryrun 核对执行范围(不真正执行,确认本次 push 会触发哪些 Job):
act -n push
实测回显(节选首段,可见 push 触发的全部 Job 与各 Job 使用的平台镜像):
time="2026-10-18T02:45:51Z" level=info msg="Using docker host 'unix:///var/run/docker.sock', and daemon socket 'unix:///var/run/docker.sock'"
*DRYRUN* [Checkout Demo/checkout ] ⭐ Run Set up job
*DRYRUN* [Checkout Demo/checkout ] 🚀 Start image=ghcr.io/catthehacker/ubuntu:act-latest
*DRYRUN* [CI/build ] ⭐ Run Set up job
*DRYRUN* [CI/build ] 🚀 Start image=ghcr.io/catthehacker/ubuntu:act-latest
*DRYRUN* [Platform Demo/show-os ] ⭐ Run Set up job
*DRYRUN* [Platform Demo/show-os ] 🚀 Start image=ghcr.io/catthehacker/ubuntu:act-22.04
*DRYRUN* [EnvFile Demo/show ] ⭐ Run Set up job
*DRYRUN* [EnvFile Demo/show ] 🚀 Start image=ghcr.io/catthehacker/ubuntu:act-latest
*DRYRUN* [Secrets Demo/use-secret] ⭐ Run Set up job
*DRYRUN* [Secrets Demo/use-secret] 🚀 Start image=ghcr.io/catthehacker/ubuntu:act-latest
*DRYRUN* [EnvFile Demo/show ] 🐳 docker pull image=ghcr.io/catthehacker/ubuntu:act-latest platform= username= forcePull=true
...
第二步:只跑改动的 Job(-j test 连带其依赖 build,--pull=false 跳过远端镜像检查):
act push -j test --pull=false
实测回显(节选 test 段,修改后的输出文案已生效):
[CI/test ] ⭐ Run Main Test
[CI/test ] 🐳 docker exec cmd=[bash -e /var/run/act/workflow/0] user= workdir=
[CI/test ] | run tests (ops-demo v2)
[CI/test ] ✅ Success - Main Test [43.37276ms]
[CI/test ] ⭐ Run Complete job
[CI/test ] Cleaning up container for job test
[CI/test ] ✅ Success - Complete job
[CI/test ] 🏁 Job succeeded
EXIT=0
验证闭环:| run tests (ops-demo v2) 出现且 EXIT=0,本次变更本地验证通过。
4.2 pull_request 场景:带事件载荷验证
PR 工作流依赖事件载荷,先准备事件 JSON(head_ref/base_ref 为官方要求的最小字段,number 供工作流取值):
printf "%s" '{"number":42,"pull_request":{"number":42,"title":"demo PR","head":{"ref":"feature-x"},"base":{"ref":"main"}}}' > /tmp/pr-event.json
执行 pull_request 事件工作流:
cd /opt/act-demo && act pull_request -e /tmp/pr-event.json --pull=false
实测回显(节选关键段,工作流内 ${{ github.event.pull_request.number }} 取到 42):
[PR Check/lint] ⭐ Run Main Lint
[PR Check/lint] 🐳 docker exec cmd=[bash -e /var/run/act/workflow/0] user= workdir=
[PR Check/lint] | linting PR number 42
[PR Check/lint] ✅ Success - Main Lint [43.272164ms]
[PR Check/lint] ⭐ Run Complete job
[PR Check/lint] Cleaning up container for job lint
[PR Check/lint] ✅ Success - Complete job
[PR Check/lint] 🏁 Job succeeded
EXIT=0
4.3 常态化使用建议
- 每次提交前跑
act -l(秒级)+ 目标 Job 的act push -j <job> --pull=false(分钟级),两级验证成本递增、覆盖递增。 - 事件 JSON 按需留存:把 PR 事件文件放在
/tmp之外的固定路径(如仓库外~/pr-event.json),避免重启丢失后重写(本次实测即出现过/tmp/pr-event.json丢失:Error: open /tmp/pr-event.json: no such file or directory)。 - 与云端 Actions 的关系:本地验证通过不代表云端一定通过(平台镜像差异、Secrets 差异),但能拦截绝大多数语法与脚本错误;两者共用同一份 workflow 文件,本地是云端的第一道过滤器。
五、升级与回滚
5.1 升级标准流程
- 备份配置与记录基线:
cp /root/.config/act/actrc /root/actrc.bak.$(date +%F)
act --version
- 执行升级(install.sh 指定新版本;脚本对已装同/更高版本的行为实测见《Ubuntu 22.04 安装 act 指南》4.4 节,此处以 0.2.89 基线重跑同一版本为例):
bash install.sh -b /usr/local/bin v0.2.89
实测回显:
nektos/act info checking GitHub for tag 'v0.2.89'
nektos/act info found installed version: 0.2.89
nektos/act info act version 0.2.89 is already installed.
- 验证升级:
act --version输出新版本号 →act -l解析链路正常 → 按第四章跑一次冒烟(act push -j test --pull=false期望EXIT=0)。
5.2 回滚流程
install.sh 检测到已装同/更高版本会跳过,回滚必须手动覆盖二进制。实测从 0.2.89 回滚到 0.2.88 再恢复(全程命令与回显):
curl -sL -o act_Linux_x86_64.tar.gz https://github.com/nektos/act/releases/download/v0.2.88/act_Linux_x86_64.tar.gz
tar xzf act_Linux_x86_64.tar.gz act -O > /usr/local/bin/act && chmod +x /usr/local/bin/act
act --version
实测回显:
act version 0.2.88
恢复新版本(重新覆盖 v0.2.89):
curl -sL -o act_Linux_x86_64.tar.gz https://github.com/nektos/act/releases/download/v0.2.89/act_Linux_x86_64.tar.gz
tar xzf act_Linux_x86_64.tar.gz act -O > /usr/local/bin/act && chmod +x /usr/local/bin/act
act --version
实测回显:
act version 0.2.89
5.3 升级后回归清单
| 检查项 | 命令 | 预期 |
|---|---|---|
| 版本号 | act --version | 输出目标版本 |
| 解析链路 | act -l | 完整列出工作流,无 schema 报错 |
| actrc 生效 | act --bug-report(Config files 段) | 平台映射原样在列 |
| 冒烟执行 | act push -j test --pull=false | 🏁 Job succeeded 且 EXIT=0 |
| 缓存服务 | 运行后 du -sb /root/.cache/actcache | 目录存在且体积正常 |
六、故障排查手册
以下九类故障均实测复现,每条按「现象 → 原因 → 处理」组织,回显为实测原文。
6.1 Docker 守护进程不可达
现象(实测把 Docker 访问指向不存在的套接字,模拟守护进程不可用;dryrun 命令也在 Set up 阶段失败,完整回显):
time="2026-10-18T02:49:08Z" level=info msg="Using docker host 'unix:///run/nonexistent.sock', and daemon socket 'unix:///run/nonexistent.sock'"
*DRYRUN* [CI/build] ⭐ Run Set up job
*DRYRUN* [CI/build] 🚀 Start image=ghcr.io/catthehacker/ubuntu:act-latest
*DRYRUN* [CI/build] 🐳 docker pull image=ghcr.io/catthehacker/ubuntu:act-latest platform= username= forcePull=true
*DRYRUN* [CI/build] failed to connect to the docker API at unix:///run/nonexistent.sock; check if the path is correct and if the daemon is running: dial unix /run/nonexistent.sock: connect: no such file or directory
*DRYRUN* [CI/build] ❌ Failure - Set up job
*DRYRUN* [CI/build] 🏁 Job failed
Error: failed to connect to the docker API at unix:///run/nonexistent.sock; check if the path is correct and if the daemon is running: dial unix /run/nonexistent.sock: connect: no such file or directory
原因:Docker Engine 未运行、套接字路径不对,或 DOCKER_HOST 指向了错误地址。
处理:systemctl is-active docker 检查状态;未运行则 systemctl start docker;环境变量 DOCKER_HOST 被误设时 unset DOCKER_HOST 后重试。注意 act -l/--graph 纯解析命令不受影响(实测指向不可用套接字仍正常列出,见 2.1 第 4 项),可用于先定位是「解析问题」还是「执行问题」。
6.2 首次运行报 level=fatal msg=EOF
现象(实测:未预写 actrc 时在非交互终端运行,镜像选择提示无人应答):
time="2026-10-18T02:16:11Z" level=fatal msg=EOF
原因:act 首次运行会弹出三档平台镜像选择(Large/Medium/Micro,提示原文见《Ubuntu 22.04 安装 act 指南》7.4 节),非交互终端(脚本、定时任务)无法应答。
处理:预写 /root/.config/act/actrc 平台映射(模板见同章 7.2 节),重跑即不再有提示。临时补测试环境时也可在交互终端手动运行一次完成选择,结果会写入 actrc。
6.3 目录不在 git 仓库内
现象(实测在非 git 目录运行执行类命令):
time="2026-10-18T02:16:13Z" level=error msg="path/tmp/gitlessnot located inside a git repository" error="repository does not exist"
time="2026-10-18T02:16:13Z" level=warning msg="unable to get git ref: repository does not exist"
原因:act 需要读取 git ref/revision 标识本次运行。
处理:git init && git add -A && git commit 后重跑即干净(实测验证)。注意报错文案中 path/tmp/gitless 与 not located 之间无空格粘连,属 act 原文样式,搜索日志时按子串匹配。
6.4 平台镜像拉取失败
现象(实测 -P 指向不存在的镜像 tag):
[CI/build] 🐳 docker pull image=ghcr.io/catthehacker/ubuntu:no-such-tag-404 platform= username= forcePull=false
[CI/build] Error response from daemon: failed to resolve reference "ghcr.io/catthehacker/ubuntu:no-such-tag-404": ghcr.io/catthehacker/ubuntu:no-such-tag-404: not found
[CI/build] ❌ Failure - Set up job
[CI/build] 🏁 Job failed
Error: Error response from daemon: failed to resolve reference "ghcr.io/catthehacker/ubuntu:no-such-tag-404": ghcr.io/catthehacker/ubuntu:no-such-tag-404: not found
原因:镜像 tag 拼写错误、镜像仓库不可达、或 Docker Engine 侧代理/镜像源配置问题。
处理:先 docker pull <镜像> 手动验证能否拉取;tag 错误则修正 actrc 的 -P 映射;仓库不可达则检查 Docker Engine 的网络与代理配置。实测环境 ghcr.io 直连稳定,github.com 偶发波动(重试可成功)。
6.5 run 脚本中的 # 截断
现象(实测 run 内 echo "linting PR #${{ ... }}",报引号未闭合):
[Hash Bug/lint] | /var/run/act/workflow/0: line 2: unexpected EOF while looking for matching `"'
[Hash Bug/lint] ❌ Failure - Main Lint [44.76996ms]
[Hash Bug/lint] exitcode '2': failure
[Hash Bug/lint] 🏁 Job failed
Error: Job 'lint' failed
原因:act 预处理步骤脚本时按 shell 词法把「空格 + #」起的内容剥为注释,不识别引号——即使 # 在双引号内也会被剥掉,导致生成脚本缺引号。
处理:# 紧贴前词(如 PR#42)不触发;或改写去掉 #(本仓库用 linting PR number ${{ ... }} 写法,实测通过)。云端 GitHub Actions 无此行为,属 act 本地特有差异。
6.6 workflow schema 错误
现象(实测字段拼写 stratgy:):
Error: workflow is not valid. 'broken-schema.yml': Line: 5 Column 5: Failed to match job-factory: Line: 6 Column 5: Unknown Property stratgy
Line: 5 Column 5: Failed to match workflow-job: Line: 5 Column 5: Unknown Property runs-on
Line: 6 Column 5: Unknown Property stratgy
Line: 9 Column 5: Unknown Property steps
Actions YAML Schema Validation Error detected:
For more information, see: https://nektosact.com/usage/schema.html
原因:workflow YAML 字段名与 schema 不符(拼写错误、层级放错)。另注意实测:jobs 缺 runs-on 本身不单独报错,而是随同上下文一起在校验信息中提示。
处理:按行列号修正字段名;act -l 是最快校验入口(解析期即报错,EXIT=1);复杂问题参照 https://nektosact.com/usage/schema.html 。
6.7 YAML 使用 tab 缩进
现象(实测):
Error: workflow is not valid. 'broken-tab.yml': yaml: line 4: found character that cannot start any token
原因:YAML 规范不允许 tab 缩进,解析器直接拒绝。
处理:全部改为空格缩进(实测修正后 act -l 正常)。编辑器配置「tab 转空格」可根治。
6.8 Job 步骤失败与退出码
现象(实测步骤脚本 exit 3,后随一个本不应执行的步骤):
[Fail Demo/fail] | about to fail
[Fail Demo/fail] ❌ Failure - Main Boom [44.995629ms]
[Fail Demo/fail] exitcode '3': failure
[Fail Demo/fail] ⭐ Run Complete job
[Fail Demo/fail] ✅ Success - Complete job
[Fail Demo/fail] 🏁 Job failed
Error: Job 'fail' failed
原因:步骤脚本非零退出,该 Job 标记失败,后续步骤不再执行。
处理:这是预期行为。要点是退出码语义——步骤自身的 exit 3 反映在 exitcode '3' 行,而 act 进程最终退出码为 1(实测 EXIT=1,不是 3);外层脚本/CI 判断只看 0 与非 0。
6.9 需要真实 checkout 时的 github.com 网络波动
现象(实测 --no-skip-checkout 模式下克隆 actions/checkout,完整回显):
[Checkout Demo/checkout] ☁ git clone 'https://github.com/actions/checkout' # ref=v4
[Checkout Demo/checkout] Unable to clone https://github.com/actions/checkout refs/heads/v4: read tcp 172.17.0.30:47968->20.205.243.166:443: read: connection reset by peer
[Checkout Demo/checkout] read tcp 172.17.0.30:47968->20.205.243.166:443: read: connection reset by peer
[Checkout Demo/checkout] ⭐ Run Complete job
[Checkout Demo/checkout] ✅ Success - Complete job
[Checkout Demo/checkout] 🏁 Job failed
Error: read tcp 172.17.0.30:47968->20.205.243.166:443: read: connection reset by peer
原因:act 默认把本地仓库直接复制进执行器(跳过真实 checkout);启用 --no-skip-checkout 后需要访问 github.com 拉取 action,实测该域名偶发连接重置/TLS 握手超时(多次实测分别出现过 connection reset by peer 与 TLS handshake timeout 两种报错)。
处理:重试即可成功(实测多次复现均重试通过);持续失败时为 Docker Engine 配置代理,或保持默认本地复制模式(不启用 --no-skip-checkout)。
七、常见问题
Q1:/root/.cache 下两个缓存目录可以整目录删除吗?
可以。实测清空后立即运行工作流,两个目录自动重建(回显见 3.4 节),不影响后续使用;这是处理缓存异常的首选手段。
Q2:多个仓库共用一套 act 安装吗?
是。act 二进制全局唯一(/usr/local/bin/act),每个仓库各自维护自己的 .github/workflows/;actrc 按「XDG 路径 → HOME → 调用目录 → 命令行」顺序叠加(官方原文表述),需要仓库级差异时在仓库根目录放独立 .actrc。
Q3:内置 artifact/缓存服务的端口冲突怎么改?
--artifact-server-port 默认 34567,--cache-server-port 默认 0(随机可用端口);冲突时在 actrc 固定一个空闲端口即可(绑定地址 --artifact-server-addr 默认取本机网卡地址,多网卡服务器建议显式指定)。
Q4:--pull 开还是关?
默认 true(每次运行前向远端确认镜像,日志 forcePull=true);日常重复验证改 --pull=false 加速(实测同环境单 Job 从数十秒降到数秒级),怀疑镜像漂移或首次使用某映射时再临时开 true。
Q5:想看每一步的完整 Docker 调用细节怎么办?
加 -v --verbose(help 原文:verbose output);配合 --json 可得到结构化完整日志(样例见《act 常用 CLI 命令与工具详解》4.7 节)。
Q6:日志里的 ⭐✅🏁 符号显示异常?
act 默认输出含 emoji 与彩色控制符,要求终端为 UTF-8 编码;脚本消费日志时建议加 --json 或 -q 获得纯文本/结构化输出。
八、参考链接
- 官方 Usage guide:https://nektosact.com/usage/index.html
- 官方 Known issues:https://nektosact.com/known_issues/index.html
- workflow schema 校验:https://nektosact.com/usage/schema.html
- GitHub 仓库 / Releases / Issue 列表:https://github.com/nektos/act
- 平台镜像说明(Runners):https://nektosact.com/usage/runners.html
- 站内相关:《act 介绍与选型指南》(定位与选型);《Ubuntu 22.04 安装 act 指南》(安装/actrc/升级降级细节);《act 常用 CLI 命令与工具详解》(全参数与回显);《GitHub Actions 配置参数详解》(云端 Runner 侧运维对照)