2016-05-16 60 views
2

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

在执行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) 

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

+0

听起来好像您正在为Jenkins使用Go Plugin,它会自动为您设置“GOROOT”。我只是用一个自定义的工作区来测试它,它工作正常 - 'GOROOT'指向Go安装,而不是工作区。正如David在他的回答中提到的那样,你应该确保'GOROOT'没有被设置在别处(例如在全局或节点配置中,或在你的作业配置中)。 –

回答

1

GOROOT应该是你分销的根源。通常你不需要设置它。

清除并重试。如果仍然无法找到字节,请将GOROOT设置为您安装的目录。基本上,这是父/子在哪里存在的父目录。

2

我也使用jenkin,但自己写build.sh。 为了给大家一个参考:

build.sh

#!/usr/bin/bash 

WORKROOT=$(pwd) 
cd ${WORKROOT} 

# unzip go environment 
go_env="go1.6.2.linux-amd64.tar.gz" 
wget -c http://path/to/go/go1.6.2.linux-amd64.tar.gz 
tar -zxf $go_env 
if [ $? -ne 0 ]; 
then 
    echo "fail in extract go" 
    exit 1 
fi 
echo "OK for extract go" 
rm -rf $go_env 

# prepare PATH, GOROOT and GOPATH 
export PATH=$(pwd)/go/bin:$PATH 
export GOROOT=$(pwd)/go 
export GOPATH=$(pwd) 

# build 
cd path/to/your/project 
go build 
if [ $? -ne 0 ]; 
then 
    echo "fail to go build" 
    exit 1 
fi 
echo "OK for go build" 
2

除了让围棋插件处理您GOROOT,也有一些细微之处GOPATH以及当它涉及到越来越依赖。我们将我们的* .go源文件放在我们的Git存储库的根目录中,因此可以通过Dev桌面上的go命令轻松管理它们。因此,我正在使用构建脚本来欺骗Go通过符号链接认为在/ src/main下有一个名为main的包,这样我就可以使用相同的脚本构建我的所有包并提取依赖关系。这里是我的构建脚本:

#!/usr/bin/bash export GOPATH=$WORKSPACE mkdir -p $GOPATH/src ln -f -s $WORKSPACE $GOPATH/src/main go get main CGO_ENABLED=0 GOOS=linux go build -a -installsuffix cgo -o main main

相关问题