Merge Request

Merge request é uma forma de solicitar que seja feito merge das alterações existentes em uma branch para outra.

É uma ferramenta útil para manter a qualidade no controle das alterações. A seguir serão dados alguns exemplos de como isso pode ser feito.

Consolidando alterações do ambiente de desenvolvimento para o de produção

Conforme descrito anteriormente, tipos diferentes de ambiente operam com branches diferentes na publicação dos robôs, integrações Java e aplicações.

Pensando em um cenário em que primeiro foram feitas alterações em um ambiente de desenvolvimento, para levar essas alterações ao ambiente de produção, as alterações devem ser replicadas na branch correspondente. Isso pode ser feito através de um merge request.

Acessar o repositório no Gitlab, clicar no botão “Create new” (símbolo +) e selecionar a opção “New merge request”.

Na próxima tela, selecione a branch de origem e a de destino. No exemplo, precisamos levar as alterações do ambiente de desenvolvimento, branch test, para o ambiente de produção, branch master.

Clique em “Compare branches and continue” para avançar.

A próxima tela contém as informações do merge request. É importante se atentar à seção “Merge Options”, para que as duas opções disponíveis estejam desmarcadas, pois não devemos excluir a branch de desenvolvimento.

Logo abaixo, também é possível verificar os commits e as alterações que irão de uma branch para a outra.

Se estiver tudo certo, clique no botão “Create merge request” e na próxima tela clique no botão “Merge”.

Feito isso, basta seguir o fluxo de publicação no Studio do ambiente de produção. 

Boas práticas para manutenção do código-fonte 

Uma boa prática para a manutenção do código-fonte é a criação de branches específicas para o desenvolvimento de uma nova funcionalidade, até que o código esteja todo liberado. Dessa forma, não corremos o risco da funcionalidade parar no ambiente do cliente antes de estar finalizada. (Vini é funcionalidade mesmo?)

Para fazer a criação da Branch, abra o terminal no diretório do repositório, e verifique se está na branch base atualizada:

  1. Utilizar o comando “git branch” para verificar se está na branch correta e caso não esteja, mude, excutando o comando “git checkout [nome da branch]”.

  2. Atualizar o repositório local através do comando “git pull”.

  3. Criar a nova branch com o comando “git checkout -b [nome da nova branch]”. Isso fará com que uma nova branch seja criada, a partir da branch que estava sendo apontada anteriormente.

Quando o desenvolvimento estiver concluído, basta seguir o procedimento de merge request detalhado no item Merge Request | Consolidando alterações do ambiente de desenvolvimento para o de produção.

Utilizaremos como exemplo a aplicação que valida CPF do item Alterações no código-fonte | Adicionando uma biblioteca pelo Maven. Adicione uma nova funcionalidade para validar CNPJ, a partir da branch test:

  1. Verificar se está na branch test:

 

  1. Atualizar o repositório local:

 

  1. Criar a nova branch:

 

  1. Criar uma nova classe CnpjValidatorController contendo o código:

package br.com.lecom.AppExternaSimples.controller; import java.util.Map; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import br.com.caelum.stella.validation.CNPJValidator; import br.com.caelum.stella.validation.InvalidStateException; @RestController @RequestMapping("api/v1/cnpj") public class CnpjValidatorController { @PostMapping public Map < String, Object > validate(String cnpj) { try { CNPJValidator cnpjValidator = new CNPJValidator(); cnpjValidator.assertValid(cnpj); return Map.of("status", "VÁLIDO"); } catch (InvalidStateException e) { return Map.of("status", "INVÁLIDO"); } } }
  1. Fazer o commit e o push para o repositótrio remoto;

  2. Acessar o Gitlab e abrir um novo merge request da feature/cnpj para a branch test:

  1. Neste caso, como é uma branch temporária para desenvolvimento, podemos marcar a opção “Delete source branch when merge request is accepted”. Dessa forma, ao finalizar o merge request a branch feature/cnpj será excluída.