Closed ErickGiffoni closed 5 years ago
Começando os trabalhos agora, na parte do github.
Essa funcionalidade está descrita em 2 requisições:
Ada faz uma requisição à API da ada-gitlab para conseguir informar ao usuário quais são as pipelines que ele tem no projeto dele. Essa requisição retorna pra Ada os nomes das pipelines do projeto do usuário e os respectivos ids delas. Então a Ada mostra os nomes das pipelines ao usuário e pergunta qual delas ele quer reiniciar. O usuário responde o nome da pipeline, a Ada identifica qual é o id dessa pipeline e ...
Ada faz uma outra requisição à ada-gitlab para que essa pipeline seja reiniciada. O retorno dessa outra requisição deve ser um status, uma mensagem falando se foi possível ou não reiniciar a pipeline referida.
No primeiro tópico, a requisição é feita da seguinte maneira :
http://0.0.0.0:5000/rerun_pipeline/<chat_id>
Já para o segunto tópico, a requisição é a seguinte:
http://0.0.0.0:5000/rerun_pipeline/<chat_id>/<pipeline_id>
A parte 1 descrita acima já está 80% feita.
Links úteis:
Estava dando uma olhada na api do gitlab onde fala sobre pipelines e encontrei uma função que serve para reiniciar os jobs de uma pipeline:
POST /projects/:id/pipelines/:pipeline_id/retry
Creio que, provavelmente, será essa que vamos utilizar nesta issue. Testei ela em um repositório que eu tinha onde a pipeline tinha dado erro e fiz um post utilizando a API e o GitLab começou a rodar a pipeline novamente.
@sudjoao Muito bom, João, vamo que vamo
O metodo para reinciar build foi criado no repositório AdaGitlab.
Essa funcionalidade está descrita em 2 requisições:
1. Ada faz uma requisição à API da ada-gitlab para conseguir informar ao usuário quais são as pipelines que ele tem no projeto dele. Essa requisição retorna pra Ada os nomes das pipelines do projeto do usuário e os respectivos ids delas. Então a Ada mostra os nomes das pipelines ao usuário e pergunta qual delas ele quer reiniciar. O usuário responde o nome da pipeline, a Ada identifica qual é o id dessa pipeline e ... 2. Ada faz uma outra requisição à ada-gitlab para que essa pipeline seja reiniciada. O retorno dessa outra requisição deve ser um status, uma mensagem falando se foi possível ou não reiniciar a pipeline referida.
No primeiro tópico, a requisição é feita da seguinte maneira :
http://0.0.0.0:5000/rerun_pipeline/<chat_id>
Já para o segunto tópico, a requisição é a seguinte:
http://0.0.0.0:5000/rerun_pipeline/<chat_id>/<pipeline_id>
Dei uma olhada aqui e acho que não é necessário fazer 2 rotas, pois, na pasta pipeline, já existe uma função que retorna os pipelines do usuário, acho que podiamos utilizar esse código já feito e apenas criar uma outra rota nessa mesma pasta para reiniciar o pipeline.
@sudjoao Acho válido.
@sudjoao Eu já previa essa fala. Imaginei que ocorreria. Sim, talvez seja possível usar o código já existente. Talvez. Tem que ver direitinho, porque do jeito que está eu consigo filtrar exatamente o que eu preciso para retornar ao usuário . Se fôssemos usar o código pronto do método da classe Report, por exemplo, não daria, porque esse método não tem retorno. Já em relação à pasta pipeline, não sei ao certo o funcionamento. A princípio acho bom o jeito que está .
@vitorandos, o @ErickGiffoni e eu estamos com uma duvida. Estamos pensando em mostrar ao usuário as pipelines do projeto dele que falharam em forma de botões. Cada botão vai ter o nome da pipeline e o id dela, isso porque pipelines podem ter o mesmo nome (isso ocorre quando elas vieram de uma mesma branch, e o que as diferencia é o id). Dai o usuário clica no botão e a gente reinicia a pipeline referente ao botão. O que acha ? Nos responde rápido, por favor, estamos in a hurry.
Isso não é viável porque um projeto geralmente tem muitos pipelines que falham.
Como conversei com o @sudjoao ontem, o interessante é permitir que o usuário reinicie um pipeline assim que este falha, ie., logo que ele recebe a mensagem da Ada avisando-lhe que o pipeline falhou.
Logo, poderíamos adicionar um botão logo abaixo dessa mensagem de falha permitindo que o pipeline possa ser reiniciado.
@vitorandos A princípio essa notificação não está no escopo da nossa história. Como proceder, então ? Notificar o usuário seria outra funcionalidade, que não está planejada pra essa sprint. Ai como procedemos então ?
Essa funcionalidade já está implementada.
Mais informações em US07 e Criar webhook receiver.
Fazendo os testes agora com @sudjoao
Testes feitos e pull request realizado, apenas aguardando a aprovação.
Nome da issue
Descrição da Issue
Um projeto no GitLab pode ter uma ou várias pipelines. Quando uma delas falha, o usuário pode pedir à Ada para que ela reinicie essa pipeline, no intuito de que dessa vez a pipeline tenha sucesso.
Tasks:
Critérios de aceitação