Jenkins 为 Go 项目构建设置
Jenkins build setup for Go Projects
我们计划为 Go 项目设置 Jenkin 构建过程。我在 jenkins 中设置自定义工作区并从 "Global Tool Configuration".
安装 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)
我在这里缺少什么?..感谢您的帮助..
GOROOT 应该是你的 go 发行版的根目录。一般情况下不需要设置。
清除它并重试。如果仍然找不到字节,请将 GOROOT 设置为安装 go 的目录。基本上,这是 bin/go 所在位置的父目录。
我也用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"
除了让 Go 插件处理您的 GOROOT 之外,在获取依赖项时,GOPATH 也有一些细微差别。我们将 *.go 源文件放在 Git 存储库的根目录中,因此可以通过 Dev 桌面上的 go 命令轻松管理它们。因此,我正在使用一个构建脚本来欺骗 Go 通过符号链接认为 /src/main 下有一个名为 main 的包,这样我就可以使用相同的脚本来构建我所有的 go 包并拉取依赖项。这是我的构建脚本:
#!/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
因为 jenkins 与 maven 配合得很好。你可以在 jenkins with mvn-golang plugin and also make reports compatible with jenkins
下构建 golang 项目
我建议使用 Go Plugin 来管理 golang 安装。
安装完成后,了解golang环境变量及其使用很重要,主要是:
$GOROOT
指定go的安装位置
$GOPATH
确定您的代码所在的位置,go get
安装包,默认情况下它是 ${HOME}/go
withEnv(["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
和标准 [= 下载的二进制文件的路径16=]
我们计划为 Go 项目设置 Jenkin 构建过程。我在 jenkins 中设置自定义工作区并从 "Global Tool Configuration".
安装 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)
我在这里缺少什么?..感谢您的帮助..
GOROOT 应该是你的 go 发行版的根目录。一般情况下不需要设置。
清除它并重试。如果仍然找不到字节,请将 GOROOT 设置为安装 go 的目录。基本上,这是 bin/go 所在位置的父目录。
我也用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"
除了让 Go 插件处理您的 GOROOT 之外,在获取依赖项时,GOPATH 也有一些细微差别。我们将 *.go 源文件放在 Git 存储库的根目录中,因此可以通过 Dev 桌面上的 go 命令轻松管理它们。因此,我正在使用一个构建脚本来欺骗 Go 通过符号链接认为 /src/main 下有一个名为 main 的包,这样我就可以使用相同的脚本来构建我所有的 go 包并拉取依赖项。这是我的构建脚本:
#!/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
因为 jenkins 与 maven 配合得很好。你可以在 jenkins with mvn-golang plugin and also make reports compatible with jenkins
下构建 golang 项目我建议使用 Go Plugin 来管理 golang 安装。
安装完成后,了解golang环境变量及其使用很重要,主要是:
$GOROOT
指定go的安装位置
$GOPATH
确定您的代码所在的位置,go get
安装包,默认情况下它是 ${HOME}/go
withEnv(["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
和标准 [= 下载的二进制文件的路径16=]