在GitLab CI中运行godog出现导入路径非法字符错误如何解决?
问题修复方案
报错根因
你遇到的两个报错根源都来自路径配置错误:
import path contains invalid character ':': "https:/github.com/steinko/GodogTutorial/godogs"
这个报错是因为你在gitlab-ci.yml中定义的REPO_NAME带了https://前缀,Go语言的导入路径不允许出现冒号这类特殊字符,生成测试主程序时直接识别为非法路径。
第二个undefined: _test报错是衍生问题:因为包导入路径非法,测试包没有被正确加载,所以测试标识无法被识别。
修复步骤
1. 修改gitlab-ci.yml变量配置
将variables段的REPO_NAME去掉https://前缀,修改后如下:
variables: REPO_NAME: github.com/steinko/GodogTutorial
2. 修正go.mod模块声明
你当前godogs目录下的go.mod第一行声明为module godogs,和实际的项目路径不匹配,修改为:
module github.com/steinko/GodogTutorial/godogs go 1.16 require ( github.com/cucumber/godog v0.11.0 github.com/spf13/pflag v1.0.5 // indirect github.com/stretchr/testify v1.6.1 )
3. 可选优化(Go 1.11+ 模块模式适配)
Go 1.16默认开启模块模式,不需要手动创建GOPATH软链,你可以简化gitlab-ci.yml的before_script配置,直接在项目目录执行操作即可,避免路径映射错误。
修改完成后重新运行CI任务即可正常执行godog测试。
内容的提问来源于stack exchange,提问作者stein korsveien
相关产品推荐
相关产品推荐

