2014-05-24 134 views
4

我想知道是否有任何方便的方法将代码自动化部署到GO中的活动服务器,无论是标准内置方法还是其他方式。自动执行应用程序部署

我想要的东西,谷歌应用程序引擎一样,我只是执行命令,并将其上传到服务器,并触发重新启动。

(最后我希望有一个git的承诺触发重建和重新部署,但倒在未来的轨道,多数民​​众赞成)

+0

关于围棋的好处是,你并不需要在接收端运行git:这使得堪忧关于版本控制,让您的服务器与开发环境(等)保持同步是一个非问题。在你的本地git服务器上设置一个post-commit钩子和/或使用像Travis CI这样的CI系统(按照@Fabio Gomes的答案)运行你的测试,构建你的应用程序,并将二进制*仅推送到你的服务器。停止现有的,开始新的,离开你。无需安装/配置git服务器或在服务器上运行! – elithrar

+1

@elithrar是的,这是关于Go的最好的事情之一。正如你指出的那样,像Travis这样的大多数CI服务器可以使用FTP进行部署,例如:http://docs.travis-ci.com/user/deployment/custom/所以如果你想部署到自定义服务器或者一个vps你只需要使用Travis来构建和部署二进制文件。 –

回答

5

我建议Travis CI + Heroku

你可以只是一个混帐推部署到Heroku的直接,但我喜欢用特拉维斯构建和运行前的测试。

有一些导游在网上,但我会试着直接去点:

你将需要什么?

  • Github上的帐户
  • 特拉维斯帐户(与github上的联系,免费的,如果开源)
  • Heroku应用(免费测功机的伟大工程)

设置

在你github回购,创建以下文件:

之后去到你的帐户特拉维斯,添加您的存储库并启用构建它。

下面是一个样本最小的配置文件的内容(根据我的应用程序,我部署到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和。去-DIR是Heroku的CONFIGS因此它可以改变,如果你正在部署一个web应用程序,你可以阅读更多的heroku documentation

一个重要的和容易漏诊点是构建包没有它,部署将无法工作。

阅读特拉维斯文档,以了解如何encrypt the heroku key

它是如何工作的?

基本上,每个推到你的仓库将触发特拉维斯CI构建,如果它传递将部署应用的Heroku,所以你设置这一次,打造+部署只是推开;)

此外,Travis还会自动构建并更新所有合并请求的状态到存储库。

要看看我的配置和建设,请看看我的Travis buildmy repository与我的工作CONFIGS

+0

非常好的答案。可能值得研究的一些额外工具是https://github.com/etsy/deployinator/,https://github.com/racker/dreadnot。 – Intermernet

+0

Heroku不支持GO。一家小型机构/创业公司的Travis CI每年花费129美元。 – Jacob

+0

@Jacob Heroku并不支持它,它支持定制的构建包,Go有很好的构建包。另外,这也是我基于简单部署和“无忧”解决方案而推荐的。如果你想要一个免费的解决方案,那么就有很多东西,并且当Go编译成单个二进制文件时,你可以随时编写自己的文件。 –