Execução de ramificações de recurso com o Bitbucket Pipelines

Aprenda como fazer entrega contínua com um Gitflow ou fluxo de trabalho de ramificação de recurso. 

Sten Pittet Sten Pittet

Seja usando Gitflow ou apenas ramificações de recurso com uma ramificação principal, você pode adotar com facilidade a entrega contínua (CD) com o Bitbucket Pipelines. Não há necessidade de configurar um servidor complexo de integração contínua (CI), você só vai precisar habilitar o Pipelines e definir os fluxos de trabalho para poder executar testes e implementações nas ramificações.

Bitbucket Pipeline

A gente vai ver neste tutorial como você pode configurar o Bitbucket Pipelines para executar diferentes pipelines para diferentes ramificações e como você pode proteger as ramificações de merges incorretas.

Etapa 1: Comece com pipelines padrão que possam ser executados em ramificações de recurso

O uso de ramificações de recurso é uma ótima maneira de evitar que a ramificação principal deixe de funcionar com frequência. Os desenvolvedores podem trabalhar em uma melhoria específica em uma ramificação separada e fazer o merge das alterações quando o build estiver verde. No entanto, esta situação não significa que seja menos importante manter estáveis as ramificações de recurso. Para permitir uma ótima colaboração, também é importante manter as ramificações de recurso em um estado verde. Usar ramificações de recurso é um meio de facilitar o entendimento de quais mudanças foram feitas para resolver um item específico. Elas não devem ser usadas como uma oportunidade para atrasar a qualidade.

Portanto, a primeira ação a fazer ao habilitar o Bitbucket Pipelines é criar um pipeline padrão que vai executar testes para cada ramificação. Essa ação pode ser feita com facilidade ao escolher um dos templates padrão disponíveis.

Configuração de pipeline em JavaScript padrão

Todos os templates específicos de linguagem usam um pipeline padrão com a palavra-chave padrão que vai ser executada para cada ramificação enviada. Você pode fazer o commit do arquivo de configuração bitbucket-pipelines.yml no repositório para que o primeiro pipeline seja executado na ramificação principal.

Primeiro pipeline executado para branch principal

Você pode apenas enviar uma ramificação nova com alterações para verificar se o mesmo pipeline é executado em uma ramificação diferente.

Etapa 2: adicionar um novo pipeline para a ramificação principal

Se você estiver praticando entrega contínua, provavelmente quer enviar as alterações por push à principal para serem implementadas automaticamente em um ambiente de staging. Para isso, vamos adicionar um novo pipeline de ramificação que implementa o código depois de executar testes e somente é executado para a principal.

image: node:4.6.0
   pipelines:
   default:
     - step:
         script:
           - npm install
           - npm test
   branches:
     main:
       - step:
           script:
             - npm install
             - npm test
             - ./deploy.sh  

A seção ramificações na configuração YML acima é onde a gente define o pipeline que a gente quer executar quando as alterações são enviadas para a principal.

A partir de agora, um push à principal vai acionar uma implementação após ter criado e testado o aplicativo. Qualquer outra ramificação do repositório vai apenas criar e testar as alterações novas.

Etapa 3: Proteja as ramificações de versão

Após a conclusão da etapa 2, qualquer desenvolvedor pode acionar uma versão para produção apenas mesclando as alterações na ramificação principal. É uma situação arriscada porque alguém poderia implementar mudanças que ainda não foram revisadas por engano. Porém, você pode impedir que essa situação aconteça com facilidade adicionando permissões às ramificações no Bitbucket.

Vá para Configurações > Permissões de ramificação no seu repositório.

Permissões de ramificação

Adicione uma permissão de ramificação nova para a ramificação principal onde você deixa o acesso Gravar em branco para impedir que os desenvolvedores enviem direto para a principal. Em seguida, se adicione à Permissão de merge via solicitação pull.

Adicionar uma permissão de ramificação

Antes de salvar a permissão de ramificação nova, a gente vai adicionar uma verificação de merge para garantir que os merges não sejam permitidos a menos que haja pelo menos um build verde. Basta expandir a seção de verificações de merge para habilitar o recurso correspondente.

Adicionar uma permissão de ramificação

Depois de salvar, você pode verificar se a ramificação está protegida do jeito certo. Nenhum usuário ou grupo deve ter acesso de gravação e fazer merge via solicitação pull deve ser permitido para os membros de confiança da equipe.

Etapa 4: Use solicitação pull para promover mudanças na produção

Como você não pode mais enviar direto para a principal, você vai precisar usar solicitações pull para implementar na produção. Uma vez que a solicitação pull for criada, você apenas precisa fazer merge das alterações para a ramificação principal para acionar o pipeline de implementação.

Solicitação de pull do Bitbucket

Após o merge, você pode ir para a seção Pipelines do seu repositório para ver a implementação em ação.

Logs de pipeline do Bitbucket

A gente abordou os conceitos básicos de execução de ramificações de recurso com o Bitbucket Pipelines. Você pode adaptar esse exemplo às suas próprias necessidades e criar seu próprio pipeline de entrega contínua. Você também pode aprender mais com os guias sobre entrega contínua e implementação contínua.