在我的服务器上部署并构建我的go应用程序

Zic*_*ico 6 linux git macos go

我完全是新手(它看起来很棒).

因此,我想构建一个"web-"应用程序,与devel框架一起使用.问题是我在我的mac上编码(os:darwin,arch:amd64),我想在我的服务器上部署应用程序(os:ubuntu 12.04,arch:amd64).我在本地"狂欢"(所以bin/revel它是:Mach-O 64位可执行文件)在我的服务器上是不可执行的.

现在,当我推(使用git)时,我有一个post-receive脚本来构建app(revel build myapp /path/to/deploy).在我试图"开始"陶醉我的服务器之前,它也失败了.

它不起作用,我可以理解为什么,但我不知道如何获得可行的工作流程:

  1. 我的Mac上的代码
  2. 推送我的代码(使用git)
  3. 在服务器上构建应用程序

PS:我读过http://blog.gopheracademy.com/auto-deploy-revel-site,http://revel.github.io/manual/deployment.html以及关于交叉编译的文章)

Sim*_*ead 4

我不确定这是否有帮助..但这里是..

您的具体情况就是我目前在 Go 中开发第一个合适的 Web 应用程序时每天所做的事情。我在 Windows 笔记本电脑上进行开发(虽然工作很无聊……我在工作场所是一名 .NET 开发人员!),在家里的 Mac 上进行开发。然后我将其部署到 Digital Ocean 上托管的 Ubuntu 服务器。

我的工作流程是:

  • 进行任何更改。
  • 提交到存储库 (BitBucket)
  • 从存储库中拉取(无论在哪里 - 例如,在我的 Ubuntu 服务器上)
  • go build服务器上的代码
  • go get它抱怨的任何我在服务器上没有的库(例如,gorilla/mux今天不在服务器上,所以我只是运行它)
  • go build再次(如果适用)

..然后只需在服务器上运行它即可。

当开始这个工作流程时(我仍在尝试使用 bash 脚本等来完善它),我发现GOPATH跨环境的一致性确实很有帮助。

例如,我GOPATH在每台机器上是:

  • 视窗:C:\GOPATH
  • 苹果:~/go-code/
  • Linux:/home/simon/go-code/

它们每个都有完全相同的结构:

  • $GOPATH
    • 源代码
      • github.com/
        • 大猩猩/
        • 陶醉/
        • ETC.../
      • 西蒙
        • WebApp1 <--- git 仓库
          • .git
          • 源代码
        • Web应用程序2
        • 网络应用3

...ETC。这极大地简化了整个事情,让我能够跨 3 个环境无缝地进行开发。

我仍在习惯 Go 和这个设置(我的核心是 .NET 开发人员)——但它现在似乎正在发挥作用。