У меня есть следующий в моем appspec файла (YAML подтверждено) -развертывания Codedeploy неудачи в BeforeInstall случае с ошибкой «выходом: 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
Обратите внимание, что сборка выполняется с перерывами. Я пробовал следующее:
Выполнение dos2unix файла beforeInstall.sh. Ran build, и это удалось после некоторых испытаний (не сразу после изменения), поэтому не могу сказать, что это была причина.
загрузил новый zip на S3 с новым именем zip-файла (только для того, чтобы избежать кэширования, которое может происходить в экземплярах ec2).
Кроме того, я обнаружил, что даже тогда, когда сборка удалась, файл изменяется, как указано в разделе файлов не произошло в случаях - Файлы будут добавлены не добавляются, модификация файла не произошла. Тем не менее, временная метка некоторых существующих файлов доработана до сегодняшнего дня. Weird.
Update
Ниже журнала след от /var/log/aws/codedeploy-agent/codedeploy-agent.log
, с exit 1
в beforeInstall.sh -
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>'
Примечание - Я могу воспроизвести эту ошибку только тогда, когда мой сценарий оболочки содержит выход.
Кроме того, я не уверен, что линия shebang (#!/Bin/sh) имеет к этому какое-либо отношение. Я попробовал, добавив его (проверить, что там что-то в/бен/ш) - ls -l /bin/sh
дает - lrwxrwxrwx 1 root root 4 Jun 3 22:23 /bin/sh -> bash
Развертывание с этим изменением дает следующее сообщение об ошибке на beforeInstall этапе - [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
Вы используете Windows для редактирования скриптов? Если да, то какой редактор? –
У вас была возможность подтвердить, есть ли у вас проблемы с окончанием строки? –
Я проверю это снова в понедельник. Я помню, как раньше делал dos2unix для файлов. –