推荐的CI服务器Go生成系统?

推荐的CI服务器Go生成系统?,go,Go,所以我有一个go项目,有go-gettable依赖项、测试等 我想把它整合到詹金斯身上。除了编写makefiles之外,是否有人推荐用于此用例的go自动构建系统 我需要: 自动安装go-get deps(它们当然可以在规范文件中) 递归构建 运行测试 GOPATH/GOROOT管理(隔离SDK和路径) 我过去用过godag做这类工作,但它似乎有点缺乏维护 编辑:目前我正在使用以下脚本作为构建步骤直接输入Jenkins: #this gets the dependencies but doesn'

所以我有一个go项目,有go-gettable依赖项、测试等

我想把它整合到詹金斯身上。除了编写makefiles之外,是否有人推荐用于此用例的go自动构建系统

我需要:

  • 自动安装go-get deps(它们当然可以在规范文件中)
  • 递归构建
  • 运行测试
  • GOPATH/GOROOT管理(隔离SDK和路径)
  • 我过去用过godag做这类工作,但它似乎有点缺乏维护

    编辑:目前我正在使用以下脚本作为构建步骤直接输入Jenkins:

    #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代理设置:

    • 安装围棋
    • 添加转到路径
    • 当路径更改时,不要忘记重新启动代理
    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

    对Go的支持由TeamCity提供,不需要外部插件。
    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)中运行,运行测试并交叉编译二进制文件。要获取覆盖率数据,只需指定应在构建配置的常规设置中发布的人工制品/文件即可。