2016-12-07 11 views
0

私はcapistrano 3の仕事を書いています。私は現在のコミットを取得する必要があります。どうすればそれを読むことができますか?そのための変数はありますか?Capistrano get git commit sha1

私はいくつかのファイルでfetch(:sha1)を見ましたが、これは私のために働いていません。

私は、ドッキングウィンドウコンテナに展開しています、と

答えて

1

カピストラーノは、ファイルを作成します(すでに現在のSHA1に対応する画像がある場合に、理想的には、展開をスキップ)私は、現在のSHA1で画像をタグ付けする必要がありますgitリビジョンを含む展開されたフォルダにあります。そのファイルを作成するタスクを見て、それがどのようにリビジョンを取得するかを見ることができます:https://github.com/capistrano/capistrano/blob/master/lib/capistrano/tasks/deploy.rake#L224

したがって、fetch(:current_revision)からリビジョンを取得しています。 gitの特定のタスクに

それが設定されている場合は、私たちが見ることができます:サイドノートとしてhttps://github.com/capistrano/capistrano/blob/master/lib/capistrano/scm/tasks/git.rake#L62

を、カピストラーノは、おそらくあなたがやろうとしているもののための最高のツールではありません。 Capistranoは同じサーバーへの展開を繰り返し行う場合に便利です。 Dockerは本質的にコードを含んでいる展開可能なコンテナを構築しています。

current_revisionがバージョン管理プラグインとIドンに委任されhttps://stackoverflow.com/a/39459945/3042016

+0

ありがとうございました。私は確かにそれらの答えを見たが、私は私の流れが彼らとは少し違うと信じている。私は最初にカピストラノの外に、アプリなしでローカルに "ベースイメージ"を構築しています。それから私はキャップでこのイメージから始まったコンテナに展開しています。さらに、同じコンテナに配備されてスピードアップされます。同じコンテナへの繰り返しの展開。 新しいデプロイメント私はECSクラスタにプッシュして展開できる新しいイメージもコミットしています。カピストラーノの公正使用のように聞こえる? –

+0

Huh。私はそのワークフローについて聞いたことがありません。私はDockerのエキスパート/ユーザーではないので、それが正しいかどうかについてはコメントできません。 –

+0

'fetch(:current_revision)'はあなたの質問に答えますか? –

0

カピストラーノ3を使用バージョン管理アプリケーションのプラグインシステムを使用している(gitの、SVN、等):詳細はここで回答を見ます「Tは汚いソリューションは

set :current_revision, (lambda do 
    `git rev-list --max-count=1 #{fetch(:branch)}` 
end) 

だろう一方で...それにアクセスする方法を

を理解しかし、私は代わりに、右からタスクを起動するために管理します、良い解決策を待っていますSCM pl ugin

関連する問題