act 运维手册

act 运维手册:五层日常巡检与一键巡检脚本、平台镜像与缓存目录管理、push/pull_request 工作流模拟实战、升级回滚回归清单,以及九类故障的实测排查手册,全部命令附真实回显。

actact2026/10/18

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/actaction 缓存与宿主工作区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 升级标准流程

  1. 备份配置与记录基线:
cp /root/.config/act/actrc /root/actrc.bak.$(date +%F)
act --version
  1. 执行升级(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.
  1. 验证升级: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 获得纯文本/结构化输出。

八、参考链接