Go でいくつかの新しい Web サービスを作成しています。
ターゲット プラットフォームに関係なく、使用できる展開戦略にはどのようなものがありますか? たとえば、私は Mac で開発していますが、ステージング/運用サーバーでは Linux を実行します。
Go をサポートする、使用できる既存の展開ツールはありますか? そうでない場合、プロセスを合理化するために何ができますか?
開発には LiteIDE を使用しています。LiteIDE を展開プロセスにフックする方法はありますか?
Go でいくつかの新しい Web サービスを作成しています。
ターゲット プラットフォームに関係なく、使用できる展開戦略にはどのようなものがありますか? たとえば、私は Mac で開発していますが、ステージング/運用サーバーでは Linux を実行します。
Go をサポートする、使用できる既存の展開ツールはありますか? そうでない場合、プロセスを合理化するために何ができますか?
開発には LiteIDE を使用しています。LiteIDE を展開プロセスにフックする方法はありますか?
残念ながら、Go は非常に新しい言語であるため、まだほとんど存在しないか、少なくとも見つけるのが困難でした。そのような Go 用のツールの開発にも興味があります。
私が見つけたのは、一部の人々が自分でそれを行っているか、Capistrano などの他のツールを適応させて、自分のためにそれを行っていることです。
ほとんどの場合、それはあなた自身がしなければならないことです。また、シェル スクリプトに限定する必要はありません。Go で実行してください。実際、Go ツールの多くは Go で書かれています。通常、実稼働システムでツールをビルドするのは悪い習慣であるため、ターゲット システムでのコンパイルは避ける必要があります。Go を使用すると、バイナリのクロス コンパイルが非常に簡単になります。たとえば、これは ARM および Linux 用にコンパイルする方法です。
GOARCH=arm GOOS=linux go build myapp
できることの 1 つは、#go-nuts freenode IRC チャネルに参加するか、Go メーリング リストに参加して、他の Gopher に何をしているのかを尋ねることです。
プロセスを効率化するためにできることは何ですか?
クロスコンパイルのアイデアは、Go 1.5 (2015 年第 3 四半期) でさらに魅力的なものになるはずです。Dave Cheneyが「クロスコンパイルは Go 1.5 でかなり良くなりました」で詳しく説明しています。
前:
クロスコンパイルを成功させるには、必要です
- ターゲット プラットフォーム用のコンパイラ (ホスト プラットフォームとは異なる場合、つまり、darwin/amd64 (6g) を使用していて、linux/arm (5g) 用にコンパイルしたい場合)。
- Go ディストリビューションがビルドされた時点で生成されたいくつかのファイルを含む、ターゲット プラットフォーム用の標準ライブラリ。
後 (Go 1.5+):
Go コンパイラを Goに変換する計画は 1.5 リリースで実現し、最初の問題は解決されました。
package main
import "fmt"
import "runtime"
func main() {
fmt.Printf("Hello %s/%s\n", runtime.GOOS, runtime.GOARCH)
}
ダーウィン/386 用にビルド
% env GOOS=darwin GOARCH=386 go build hello.go
# scp to darwin host
$ ./hello
Hello darwin/386
または、linux/arm 用にビルドします
% env GOOS=linux GOARCH=arm GOARM=7 go build hello.go
# scp to linux host
$ ./hello
Hello linux/arm
Mac で開発していますが、ステージング/運用サーバーは Linux を実行します。
Go のコンパイラが Go にあることを考えると、Mac から Linux 実行可能ファイルを生成するプロセスは簡単になるはずです。
私は自分で試したことはありませんが、いくつかの注意点はありますが、golang を ( goxcまたは Dave Cheney のgolang-crosscompileを使用して)クロスコンパイルできるようです。
しかし、環境を本番環境と一致させる必要がある場合 (おそらくほとんどの場合そうする必要があります)、Marcin が提案したように実行するのが最も安全です。
http://virtualboxes.org/images/でビルド済みの VirtualBox イメージを見つけることができますが、自分で作成するのは非常に簡単です。
今は少し遅れているかもしれませんが、ローカル マシンでクロス コンパイルし、Capistrano を使用して Go をデプロイする方法についてのブログ記事を最近書きました。
それでも興味がある場合は、試してみてください: http://thread0.me/2016/03/deploy-go-with-capistrano/