Golang 在未连接到互联网的 linux 机器上编译

问题描述

由于公司政策,我们有一台 CI/CD 服务器未连接到 Internet。

我想在这台服务器上运行单元测试。

我可以将 WinScp 文件传送给它。 为了让它工作,我想我会从我的源 Windows 机器上 FTP 编译工作的所有文件,基本上是复制 GOPATH 目录中的所有文件

但我仍然得到错误,例如我实际上有这个文件 /export/home/teamcity/go/src/github.com/jinzhu/cop[email protected]

Gopath 集 [17:40:40][步骤 1/1] GOPATH="/export/home/teamcity/go"

但是 CI/CD 构建会出现此错误

[步骤 1/1] 去:github.com/jinzhu/cop[email protected]: git fetch -f https://github.com/jinzhu/copier refs/heads/:refs/heads/ refs/tags/:refs/tags/ 在 /export/home/teamcity/go/pkg/mod/cache/vcs/556feec929544a421f03ed1922f1d1bfffe10a3eaaf694889bbdbe940ff0218:exit28 [17:40:41] [步骤 1/1] 致命:无法访问“https://github.com/jinzhu/copier/”:无法解析主机:github.com;名称或服务未知

有没有人有在没有连接到互联网的服务器上编译 Golang 代码的经验?

解决方法

您应该查看 go modules 的官方文档以了解其工作原理。

就您而言,只需先下载所有依赖项:

go mod download

然后将所有依赖项复制到您的项目中:

go mod vendor

之后,将您的代码与此供应商一起发送。它包括在您的服务器上构建所需的所有包。

go build -mod vendor