GitHub Actions替换set-output为$GITHUB_OUTPUT后仍报错求助
问题原因及解决方法
常见原因
- 第三方Action依赖未更新:你使用的sqlfluff相关Action或其他依赖Action内部仍在调用已弃用的
::set-output命令,并非你自己的脚本问题。 - 旧版本Action缓存残留:GitHub会缓存Action的旧版本,即便你切换到新版本,缓存的旧代码仍可能被执行。
- 间接调用的工具未排查:脚本中调用的旧版本sqlfluff或其他工具,内部输出了
::set-output语句。 - 遗漏未修改的步骤:工作流的其他环节(包括复用的子工作流)中仍存在
::set-output,你仅修改了部分代码。
解决步骤
更新所有第三方Action
查看工作流中用到的Action(如sqlfluff相关Action)的官方文档,确认是否有修复set-output弃用问题的新版本,将Action版本号更新至最新稳定版。示例:# 旧写法 - uses: some/sqlfluff-action@v1 # 新写法,替换为最新版本 - uses: some/sqlfluff-action@v2.1.0清理Action缓存
进入仓库的Actions页面,点击右上角「Manage workflow runs」,选择「Caches」标签,找到相关缓存并删除。若使用了actions/cache,也可在工作流中添加清理步骤:- name: Clear old cache uses: actions/cache@v3 with: path: | # 填写你的缓存路径 key: ${{ runner.os }}-dummy-key restore-keys: | ${{ runner.os }}-dummy-key升级sqlfluff版本
旧版本sqlfluff可能内置适配旧GitHub Actions的输出逻辑,执行命令升级到最新版:pip install --upgrade sqlfluff若在工作流中安装,确保指定最新版本:
- name: Install sqlfluff run: pip install sqlfluff==3.2.0全局排查所有工作流文件
在仓库中全局搜索::set-output,覆盖主工作流、子工作流、复用工作流文件,将所有实例替换为新的输出方式:- Linux/macOS runner 正确写法:
echo "lint_errors=$errors" >> $GITHUB_OUTPUT - Windows PowerShell runner 正确写法:
echo "lint_errors=$errors" | Out-File -FilePath $env:GITHUB_OUTPUT -Append -Encoding utf8
- Linux/macOS runner 正确写法:
检查脚本调用的其他工具
若你的脚本中调用了自定义脚本或其他工具,检查这些文件内部是否存在::set-output语句,一并替换为新的输出方式。
内容的提问来源于stack exchange,提问作者Dude
相关产品推荐
相关产品推荐

