2

私はカピストラーノが初めてで、始めるのに少し苦労しています。私がする必要があることの簡単な説明:

  • git pull中央のビルド サーバー上の git リポジトリからの最新のコード。このビルド サーバーの環境は、デプロイメント環境と正確に一致します。ここでビルドするコードが必要です。たとえば、Mac ラップトップでビルドされたバイナリを展開したくありません。
  • このマシンでバイナリをコンパイルします。
  • このマシンからすべてのターゲット マシンに展開します。
  • ビルド マシン上で SSH 接続してビルドを実行できる共有ユーザーがいます。
  • ビルド マシンはゲートウェイ マシンの背後にあり、直接アクセスできません。
  • すべての展開ターゲット マシンにもこの共有ユーザーがあり、ゲートウェイの背後にあります。
  • 展開されたバイナリは単一の実行可能ファイルであり、ターゲット マシンに init スクリプトがあります。バイナリをデプロイしてシンボリック リンクを変更したら、init スクリプトを使用してサービスを再起動します。
  • 全員が、必要なすべてのタスクに対応する適切な SSH キーとエージェント転送を持っています。

したがって、原則としてはかなり単純に見えますが、カピストラーノは独断的で少し魔法のようです。その結果、これらすべてを達成する方法がわかりません。コードをチェックアウトして、たとえば最初にビルドせずにリモートマシンにコピーしたいようです。

Capistrano のデフォルトの機能をすべて無視して、適切なサーバーでいくつかのシェル コマンドを実行させる必要があると思います。擬似コード:

  • ssh buildmachine via gateway "cd repo && git pull && make"
  • ssh targetmachine(s) via gateway "scp buildmachine:repo/binary .; <mv && symlink>; service foo restart"

仕事に適したツールを使用していますか? 四角い穴に丸いペグが入っているようなものです。

capカピストラーノ構成ファイルの内容と、これを達成するために実行するコマンドを説明してもらえますか?

ところで、私は周りを検索して、リモート git リポジトリを使用して capistrano でデプロイするが、本番サーバーでgit を実行せずにデプロイする、サーバーの手動プルから Capistrano に移動するなどの質問を調べました。

4

1 に答える 1

1

質問はかなり古いですが、誰かが情報を必要としていつそれに踏み込むかはわかりません...

何よりもまず、Capistrano は、やりたい仕事に適したツールではない可能性があることを考慮してください。

とはいえ、期待どおりの結果を達成することは不可能ではありません。大量のファイルを展開してそれらを変更するプロジェクト (css/js minify、js ビルドなど) では、私はそれを避けますが、あなたの場合は、「展開リポジトリ」を実行し、ソースとして capistrano で構成することを検討できます。 . プロセスは次のようになります。

  • 必要なツールを使用してローカル ビルドを実行する
  • 結果のバイナリを展開リポジトリにアップロードします
  • アプリケーションサーバーに接続するカピストラーノを実行し、リポジトリから新しいバイナリを取得し、必要なサーバー側のタスクを実行し、「現在」へのシンボリックリンクを実行します

副作用として、展開されたバイナリの完全な履歴が表示されます

于 2014-07-24T07:11:44.843 に答える