推荐的CI服务器Go生成系统?
所以我有一个go项目,有go-gettable依赖项、测试等 我想把它整合到詹金斯身上。除了编写makefiles之外,是否有人推荐用于此用例的go自动构建系统 我需要:推荐的CI服务器Go生成系统?,go,Go,所以我有一个go项目,有go-gettable依赖项、测试等 我想把它整合到詹金斯身上。除了编写makefiles之外,是否有人推荐用于此用例的go自动构建系统 我需要: 自动安装go-get deps(它们当然可以在规范文件中) 递归构建 运行测试 GOPATH/GOROOT管理(隔离SDK和路径) 我过去用过godag做这类工作,但它似乎有点缺乏维护 编辑:目前我正在使用以下脚本作为构建步骤直接输入Jenkins: #this gets the dependencies but doesn'
#this gets the dependencies but doesn't install them, avoiding permission problems
go get -d
#build the packages, -x outputs the compiler command line
go build -x
#this was tricky - ./... means "for each sub-package recursively"
go test ./...
我在Mac上使用TeamCity构建服务器,该服务器运行一个rake文件,在rake文件中,我执行所有命令以获得依赖性(go-gets),测试并构建到正确的环境 如果你在写Rake文件时需要任何指针,请告诉我
作为旁注,我一直在使用这个框架为RESTAPI创建功能测试。这已经多次保存了我的代码 你也可以与teamcity合作 下面是一个构建地形的示例 Teamcity代理设置:
- 安装围棋
- 添加转到路径
- 当路径更改时,不要忘记重新启动代理
- 使用代理端签出(如果我们想包括.git文件夹,许多构建脚本都会使用它)
- 使用签出规则(我们希望使用Go约定): +:。=>src/github.com/mitchellh/terraform
echo cd %system.teamcity.build.checkoutDir%
cd "%system.teamcity.build.checkoutDir%"
path=C:\Program Files (x86)\Git\bin;%env.Path%;%system.teamcity.build.checkoutDir%\bin;
echo path=C:\Program Files (x86)\Git\bin;%env.Path%;%system.teamcity.build.checkoutDir%\bin;
set GOPATH=%system.teamcity.build.checkoutDir%
echo set GOPATH=%system.teamcity.build.checkoutDir%
echo "Getting dependancies"
go get golang.org/x/tools/cmd/vet
go get golang.org/x/tools/cmd/cover
go get golang.org/x/tools/cmd/stringer
go get github.com/mitchellh/gox
echo cd %system.teamcity.build.checkoutDir%\src\github.com\mitchellh\terraform
cd "%system.teamcity.build.checkoutDir%\src\github.com\mitchellh\terraform"
echo "Update resources"
go get ./...
echo "Run static code analysis"
go tool vet -asmdecl -atomic -bool -buildtags -copylocks -methods -nilfunc -printf -rangeloops -shift -structtags -unsafeptr .
echo "Build"
cd scripts
sh build.sh
echo "Run unit tests"
go test -timeout=30s -parallel=4
echo "Run code coverage"
go test -coverprofile=coverage.out
go tool cover -html=coverage.out
rm coverage.out
自2019年8月起,TeamCity 2019.1现在支持直接Go。
见“ 要在TeamCity中启用Go支持
- 转到
|生成配置设置
,生成功能
- 单击添加构建功能,然后
- 从列表中选择
Golang
TeamCity解析go测试命令执行的结果。结果是持久的,可以从历史的角度来回顾这些数据。
因此,所有与测试报告相关的TeamCity特性现在都可供Go开发人员使用
默认情况下,Go get获取您的依赖项。您不需要做任何事情。尽管go测试似乎不能递归工作。或者我遗漏了什么?自动获取的另一个问题——我自己的应用程序有一个不可获取的名称空间(例如-example.com/myproject)。这很好,通常情况下,只有go-get尝试自动获取它,但失败了,显然没有办法告诉它不要这样做。我不知道递归测试,关于本地包,如果包位于
gopath
的项目目录中,就像src->[project]->[local package]中一样,它们应该是好的
。默认情况下,该工具将在src中查找本地包,您只需按以下方式指定本地包:[project directory]/[package directory]
很好,很高兴听到它对您有用。谢谢。我希望有一个工具至少能从我的源代码树生成一个makefile或配置选项。我的意思是我可以写一个bash脚本,但我希望能有更自动化的东西。谢谢!如何向TeamCity发送覆盖率数据?通过TeamCity,还可以构建Go应用程序,而无需在代理端进行额外安装。您可以指定构建步骤应该在适当的Docker容器(例如,golang:1.9-alpine)中运行,运行测试并交叉编译二进制文件。要获取覆盖率数据,只需指定应在构建配置的常规设置中发布的人工制品/文件即可。