5
respostas

Executar select no Mysql por um script no Jenkins

Bom dia! A minha dúvida não está relacionada a um build que se pode fazer com o Jenkins. Eu preciso acessar de uma máquina windows um servidor linux que tem um banco mysql. Eu tento fazer um build/executar no comando do windows. Lá eu coloco o acesso ao banco: mysql -h 10.1.1.150 -u root -pSenha. Só com este comando o script parece não funcionar, ao tentar incluir mais um comando para acessar um schema no banco (use schema;), ele me mostra no log como resposta um help dos comandos do mysql e no fim mostra esta mensagem: Build step 'Executar no comando do Windows' marked build as failure Finished: FAILURE que não diz muita coisa É possível me darem uma ajuda de como eu faço está conexão e select? Estou há dias tentando fazer isso, já procurei em muitos sites mas o que rola é só builds com uso de git, svn. Eu não preciso de nada disso, apenas um script para fazer um select no mysql. Já tentei com Groovy uma linha de comando de acesso, mas dá erro por não encontrar o driver do mysql, também não descobri como resolvo isso!!! Por favor podem me ajudar? Agradeço!

5 respostas

Boa tarde, Adauto!

Você chegou a instalar o Microsoft ODBC Driver 11 for SQL Server e o Microsoft Command Line Utilities 11 for SQL Server?Chegou a testar o SQLCMD?

Não fui por este caminho porque como posso trabalhar com Mysql via linha de comando, não achei que fosse necessário. Não me recordo exatamente o local mas configurei para ser usado o cmd.exe. Eu não posso usar linha de comando para tratar o Mysql como faço sem o Jenkins?

Entendi.Até onde sei, dá pra usar o comando do mysql pelo Jenkins sim. Deve ser realmente algum detalhezinho faltando.Você pode colocar aqui todo o log do BUILD e os comandos que está colocando no Jenkins?

insira seu código aqui

Obrigado por tentar ajudar.

A configuração está mais ou menso assim:
Gerenciamento de código fonte: Nenhum
Executar no comando do windows:

mysql -h 10.1.2.149 -u root -proot schema_banco
show databases;
use schema_banco;

Saída do console: Iniciado pelo usuário Adauto da Silva Lima Construindo no workspace C:\Users\idealit\Jenkins\workspace\teste2 [teste2] $ cmd /c call C:\WINDOWS\TEMP\jenkins8646710109645958378.bat

C:\Users\idealit\Jenkins\workspace\teste2>mysql -h 10.1.2.149 -u root -proot schema_banco

C:\Users\idealit\Jenkins\workspace\teste2>show databases; 'show' nÆo ‚ reconhecido como um comando interno ou externo, um programa oper vel ou um arquivo em lotes.

C:\Users\idealit\Jenkins\workspace\teste2>use eim; 'use' nÆo ‚ reconhecido como um comando interno ou externo, um programa oper vel ou um arquivo em lotes.

C:\Users\idealit\Jenkins\workspace\teste2>exit 9009 Build step 'Executar no comando do Windows' marked build as failure Finished: FAILURE

Oi Dirley, bom dia!

Perdão pela demora..eu não fiz o curso e não vi o projeto todo, então acabei parando no primeiro getQuantidade() que achei:


private int getQuantidade(CarrinhoItem item) {              
    if(!itens.containsKey(item)){         
        itens.put(item, 0);     
    }     
    return itens.get(item); 
}

Mas tem outro getQuantidade():

public int getQuantidade(){
     return itens.values().stream().reduce(0, (proximo, acumulador) -> (proximo + acumulador)); 
}

Esse segundo mostra realmente o total de todos os produtos, incluindo os repetidos, como você bem percebeu.

Mas, ainda assim, o itens (só achei um no código hehe ) é uma variável que guarda uma mapa com todos os produtos diferentes, junto com a quantidade daquele produto. Quando fazemos itens.size(), estamos pegando a quantidade de produtos diferentes, não a quantidade total de produtos, incluindo os repetidos.

Então, nesse caso, eles continuam tendo lógicas diferentes. :)