自动化的Go应用部署

4

我想知道是否有任何方便的方法来自动化部署GO代码到生产服务器,可以使用标准内置的方法,或其他方式。

我需要类似于Google App Engine的功能,只需运行命令即可上传到服务器并触发重新启动。

(最终我希望Git提交可以触发重建和重新部署,但这是未来的计划)


Go的好处在于您不需要在接收端运行Git:这使得担心版本控制、保持服务器与开发环境同步等问题成为无关紧要。在本地git服务器上设置post-commit hook和/或使用像Travis CI这样的CI系统(根据@Fabio Gomes的答案),运行您的测试,构建您的应用程序并仅将二进制文件推送到您的服务器。停止现有的服务,启动新服务,然后就可以开始了。无需在服务器上安装/配置git服务器或Go! - elithrar
1
@elithrar 是的,这是 Go 最好的一点之一。正如你所指出的那样,大多数 CI 服务器(如 Travis)可以使用 FTP 进行部署,例如:http://docs.travis-ci.com/user/deployment/custom/,因此如果您想要部署到自定义服务器或 VPS,则只需要使用 Travis 构建和部署二进制文件即可。 - Fabio Gomes
1个回答

阿里云服务器只需要99元/年,新老用户同享,点击查看详情
5
我建议使用Travis CIHeroku。 你可以直接使用git push部署到heroku,但我喜欢在此之前使用Travis进行构建和测试。 有一些在线指南,但我将直接进入重点: 你需要什么? -Github账户 -Travis账户(与Github关联,如果是开源项目则免费) -空的Heroku应用程序(免费dyno效果很好) 设置 在你的github仓库中,创建以下文件: -.travis.yml(更多信息请参阅Travis CI documentation) -Procfile -.go-dir 之后,转到Travis帐户,添加您的存储库并启用其构建。 这是一个示例最小配置文件内容(基于我部署到heroku的应用程序):

.travis.yml

language: go
go:
  - tip
deploy:
  provider: heroku
  buildpack: https://github.com/kr/heroku-buildpack-go.git
  api_key:
    secure: <your heroku api key encripted with travis encrypt>
  on: master 

Procfile

worker: your-app-binary

.go-dir

your-app-binary

Procfile和.go-dir是heroku的配置文件,因此如果您部署的是Web应用程序,则可能会有所不同,您可以在heroku文档中了解更多信息。

一个重要且容易被忽视的点是构建包,没有它,部署将无法正常工作。

阅读Travis文档以了解如何加密heroku密钥

它是如何工作的?

基本上,对您的存储库进行的每次推送都会触发Travis CI构建,如果通过,则会将应用程序部署到heroku,因此您只需设置一次即可进行构建+部署;)

此外,Travis会自动构建并更新所有针对您存储库的拉取请求的状态。

要查看我的配置和构建,请查看我的Travis构建我的存储库,其中包含我的工作配置。


非常好的答案。可能值得一看的一些额外工具是 https://github.com/etsy/deployinator/,https://github.com/racker/dreadnot。 - Intermernet
Heroku不支持GO语言。Travis CI对于小型组织/初创公司每年的费用为129美元。 - Jay
Heroku并不官方支持Go语言,但它支持自定义构建包,并且有一个非常好的适用于Go的构建包。基于部署的简单性和“无需繁琐操作”的解决方案,这是我推荐的方式。如果您想要一个免费的解决方案,那么有很多可以选择,而且由于Go编译成单个二进制文件,您总是可以自己编写。 - Fabio Gomes

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,