Go Generate在GitHub Actions(act)环境运行时报executable not found in $PATH错误
GitHub Actions本地act环境执行go generate找不到可执行文件问题解决
问题现象
在GitHub Actions的本地act库环境中运行go generate命令时,提示调用的可执行文件未在$PATH中找到,本地直接运行该命令无任何异常。
相关代码与配置
- 项目中的code.go文件内容:
package code // go:generate generator struct Code {}
- act环境中执行时抛出的错误:
running "generator": exec: "generator": executable file not found in $PATH
- 对应的GitHub Actions步骤配置:
- name: RUN GENERATOR run: generator # 该步骤可正常执行 - name: GENERATE NEW CODE working-directory: ./code run: | sudo go generate -v ./...
排查结论
打印环境变量$PATH可确认已经包含可执行文件所在的/home/runner/go/bin/路径,且上一步单独调用generator命令可以正常执行。即使确认sudo与非sudo命令的PATH完全一致,直接执行sudo generator同样会找不到该文件,该问题属于act处理Linux和Windows客户端差异的已知逻辑问题。
解决方案
定义名为$SUDO的环境变量,默认赋值为sudo,在无需权限即可安全写入文件的环境中取消该变量赋值即可,执行go generate的命令调整为$SUDO go generate -v ./...,即可兼容不同环境的执行要求。
内容的提问来源于stack exchange,提问作者dtracers
相关产品推荐
相关产品推荐

