Deployment Go服务的部署策略?

Deployment Go服务的部署策略?,deployment,build,ssh,go,remote-server,Deployment,Build,Ssh,Go,Remote Server,我正在用Go编写一些新的web服务 无论目标平台如何,我都可以使用哪些部署策略?例如,我正在Mac上开发,但是登台/生产服务器将运行Linux 是否有一些现有的部署工具可用于支持Go?如果没有,我可以做些什么来简化流程 我使用LiteIDE进行开发。有没有办法将LiteIDE挂接到部署过程中?不幸的是,由于Go是一种如此年轻的语言,目前还不太存在,或者至少很难找到它们。我也会对开发这样的围棋工具感兴趣 我所发现的是,有些人一直在自己做这件事,或者说他们已经为自己做了这件事 很可能是你必须自己做的

我正在用Go编写一些新的web服务

无论目标平台如何,我都可以使用哪些部署策略?例如,我正在Mac上开发,但是登台/生产服务器将运行Linux

是否有一些现有的部署工具可用于支持Go?如果没有,我可以做些什么来简化流程


我使用LiteIDE进行开发。有没有办法将LiteIDE挂接到部署过程中?

不幸的是,由于Go是一种如此年轻的语言,目前还不太存在,或者至少很难找到它们。我也会对开发这样的围棋工具感兴趣

我所发现的是,有些人一直在自己做这件事,或者说他们已经为自己做了这件事

很可能是你必须自己做的事情。而且你不必把自己限制在shell脚本中——在Go中完成它!事实上,许多围棋工具都是用围棋编写的。您应该避免在目标系统上编译,因为在生产系统上使用构建工具通常是一种不好的做法。Go使交叉编译二进制文件变得非常容易。例如,这就是为ARM和Linux编译的方式:

GOARCH=arm GOOS=linux go build myapp

您可以做的一件事是跳上或加入,并询问其他地鼠正在做什么。

Capistrano听起来是一个单独部署的好主意。您还可以按照Luke的建议进行交叉编译。两种方法都很好


但更一般地说。。。我也在OSX(开发)和Linux(部署)之间左右为难,事实上,我最终只是通过VirtualBox和Vagrant在虚拟机上开发。我正在使用TextMate 2进行文本编辑,但在Mac上安装许多开发工具只是一个主要的PITA,我更喜欢在后台运行Debian之类的东西。好处是——这个虚拟环境可以镜像部署环境,这样我就可以在部署代码时避免意外,不管是哪种语言。

我自己还没有尝试过,但看起来你可以使用golang(或者Dave Cheney的),尽管有一些警告

但是,如果您需要将环境与生产相匹配(大多数情况下您可能应该这样做),那么按照Marcin的建议去做是最安全的

您可以在上找到一些预构建的VirtualBox图像,尽管自己创建一个非常简单

我可以做些什么来简化流程

Go 1.5(2015年第3季度)的交叉编译理念应该更具吸引力,详情见“”:

之前:

对于成功的交叉编译,您需要

  • 目标平台的编译器,如果它们不同于您的主机平台,即您在darwin/amd64(6g)上,并且您希望为linux/arm(5g)编译
  • 目标平台的标准库,其中包括在构建Go发行版时生成的一些文件
在(Go 1.5+)之后:

随着计划在1.5版本中实现,第一个问题现在已经解决

为达尔文/386构建

或为linux/arm构建

我正在Mac上开发,但是登台/生产服务器将运行Linux


考虑到Go的编译器在Go中,从Mac生成Linux可执行文件的过程应该变得简单。

我现在可能有点晚了,但最近我写了一篇博客文章,介绍了我如何使用Capistrano在本地机器上交叉编译部署Go


如果您仍然感兴趣,请尝试一下:

链接已断开。502坏网关
package main

import "fmt"
import "runtime"

func main() {
        fmt.Printf("Hello %s/%s\n", runtime.GOOS, runtime.GOARCH)
}
% env GOOS=darwin GOARCH=386 go build hello.go
# scp to darwin host
$ ./hello
Hello darwin/386
% env GOOS=linux GOARCH=arm GOARM=7 go build hello.go
# scp to linux host
$ ./hello
Hello linux/arm