2016-07-07 17 views
1

は私appspecファイルに次のようしている(YAMLが検証) -Codedeployの展開「:0:終了に必要な数値引数」

version: 0.0 
os: linux 
files: 
    - source: some/source 
    destination: some/destination 
hooks: 
    BeforeInstall: 
    - location: beforeInstall.sh 
    AfterInstall: 
    - location: afterInstall.sh 

私は、次のエラー断続的にを取得していますBeforeInstallのステップに -

-

Error Code ScriptFailed 
Script Name beforeInstall.sh 
Message Script at specified location: beforeInstall.sh failed with exit code 255 
Log Tail 

LifecycleEvent - BeforeInstall 
Script - beforeInstall.sh 
[stderr]/opt/codedeploy-agent/deployment-root/edbe4bd2-3999-4820-b782-42d8aceb18e6/d-4GJ8QS9MG/deployment-archive/beforeInstall.sh: line 1: exit: 0 
: numeric argument required 

私beforeInstall.shファイルの内容が続きます

exit 0 

ビルドが断続的に成功することに注意してください。私は次のように試しました。

  • beforeInstall.shファイルのdos2unixを実行しました。蘭がビルドされ、いくつかの試行の後に(変更直後ではなく)成功した​​ので、それが理由であったとは言えません。

  • は、zipファイルの新しい名前でS3に新しくzipをアップロードしました(ちょうどec2インスタンスで起こっている可能性のあるキャッシングを避けるためです)。ファイルが追加される追加されませんでした、ファイルの変更が発生しなかった -

はまた、私はビルドが成功した場合でも、ファイルのセクションで述べたように、ファイルの変更がインスタンスには起こらなかったことがわかりました。しかし、いくつかの既存のファイルのタイムスタンプは今日に変更されています。奇妙な。

更新

後beforeInstall.shでexit 1で、/var/log/aws/codedeploy-agent/codedeploy-agent.logからログ証跡ある -

2016-08-01 12:41:01 WARN [codedeploy-agent(9507)]: InstanceAgent::Plugins::CodeDeployPlugin::HookExecutor: Script at specified location: beforeInstall.sh is not executable. Trying to make it executable. 
2016-08-01 12:41:01 INFO [codedeploy-agent(9507)]: Version file found in /opt/codedeploy-agent/.version. 
2016-08-01 12:41:01 INFO [codedeploy-agent(9507)]: [Aws::CodeDeployCommand::Client 200 0.087513 0 retries] put_host_command_complete(command_status:"Failed",diagnostics:{format:"JSON",payload:"{\"error_code\":4,\"script_name\":\"beforeInstall.sh\",\"message\":\"Script at specified location: beforeInstall.sh run as user sandeepan failed with exit code 255\",\"log\":\"LifecycleEvent - BeforeInstall\\nScript - beforeInstall.sh\\n[stderr]/opt/codedeploy-agent/deployment-root/c71b93a2-8561-41e2-b90f-d638548e7b4c/d-A36YRE23H/deployment-archive/beforeInstall.sh: line 1: exit: 0\\r: numeric argument required\\n\"}"},host_command_identifier:"WyJjb20uYW1hem9uLmFwb2xsby5kZXBsb3ljb250cm9sLmRvbWFpbi5Ib3N0Q29tbWFuZElkZW50aWZpZXIiLHsiZGVwbG95bWVudElkIjoiQ29kZURlcGxveS91cy1lYXN0LTEvUHJvZC9hcm46YXdzOnNkczp1cy1lYXN0LTE6Mzc3NzAzOTYxOTk4OmRlcGxveW1lbnQvZC1BMzZZUkUyM0giLCJob3N0SWQiOiJhcm46YXdzOmVjMjp1cy1lYXN0LTE6Mzc3NzAzOTYxOTk4Omluc3RhbmNlL2ktZWZmYzU1YWEiLCJjb21tYW5kTmFtZSI6IkFmdGVySW5zdGFsbCIsImNvbW1hbmRQb3NpdGlvbiI6NSwiY29tbWFuZEF0dGVtcHQiOjF9XQ==") 

2016-08-01 12:41:01 ERROR [codedeploy-agent(9507)]: InstanceAgent::Plugins::CodeDeployPlugin::CommandPoller: Error during perform: InstanceAgent::Plugins::CodeDeployPlugin::ScriptError - Script at specified location: beforeInstall.sh run as user sandeepan failed with exit code 255 - /opt/codedeploy-agent/lib/instance_agent/plugins/codedeploy/hook_executor.rb:153:in `execute_script' 
/opt/codedeploy-agent/lib/instance_agent/plugins/codedeploy/hook_executor.rb:110:in `block (2 levels) in execute' 
/opt/codedeploy-agent/lib/instance_agent/plugins/codedeploy/hook_executor.rb:98:in `each' 
/opt/codedeploy-agent/lib/instance_agent/plugins/codedeploy/hook_executor.rb:98:in `block in execute' 
/opt/codedeploy-agent/lib/instance_agent/plugins/codedeploy/hook_executor.rb:168:in `create_script_log_file_if_needed' 
/opt/codedeploy-agent/lib/instance_agent/plugins/codedeploy/hook_executor.rb:96:in `execute' 
/opt/codedeploy-agent/lib/instance_agent/plugins/codedeploy/command_executor.rb:133:in `block (3 levels) in map' 
/opt/codedeploy-agent/lib/instance_agent/plugins/codedeploy/command_executor.rb:124:in `each' 
/opt/codedeploy-agent/lib/instance_agent/plugins/codedeploy/command_executor.rb:124:in `block (2 levels) in map' 
/opt/codedeploy-agent/lib/instance_agent/plugins/codedeploy/command_executor.rb:62:in `execute_command' 
/opt/codedeploy-agent/lib/instance_agent/plugins/codedeploy/command_poller.rb:132:in `process_command' 
/opt/codedeploy-agent/lib/instance_agent/plugins/codedeploy/command_poller.rb:65:in `perform' 
/opt/codedeploy-agent/lib/instance_agent/agent/base.rb:28:in `run' 
/opt/codedeploy-agent/lib/instance_agent/runner/child.rb:38:in `block in run' 
/opt/codedeploy-agent/lib/instance_agent/runner/child.rb:55:in `with_error_handling' 
/opt/codedeploy-agent/lib/instance_agent/runner/child.rb:37:in `run' 
/opt/codedeploy-agent/vendor/gems/process_manager-0.0.13/lib/process_manager/child.rb:70:in `block in run_with_error_handling' 
/opt/codedeploy-agent/lib/instance_agent/runner/child.rb:55:in `with_error_handling' 
/opt/codedeploy-agent/vendor/gems/process_manager-0.0.13/lib/process_manager/child.rb:69:in `run_with_error_handling' 
/opt/codedeploy-agent/vendor/gems/process_manager-0.0.13/lib/process_manager/child.rb:33:in `block in start' 
/opt/codedeploy-agent/vendor/gems/process_manager-0.0.13/lib/process_manager/child.rb:22:in `loop' 
/opt/codedeploy-agent/vendor/gems/process_manager-0.0.13/lib/process_manager/child.rb:22:in `start' 
/opt/codedeploy-agent/vendor/gems/process_manager-0.0.13/lib/process_manager/master.rb:202:in `block in spawn_child' 
/opt/codedeploy-agent/vendor/gems/process_manager-0.0.13/lib/process_manager/master.rb:200:in `fork' 
/opt/codedeploy-agent/vendor/gems/process_manager-0.0.13/lib/process_manager/master.rb:200:in `spawn_child' 
/opt/codedeploy-agent/vendor/gems/process_manager-0.0.13/lib/process_manager/master.rb:192:in `block in spawn_children' 
/opt/codedeploy-agent/vendor/gems/process_manager-0.0.13/lib/process_manager/master.rb:191:in `times' 
/opt/codedeploy-agent/vendor/gems/process_manager-0.0.13/lib/process_manager/master.rb:191:in `spawn_children' 
/opt/codedeploy-agent/vendor/gems/process_manager-0.0.13/lib/process_manager/master.rb:134:in `start' 
/opt/codedeploy-agent/vendor/gems/process_manager-0.0.13/lib/process_manager/master.rb:37:in `block in start' 
/opt/codedeploy-agent/vendor/gems/process_manager-0.0.13/lib/process_manager/master.rb:36:in `fork' 
/opt/codedeploy-agent/vendor/gems/process_manager-0.0.13/lib/process_manager/master.rb:36:in `start' 
/opt/codedeploy-agent/bin/codedeploy-agent:37:in `block (2 levels) in <main>' 
/opt/codedeploy-agent/vendor/gems/gli-2.5.6/lib/gli/command_support.rb:130:in `call' 
/opt/codedeploy-agent/vendor/gems/gli-2.5.6/lib/gli/command_support.rb:130:in `execute' 
/opt/codedeploy-agent/vendor/gems/gli-2.5.6/lib/gli/app_support.rb:262:in `block in call_command' 
/opt/codedeploy-agent/vendor/gems/gli-2.5.6/lib/gli/app_support.rb:275:in `call' 
/opt/codedeploy-agent/vendor/gems/gli-2.5.6/lib/gli/app_support.rb:275:in `call_command' 
/opt/codedeploy-agent/vendor/gems/gli-2.5.6/lib/gli/app_support.rb:69:in `run' 
/opt/codedeploy-agent/bin/codedeploy-agent:84:in `<main>' 

注 - 私は私のシェルスクリプトが含まれている場合にのみ、このエラーを再現することができています出口。

また、私はシバンライン(#!/ bin/sh)がこれと何か関係があるのか​​よく分かりません。 ls -l /bin/shができます - - lrwxrwxrwx 1 root root 4 Jun 3 22:23 /bin/sh -> bash

その変更を展開beforeInstallのステップで次のエラーが与える - 私は(/ binに/ SHで何かがあることが確認され)、それを追加することで試してみました[stderr]bash: /opt/codedeploy-agent/deployment-root/c71b93a2-8561-41e2-b90f-d638548e7b4c/d-UOGT00Z2H/deployment-archive/beforeInstall.sh: /bin/sh^M: bad interpreter: No such file or directory

+0

スクリプトを編集するのにWindowsを使用していますか?もしそうなら、どのエディタ? –

+0

行末の問題があるかどうか確認する機会を得ましたか? –

+0

月曜日にもう一度確認します。私は以前のファイルに対してdos2unixをやっていることを覚えています。 –

答えて

0

これは、に起因すると思われます「指定された場所のスクリプト:beforeInstall.shが実行され、ユーザーsandeepanが終了コード255で失敗したため」というメッセージからスクリプト自体が実行されませんでした。 CodeDeployを使わずにスクリプトを単独で実行してスクリプトが正常に動作することを確認できますか?

+0

スクリプトを手動で実行するにはどうすればよいですか?場所はどこですか?デプロイメントが終了した後にスクリプトは存在しますか?デプロイメントアーカイブを確認して確認する必要がありますか? –

1

私はWindowsとLinuxの行末に焦点を当てます。

質問とコメントの2つのエラーがあります。それらのメッセージの両方が問題を行末に直接ポイント:

exit: 0 : numeric argument required 

/bin/sh^M: bad interpreter: No such file or directory 

あなたがそのエラーメッセージに表示さ^ Mは、キャリッジリターン文字CR(キャリッジリターン、「\ r」が、0x0Dを10進数で13)です。 Linuxでは改行文字を使用して行末を指定しますが、Windowsでは文字シーケンスCR + LFが使用されます。ファイルにWindowsの行末があります。これはLinuxシェルを混乱させ、そのエラーメッセージの原因となります。

これを解決するまで、すべてのトラブルシューティング方法が失敗します。両方のファイルの問題を解消するためにLinuxボックスに

  1. 使用DOS2UNIX:あなたは、Linuxの改行コードでファイルを書き込むためにあなたの編集環境を得ることができるまで

    は、以下を試してみてください。

  2. これらのファイルがサーバー上で手動で実行されていることを確認します。これは重要。
  3. これらのファイルを開発用ボックスにコピーします。
  4. 修正されたこれらのファイルを使用して、CodeDeployリビジョンアーカイブを作成します。これらのファイルはローカルでは編集しないでください。
  5. アーカイブを再配布します。

私はCodeDeployが正常に動作することを期待しています。

私は、この正確な問題を行末とCodeDeployで追いかけていました。特にexit: 0 : numeric argument requiredメッセージを追跡するのは難しいです。むしろ鈍いですし、終了コードやシバンとは関係ありません。その行末。

+0

問題を再現しようとしましたが、もうできませんでした。私は手動でbeforeInstall.shファイルをedit +エディタを使ってWindowsで編集し、zipをS3にアップロードして展開に成功しました。 –

+0

しかし、賞金を授与してください。お時間をいただきありがとうございます! –

関連する問題