2016-05-16 90 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