2016-07-07 1 views
1

У меня есть следующий в моем 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

+0

Вы используете Windows для редактирования скриптов? Если да, то какой редактор? –

+0

У вас была возможность подтвердить, есть ли у вас проблемы с окончанием строки? –

+0

Я проверю это снова в понедельник. Я помню, как раньше делал dos2unix для файлов. –

ответ

0

Это кажется из-за сам сценарий завершился с ошибкой из сообщения «Сценарий в указанном месте: beforeInstall.sh выполняется с ошибкой пользователя sandeepan с кодом выхода 255». Можете ли вы запустить сценарий самостоятельно без CodeDeploy и убедиться, что скрипт работает?

+0

Как запустить скрипт вручную? Какое местоположение? Существует ли сценарий после завершения развертывания? Нужно ли мне проверять архив развертывания? –

1

Я бы остановился на окончаниях строк Windows vs Linux.

Вы предоставили две разные ошибки в области вопросов и комментариев.Оба эти сообщения указывают непосредственно на вопросы, окончание строки:

exit: 0 : numeric argument required 

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

Символ^M вы видите в этом сообщении об ошибке является символ возврата каретки CR (возврат каретки «\ г», 0x0D, 13 в десятичной системе). Linux использует символ линии для обозначения конца строки, но Windows использует последовательность символов CR + LF. В вашем файле есть окончания строк Windows, что путает оболочку Linux и вызывает эти сообщения об ошибках.

Пока вы не разрешите это, все способы устранения неполадок не удастся.

Пока вы не можете получить среду редактирования, чтобы написать файлы с концами строк в Linux, попробуйте следующее:

  1. Используйте dos2unix на коробке Linux, чтобы исправить проблему с обоих файлов.
  2. Подтвердите эти файлы, запущенные на сервере вручную. Это важно.
  3. Скопируйте эти файлы в свою коробку разработки.
  4. Создайте архив изменений CodeDeploy, используя эти исправленные файлы. Не редактируйте эти файлы локально.
  5. Обновите архив.

Я ожидаю, что CodeDeploy будет работать нормально.

Я провел дни, преследуя эту точную проблему с концами строк и CodeDeploy. Трудно отслеживать, особенно сообщение exit: 0 : numeric argument required. Это довольно тупо и не имеет ничего общего с кодами выхода или shebangs. Его окончания линии.

+0

Я попытался воспроизвести проблему, но больше не мог. Я вручную отредактировал файл beforeInstall.sh с помощью редактора edit ++ на окнах и загрузил zip на S3, и развертывание удалось. –

+0

Присуждение награды. Спасибо, что нашли время, чтобы помочь! –

Смежные вопросы