У меня проблемы с выполнением развертывания на последнем этапе моей работы в Jenkins.
Caused by: org.jboss.as.cli.CommandFormatException: Undeploy failed: {"WFLYCTL0062:
Composite operation failed and was rolled back. Steps that failed:" => {"Operation step-1"
=> "WFLYDC0043: Cannot remove deployment abc-web-1.0.101.war from the domain as it is
still used by server groups [abc-demo-latest]"}}
at org.jboss.as.cli.handlers.UndeployHandler.doHandle(UndeployHandler.java:231)
at org.jboss.as.cli.handlers.CommandHandlerWithHelp.handle(CommandHandlerWithHelp.java:86)
at org.jboss.as.cli.impl.CommandContextImpl.handle(CommandContextImpl.java:581)
В настоящий момент у меня нет доступа к консоли администратора, но я буду признателен за любые подсказки или помощь в том, что может быть неправильно в моей конфигурации.
Ниже приведена ошибка выполнения задачи:
task removeUnusedArtifactsFromJbossRepository(dependsOn: ['outputTenantSettings', 'ensureValidTenant']) << {
confirmToProceed("This command will remove unused artifacts from the Jboss Repository. Although this won't affect running systems, it may make manual rollbacks more difficult. Are you sure your wish to proceed?");
def serverGroup = getTenantProperties('config.properties').server_group_name;
ModelNode node = new ModelNode();
node.get(ClientConstants.OP).set(ClientConstants.READ_RESOURCE_OPERATION);
node.get(ClientConstants.OP_ADDR).add("/deployment");
ModelNode result = getCommandHelper().getModelControllerClient().execute(node);
def deployments = result.get("result").get("deployment");
if(deployments.getType() == ModelType.UNDEFINED) {
println "No artifacts to remove"
return;
}
for(def deployment : deployments.asList()) {
def deploymentName = deployment.asProperty().name
if(deploymentName.contains("abc-web")) {
println "Attempting to remove Deployment '${deploymentName}'"
try {
executeCliCommand("undeploy ${deploymentName}")
println "Deployment '${deploymentName}'' removed"
} catch(java.lang.IllegalArgumentException exception) {
// JBAS014653 means that the file is deployed to servers and can't be removed
// it's ok to ignore this
if(exception.getMessage().contains("JBAS014653")) {
println "Deployment '${deploymentName}' cannot be removed as it's currently in use"
} else {
throw exception;
}
}
}
}
}
После дальнейшего исследования я думаю, что скрипт пытается удалить развертывание из другой группы серверов i.e.abc-demo-latest, которое мне нужно оставить нетронутым или не развернутым.
Есть ли способ изменить сценарий, чтобы он мог быть отменен только из вновь созданной группы серверов перед развертыванием нового выпуска?
Я пробовал следующее:
if(serverGroup.equals("abc-demo-latest")) {
println("Undeploying customer-abc-latest server group deployment ${deploymentName}")
executeCliCommand("undeploy ${deploymentName}")
}else{
println("Undeploying customer-demo-ams-stable server group deployment ${deploymentName}")
executeCliCommand("undeploy ${deploymentName} --server-groups=other-server-group --keep-content")
}
Но получил следующую ошибку:
Failed to execute goal org.apache.maven.plugins:maven-deploy-plugin:2.7:
deploy (default-deploy) в проекте abc-parent: не удалось развернуть артефакты:
Не удалось передать артефакт abc-parent: pom: 1.0.26 из / в развертывание (http://x.y.z:8080/nexus/content/repositories/releases/):
Не удалось передать файл: http://x.y.z:8080/nexus/content/repositories/releases/abc-parent/1.0.26/abc-parent-1.0.26.pom.
Код возврата: 400, Фраза-причина: Неверный запрос