Nous souhaitons remplacer un déploiement existant de notre application avec CURL. Le poste ci-dessous donne une bonne façon de déployer un fichier de guerre. Cela fonctionne bien tant qu'il n'y a pas de fichier de guerre déployé avec le même nom. Il échoue, cependant, s'il existe déjà un déploiement présent. Y a-t-il un moyen de remplacer le déploiement existant via CURL? P>
http: // blog .Arungupta.me / 2014/01 / Déployez-en-wildfly-utilisant-Curl-Tech-Tip-10 / P>
existe-t-il un moyen d'obtenir la documentation d'interface complète de l'API HTTP de WILDFLY P>
3 Réponses :
Regardez la documentation de modèle de gestion entier à p>
http://wildscribe.github.io/ p>
Il n'y a pas d'opération directe qui remplacerait le déploiement. P>
Voir Attribut possible / Opérations pour la ressource de déploiement p>
Alors, ce que vous pouviez faire est de supprimer le déploiement s'il y en a une nouvelle. Ou vous pouvez ajouter de nouveaux déploiements sous le nouveau nom, désactivez l'ancien et en activer le nouveau. P>
Il y a beaucoup d'options que vous pourriez faire.
Pour commencer, je vous recommanderais de jeter un coup d'oeil à jboss-cli
En vous connectant simplement à l'instance par défaut sur le serveur en commençant En navigant sur CLI, vous trouverez également un ensemble complet d'attributs / opérations / ressources que vous pouvez manipuler p>
Certains documents sur ce sujet p>
https://docs.jboss.org/author/display/wfly8/ CLI + Recettes P>
https://docs.jboss.org/author/display/ WFLY8 / Gestion + API + Référence P> jboss-cli.sh | bat -c code> dans dossier bin. p>
Bonne documentation de référence (: Thumbsup: Merci) mais aucun exemple concret d'utilisation.
Nous avons écrit un petit script shell pour y parvenir:
#!/bin/bash echo "Undeploy old war" curl -S -H "content-Type: application/json" -d '{"operation":"undeploy", "address":[{"deployment":"old.war"}]}' --digest http://user:password@hostname:9990/management echo "" echo "Remove old war" curl -S -H "content-Type: application/json" -d '{"operation":"remove", "address":[{"deployment":"old.war"}]}' --digest http://user:password@hostname:9990/management echo "" echo "Upload new war" bytes_value=`curl -F "file=@/path/to/new.war" --digest http://user:password@$hostname:9990/management/add-content | perl -pe 's/^.*"BYTES_VALUE"\s*:\s*"(.*)".*$/$1/'` echo $bytes_value json_string_start='{"content":[{"hash": {"BYTES_VALUE" : "' json_string_end='"}}], "address": [{"deployment":"new.war"}], "operation":"add", "enabled":"true"}' json_string="$json_string_start$bytes_value$json_string_end" echo "Deploy new war" result=`curl -S -H "Content-Type: application/json" -d "$json_string" --digest http://user:password@hostname:9990/management | perl -pe 's/^.*"outcome"\s*:\s*"(.*)".*$/$1/'` echo $result if [ "$result" != "success" ]; then exit -1 fi
Pensez-vous que l'utilisation de ce script serait plus rapide que d'utiliser .CLI? Pensez-vous qu'il est préférable de redémarrer le serveur sauvage avant chaque déploiier pour vous assurer que le redéployeur se produit correctement?
Merci beaucoup à @nioe pour le script! Voici une version configurable avec le silence CURL code> mieux adapté aux scripts CI:
#!/bin/bash
# Deploys given WAR to WildFly server, pass full path to WAR as argument
set -e
set -u
[[ -f "$1" ]] || { >&2 echo "Usage: $0 WAR-filename ('$1' is not a file)"; exit 1; }
WILDFLY_MANAGEMENT_URL=http://username:password@hostname:9990
WAR_NAME=`basename $1`
WAR_PATH=`dirname $1`
echo "Deploying '$WAR_NAME' from '$WAR_PATH' to '$WILDFLY_MANAGEMENT_URL'"
echo '-------------------'
echo "-> Undeploy old war"
curl -sS -H "content-Type: application/json" -d '{"operation":"undeploy", "address":[{"deployment":"'"${WAR_NAME}"'"}]}' --digest ${WILDFLY_MANAGEMENT_URL}/management
echo ""
echo "-> Remove old war"
curl -sS -H "content-Type: application/json" -d '{"operation":"remove", "address":[{"deployment":"'"${WAR_NAME}"'"}]}' --digest ${WILDFLY_MANAGEMENT_URL}/management
echo ""
echo "-> Upload new war"
bytes_value=`curl -sF "file=@${WAR_PATH}/${WAR_NAME}" --digest ${WILDFLY_MANAGEMENT_URL}/management/add-content | perl -pe 's/^.*"BYTES_VALUE"\s*:\s*"(.*)".*$/$1/'`
echo $bytes_value
json_string_start='{"content":[{"hash": {"BYTES_VALUE" : "'
json_string_end='"}}], "address": [{"deployment":"'"${WAR_NAME}"'"}], "operation":"add", "enabled":"true"}'
json_string="$json_string_start$bytes_value$json_string_end"
echo "-> Deploy new war"
result=`curl -sS -H "Content-Type: application/json" -d "$json_string" --digest ${WILDFLY_MANAGEMENT_URL}/management | perl -pe 's/^.*"outcome"\s*:\s*"(.*)".*$/$1/'`
echo $result
if [ "$result" != "success" ]; then
exit -1
fi