TFS 2018本地版创建构建时找不到Go(Preview)模板的解决指引
如何在TFS 2018本地版构建Go应用
嗨,我来帮你搞定这个问题~ 确实,Go(Preview)构建模板是在后续版本的Azure DevOps Server(原TFS)中才引入的,TFS 2018本身并没有内置这个模板,但我们完全可以通过自定义构建流程来实现Go应用的构建,一步步来:
1. 先给构建代理装Go环境
首先得在你的TFS构建代理机器上装好Go:
- 下载对应你项目需求的Go版本安装包,安装到代理机器的固定路径,比如Windows上的
C:\Go,或者Linux上的/usr/local/go - 配置环境变量:把
GOROOT设为Go的安装路径,GOPATH设为你的Go项目工作目录(也可以在构建时临时指定),还要把Go的bin目录(比如%GOROOT%\bin或$GOROOT/bin)加到系统PATH里,这样代理能找到go命令
2. 创建空的构建定义
在TFS里新建构建定义时,选Empty Process(空流程)作为基础模板,这样我们可以自己加需要的任务,灵活度更高。
3. 一步步添加构建任务
第一步:确认源代码拉取
空流程默认会带一个Get Sources任务,你只要确认代码仓库(Git或TFVC)配置对了,能正常拉取到你的Go项目代码就行。
第二步:设置GOPATH(可选但推荐)
如果代理机器没全局配置GOPATH,或者每个项目需要独立的依赖目录,就加个Command Line任务:
- 任务名称可以叫
设置GOPATH - Windows下脚本这么写:
Linux/macOS的话用这个:set GOPATH=$(Build.SourcesDirectory) echo 当前GOPATH:%GOPATH%export GOPATH=$(Build.SourcesDirectory) echo 当前GOPATH:$GOPATH
第三步:下载依赖
再加个Command Line任务来拉取Go依赖:
- 任务名称叫
下载Go依赖就行 - 如果你的项目用Go Modules(现在主流都是这个),脚本写:
要是是用go mod downloadgo get的老项目,就换成:go get -d ./...
第四步:编译应用
核心的编译步骤来了,还是加Command Line任务:
- 任务名称叫
编译Go应用 - Windows下编译成exe的例子:
Linux/macOS下编译成可执行文件:go build -o $(Build.ArtifactStagingDirectory)/myapp.exe ./cmd/myapp
要是需要交叉编译(比如在Windows上构建Linux版本),先设置环境变量再编译:go build -o $(Build.ArtifactStagingDirectory)/myapp ./cmd/myappset GOOS=linux set GOARCH=amd64 go build -o $(Build.ArtifactStagingDirectory)/myapp-linux ./cmd/myapp
第五步:发布构建产物(可选)
如果要保存编译好的文件,就加个Publish Build Artifacts任务:
- 把Path to publish设为
$(Build.ArtifactStagingDirectory) - Artifact name可以叫
drop或者你自定义的名字 - Artifact publish location选TFS服务器或者你的文件共享就行
4. 测试一下构建流程
保存好构建定义后,手动触发一次构建,看看每个任务的日志,确认依赖下载成功、编译没报错,产物也正常发布了就没问题。
额外小技巧
- 如果你的代理是多任务的,怕环境变量冲突,可以直接用Go的绝对路径执行命令,比如
C:\Go\bin\go.exe build ... - 还可以加个测试任务,执行
go test ./...跑单元测试,要是想把测试结果传到TFS,可以先把测试输出转成JUnit格式(比如用gotestfmt工具),再用Publish Test Results任务导入结果
内容的提问来源于stack exchange,提问作者Meta-Coder
相关产品推荐
相关产品推荐

