Deployment Golang应用程序部署

Deployment Golang应用程序部署,deployment,go,Deployment,Go,我即将完成我的应用程序,我想将其部署到专用服务器上。我希望能够自动执行以下操作: 运行go测试 打包应用程序 在服务器中部署它 具有回滚的能力 对于go应用程序,我如何轻松地实现这一点?我个人使用Fabric(基于python)进行应用程序部署,使用Chef进行服务器管理。问题是,由于Go的工件只是一个大的二进制文件,部署者并不重要,构建过程更重要 我只是将Go二进制文件打包为tar.gz,并使用Fabric将它们发送到服务器。我从未使用过Capistrano,但据我所知,它非常适合部署Go

我即将完成我的应用程序,我想将其部署到专用服务器上。我希望能够自动执行以下操作:

  • 运行go测试
  • 打包应用程序
  • 在服务器中部署它
  • 具有回滚的能力

对于go应用程序,我如何轻松地实现这一点?

我个人使用Fabric(基于python)进行应用程序部署,使用Chef进行服务器管理。问题是,由于Go的工件只是一个大的二进制文件,部署者并不重要,构建过程更重要


我只是将Go二进制文件打包为tar.gz,并使用Fabric将它们发送到服务器。我从未使用过Capistrano,但据我所知,它非常适合部署Go应用程序

我用的布料也差不多。我有一个任务,将我的二进制文件上传到临时文件,停止当前进程,在旧的二进制文件上交换新的二进制文件,然后重新启动它。服务器配置/自动化由SaltStack处理。帽子和布料非常相似,所以如果我是OP,我会使用我喜欢的东西。@elithrar我有一个从say
/opt/
/opt/
的符号链接。因此,部署只需重新链接符号链接并重新启动,回滚不需要重新部署,只需重新链接到旧版本。加上一个“垃圾收集器”删除旧版本。谢谢@Not_a_高尔夫球手。我重新构造了这个问题,以解释我想要实现的目标。@juanpaolo您混合了两种不同的东西-构建/ci系统和部署系统。再说一遍,Go并没有强制执行任何特殊的操作。就我个人而言,我使用Hudson进行CI/构建(Go集成是非常基本的,主要是调用shell命令),使用Fabric进行部署(这也是作为Hudson的作业激活的)。@Not_a_Golfer我希望它在实际部署之前运行测试。如果失败,则停止部署。事实上,想想看,通过Capistrano应该是可行的。但就像你提到的,因为Go并没有真正强制我坚持使用某个库,所以我可能会使用Capistrano。谢谢