【发布时间】:2017-06-22 21:54:42
【问题描述】:
我正在尝试将 Bitbucket Pipelines 配置为自动将 Golang 代码编译到 Linux、OSX 和 Windows。我为此使用了 Go 的交叉编译功能;管道运行 Linux 环境,并通过设置 GOOS 和 GOARCH 的值交叉编译到 OSX 和 Windows。但是,我无法让 Windows 构建工作 - 它出错并告诉我它找不到某个包。 Linux 和 OSX 构建都成功。但是,Windows 构建失败,告诉我它找不到 /go/src/github.com/sirupsen/logrus/hooks/syslog。之前的两个版本都成功使用了这个包,并且都运行了
ls /go/src/github.com/sirupsen/logrus/hooks/syslog
ls ${GOPATH}/src/github.com/sirupsen/logrus/hooks/syslog
构建命令之前的行显示该文件夹中的两个 Go 文件。我怀疑 Windows 文件系统试图与 Linux 文件系统通信可能有问题?我花了几个小时搜索和试验,但似乎没有任何解决问题的方法。
【问题讨论】:
-
这是因为
syslog代码,因为它正在访问 Unix/Linux 服务,所以配置为不在 Windows 上构建,正如 github.com/sirupsen/logrus/blob/master/hooks/syslog/syslog.go 顶部的特殊注释(构建标签)所示。答案中的稍长版本即将发布。 -
(所以这不是管道问题等。您需要确保实际代码在 Windows 上构建时仅引用适用于 Windows 的包。)
标签: go cross-compiling bitbucket-pipelines