2016-05-16 6 views
2

Wir planen, Jenkin Build-Prozess für Go-Projekte einzurichten. Ich habe Custom Workspace in jenkins eingerichtet und go1.6 von "Global Tool Configuration" installiert.Jenkin Build-Setup für Go-Projekte

Ich erhalte Fehlermeldung während go build Ausführung Im Folgenden wird die GOPATH und 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) 

Was ich hier fehlt? .. Vielen Dank für Ihre Hilfe ..

+0

bauen. Es klingt wie Sie das Go-Plugin für Jenkins verwenden, das die 'GOROOT' automatisch für Sie setzt. Ich habe es gerade mit einem benutzerdefinierten Arbeitsbereich getestet, und es hat gut funktioniert - das 'GOROOT' zeigte auf die Go-Installation, nicht auf den Arbeitsbereich. Wie David in seiner Antwort erwähnt, sollten Sie sicherstellen, dass 'GOROOT' nicht an anderer Stelle gesetzt wird (z. B. in der globalen Konfiguration oder Knotenkonfiguration oder in Ihrer Jobkonfiguration). –

Antwort

1

GOROOT sollte die Wurzel deiner Go-Distribution sein. Normalerweise müssen Sie es nicht einstellen.

Deaktivieren Sie das und versuchen Sie es erneut. Wenn es immer noch keine Bytes finden kann, setzen Sie GOROOT auf das Verzeichnis, in dem Sie installiert haben. Im Grunde genommen ist dies das übergeordnete Verzeichnis, egal wo bin/go existiert.

2

Ich benutze auch jenkin aber schreibe build.sh selbst. Sie einen Verweis geben:

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

Neben dem Plugin Ihre GOROOT Griff Loslassens, gibt es einige Nuancen zum GOPATH auch wenn es darum geht, Abhängigkeiten kommt. Wir setzen unsere * .go-Quelldateien in das Stammverzeichnis unserer Git-Repositories, damit sie auf den Dev-Desktops problemlos über go-Befehle verwaltet werden können. Also benutze ich ein Build-Skript, um Go zu denken, dass es ein Paket namens main unter/src/main über einen Symlink gibt, so dass ich das gleiche Skript verwenden kann, um alle meine Go-Pakete zu erstellen und die Abhängigkeiten zu ziehen. Hier ist mein Build-Skript:

#!/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

Verwandte Themen