无法配置GitHub Actions构建Go项目,go.mod解析报错
问题现象
本地执行go build完全正常,但GitHub Actions构建时触发如下错误:
Run go build -v ./...
go: errors parsing go.mod:
/home/runner/work/goActionsTest/goActionsTest/go.mod:1: unknown directive: version
/home/runner/work/goActionsTest/goActionsTest/go.mod:2: unknown directive: oid
/home/runner/work/goActionsTest/goActionsTest/go.mod:3: unknown directive: size
Error: Process completed with exit code 1.
本地go.mod为正常格式:
module test go 1.20
核心原因
GitHub Actions环境中拉取到的go.mod并非你本地的正常版本,文件内容被替换为包含version/oid/size这类非Go模块指令的异常内容,导致Go工具链无法解析。
解决方案
1. 验证远程仓库的go.mod
直接在GitHub仓库页面查看go.mod内容,确认是否与本地一致。若不一致,重新提交正确的go.mod到远程仓库。
2. 在工作流中添加文件检查步骤
修改GitHub Actions工作流,新增步骤打印go.mod内容,确认拉取到的文件是否正常:
jobs: build: runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 # 新增步骤查看go.mod内容 - name: Inspect go.mod run: cat go.mod - name: Set up Go uses: actions/setup-go@v4 with: go-version: '1.20' - name: Build run: go build -v ./...
运行工作流后查看该步骤输出,即可确认go.mod是否被错误替换。
3. 检查actions/checkout配置
若仓库包含子模块或使用了特殊checkout参数,可能导致文件拉取异常。确保actions/checkout@v3使用默认配置即可正常拉取仓库内容。
4. 重新初始化模块并提交
若上述方法无效,尝试本地重新初始化Go模块后提交:
# 删除异常的mod文件 rm go.mod go.sum # 重新初始化模块 go mod init test go mod tidy # 提交到远程仓库 git add go.mod go.sum git commit -m "fix: correct go.mod file" git push
内容的提问来源于stack exchange,提问作者LukeN

