Я разрабатываю конвейер Jenkinsfile для развертывания приложения (war) в Jboss EAP, но получаю ошибку при попытке добавить и включить военный артефакт в jboss. Я много гуглил, но не нашел решения.
Я опубликую все шаги, определенные в моем Jenkinsfile, чтобы прояснить вопрос;
В строке, где указано «**», я пытаюсь выполнить операцию добавления и включить артефакт на сервере, но получаю сообщение об ошибке:
Развертывание Test-2.5.3-SNAPSHOT.war завершилось ошибкой: JBAS014807:
Ресурс управления '[("deploy" => "Test-2.5.3-SNAPSHOT.war")]' не найден.
Понятия не имею, как мне это решить.
def deploy(deploymentFileName, oldWarFile, workspace) {
def hostname = 'myHost'
def managementPort = 'myPort'
def user = 'test'
def userPass = 'test'
def deploymentNameWoPath = determineFileName(deploymentFileName)
def oldDeployFile = oldWarFile+".war"
def relativePathDeployFile = workspace +"/"+ deploymentFileName
// undeploy old war if present
echo "Undeploying ${deploymentFileName} to ${hostname}:${managementPort} ..."
sh "curl --digest -D - http://${user}:${userPass}@${hostname}:${managementPort}/management --header \"Content-Type: application/json\" -d '{\"operation\":\"undeploy\", \"address\":[{\"server-group\":\"AppsVR\"},{\"deployment\":\"${oldDeployFile}\"}]}'"
// step 1: upload archive
echo "Uploading ${deploymentFileName} to ${hostname}:${managementPort} ..."
sh "curl -F \"file=@${relativePathDeployFile}\" --digest http://${user}:${userPass}@${hostname}:${managementPort}/management/add-content > result.txt"
// step 2: deploy the archive
// read result from step 1
def uploadResult = readFile 'result.txt'
def bytesValue = extractByteValue(uploadResult)
if (bytesValue != null) {
echo "Deploying ${deploymentFileName} to ${hostname}:${managementPort} ..."
sh "**curl -S -H \"Content-Type: application/json\" -d '{\"content\":[{\"hash\": {\"BYTES_VALUE\" : \"${bytesValue}\"}}, \"url\":{}], \"address\": [{\"server-group\":\"AppsVR\"}, {\"deployment\":\"${deploymentNameWoPath}\"}], \"operation\":\"add\", \"enabled\":\"true\"}' --digest http://${user}:${userPass}@${hostname}:${managementPort}/management** > result2.txt"
def deployResult = readFile 'result2.txt'
def failure = hasFailure(deployResult)
if (failure != null) {
//deploy old war
sh "curl --digest -D - http://${user}:${userPass}@${hostname}:${managementPort}/management --header \"Content-Type: application/json\" -d '{\"operation\":\"deploy\", \"address\":[{\"server-group\":\"AppsVR\"},{\"deployment\":\"${oldDeployFile}\"}]}'"
error "Deployment of ${deploymentNameWoPath} failed with error: ${failure}"
}else{
sh "curl --digest -D - http://${user}:${userPass}@${hostname}:${managementPort}/management --header \"Content-Type: application/json\" -d '{\"operation\":\"remove\", \"address\":[{\"server-group\":\"AppsVR\"},{\"deployment\":\"${oldDeployFile}\"}]}'"
}
} else {
// fail build as deployment was not successfull
error "Upload of ${deploymentFileName} failed"
}
}