2017-04-13 1 views
0

J'ai l'extrait ci-dessous dans ma recette de chef.chef || bloc de sauvetage ne fonctionne pas en cas d'exception

begin 
    execute 'run_tests' do 
     command comand_string_to_run_nUnint 
     user "user" 
     password passkey 
    end 
ensure  
    execute 'upload_report' do 
     command uplaod 
     user "user" 
     password passkey 
    end 
end 

le problème est que le rapport est téléchargé avec succès en cas de tous les tests passés, mais ne parvient pas à télécharger quand il y a une panne dans l'un des cas de test. Comment puis-je m'assurer que le rapport est téléchargé dans tous les cas.

Existe-t-il une manière différente de gérer les exceptions? Ps: Je télécharge dans le référentiel d'artefacts nommé Nexus.

Répondre

0

Vous pouvez utiliser ignore_failure true pour votre ressource execute[run_tests]. De cette façon, Chef continuera à exécuter la recette, même si cette commande se termine par un code d'erreur.

execute 'run_tests' do 
    ignore_failure true 
    command comand_string_to_run_nUnint 
    user "user" 
    password passkey 
end 

Une autre possibilité est d'utiliser la propriété pour returnsexecute[run_tests] ressources. Lorsqu'il y a des échecs de test, la commande "comand_string_to_run_nUnint" se termine avec un code différent de zéro, vous pouvez ajouter ce code différent de zéro (par exemple 2) à la propriété returns. De cette façon, le Chef pensera que tout va bien et continuera à exécuter la recette.

execute 'run_tests' do 
    returns [0, 2] 
    command comand_string_to_run_nUnint 
    user "user" 
    password passkey 
end