Jenkins 为 Go 项目构建设置

我们计划为 Go 项目设置 Jenkins 构建流程。我在 jenkins 中设置自定义工作区并从“全局工具配置”安装 go1.6。


执行时收到错误消息go build 下面是 GOPATH 和 GOROOT


GOPATH /var/lib/jenkins/workspace/project/go

GOROOT  /var/lib/jenkins/workspace

ain.go:20:2: cannot find package "bytes" in any of:

    /var/lib/jenkins/workspace/src/pkg/bytes (from $GOROOT)

    /var/lib/jenkins/workspace/project/go/src/bytes (from $GOPATH)

我在这里缺少什么?..感谢您的帮助..


FFIVE
浏览 228回答 3
3回答

慕田峪4524236

除了让 Go 插件处理您的 GOROOT 之外,在获取依赖项时,GOPATH 也有一些细微差别。我们将 *.go 源文件放在 Git 存储库的根目录中,因此可以通过开发桌面上的 go 命令轻松管理它们。因此,我正在使用构建脚本来欺骗 Go,让 Go 认为 /src/main 下通过符号链接有一个名为 main 的包,这样我就可以使用相同的脚本来构建我所有的 Go 包并拉取依赖项。这是我的构建脚本:#!/usr/bin/bashexport GOPATH=$WORKSPACEmkdir -p $GOPATH/src ln -f -s $WORKSPACE $GOPATH/src/maingo get mainCGO_ENABLED=0 GOOS=linux go build -a -installsuffix cgo -o main main

慕村225694

我也使用 jenkin,但自己编写 build.sh。给你一个参考:build.sh#!/usr/bin/bashWORKROOT=$(pwd)cd ${WORKROOT}# unzip go environmentgo_env="go1.6.2.linux-amd64.tar.gz"wget -c http://path/to/go/go1.6.2.linux-amd64.tar.gztar -zxf $go_envif [ $? -ne 0 ];then    echo "fail in extract go"    exit 1fiecho "OK for extract go"rm -rf $go_env# prepare PATH, GOROOT and GOPATHexport PATH=$(pwd)/go/bin:$PATHexport GOROOT=$(pwd)/goexport GOPATH=$(pwd)# buildcd path/to/your/projectgo buildif [ $? -ne 0 ];then    echo "fail to go build"    exit 1fiecho "OK for go build"

心有法竹

我建议使用Go Plugin来管理 golang 安装。安装好后,了解 golang 环境变量及其使用很重要,主要有:$GOROOT 指定安装 go 的位置$GOPATH确定您的代码所在的位置并go get安装包,默认情况下它是${HOME}/gowithEnv(["GOROOT=${root}", "PATH+GO=${root}/bin:${HOME}/go/bin"]) {    sh "go get gopkg.in/alecthomas/gometalinter.v1"    sh "gometalinter.v1 --help"}通过上面的设置,我们设置GOROOT为自定义go安装并附加$PATH我们使用go get和标准下载的二进制文件的路径go
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go