2017-04-26 2 views
0

後にセミコロンを追加することで、私は出力にGitのメッセージを、それが好きで、それだけで展開されたコードのコミットと思います。これによりカピストラーノ/ Rubyの実行がサーバに配備カピストラーノRubyのタスクの一部として変数

:コミットハッシュの最後にセミコロン

Deployed "Merge branch 'feature/some-feature' into develop": https://example.com/myorg/myrepo/commit/0fdfa09fbfe012649fb0a998aa2e99cb5fd7c8b3; 

注:

git_message = `git log -1 HEAD --pretty=format:%s` 
git_commit = `git rev-parse HEAD` 
git_commit = "https://example.com/myorg/myrepo/commit/" + git_commit 

execute "echo \"Deployed \\\"#{git_message}\\\": #{git_commit}\" | a_command_that_posts_to_slack" 

それはこのようなものを出力します。私は、セミコロンで終わっていないputsgit_commitことを使用して確認してきた、とgit_message 1を持っていない、どちらかそれの後に1を持っていません。セミコロンを追加し、どのように私はそれを削除することができますどのような

+0

あなたがその出力を言うとき、あなたは弛緩することを意味しますか?私はあなたが持っている参照 'a_command_that_posts_to_slack'おそらく、このコマンドは、セミコロンを追加していますか?そのコマンドにパイプするのではなく、ファイルにリダイレクトしてみてください。 – ddubs

+0

私はSlackでセミコロンを見ますが、私は端末でもそれを見ています。同じセミコロンが配管なしで表示されます: 'execute" echo \ "Deployed \\\"#{git_message} \\\ ":#{git_commit} \" "' – Hugo

答えて

1

あなたのコマンドで改行を持っているので、それはある:を組み込み。 Rubyで

バッククォートは、後続の改行を含むプロセスの全体STDOUTを捕捉します。それらを削除するにはchompを使用してください。

git_message = `git log -1 HEAD --pretty=format:%s`.chomp 
git_commit = `git rev-parse HEAD`.chomp 
git_commit = "https://example.com/myorg/myrepo/commit/" + git_commit 

execute "echo \"Deployed \\\"#{git_message}\\\": #{git_commit}\" | a_command_that_posts_to_slack" 
0

おそらくそのBashシェルは、組み込みとして:を実行するので、それは、セミコロンでそのコマンドを終了しようと? :を削除してください。二重引用符を含むコミットメッセージが頭痛を引き起こす可能性があるため、二重引用符を挿入することについても心配しています。バッシュの

リファレンスを使用すると、複数のコマンド(1行につき1つ)を実行したい考え、カピストラーノはセミコロンに翻訳され、What is the purpose of the : (colon) GNU Bash builtin?

関連する問題