Use o VSTS para builds de CI do GitLab

Mais um post na interminável série "perguntas legais no Slack da Lambda3":

@here é possível integrar o gitlab com o VSTS?
e usar os mesmos esquemas de build triggers e tals?

Sim, dá. Veja como.

Apesar de o GitLab não oferecer nenhum suporte nativo ao VSTS – e vice-versa – dá para configurar um build de CI assim mesmo.

O "truque" aqui reside no fato de que o VSTS permite fazer build de integração contínua de qualquer repositório Git remoto, mesmo sem uma integração nativa.

"", você pode perguntar, "então para quê precisamos de uma integração nativa?".

Simples: Conveniência.

Provedores de código no VSTS

Atualmente, o VSTS oferece suporte nativo a três provedores de código: O próprio VSTS, GitHub e Bitbucket.

Tela de seleção dos provedores de controle de versão disponíveis para um build
Tela de seleção dos provedores de controle de versão disponíveis para um build

Usar um dos provedores nativos (VSTS, GitHub, Bitbucket) é mais conveniente porque:

  1. O processo de conexão é simplificado;
  2. Eles suportam triggers de CI, notificando o VSTS sempre que um commit ocorre para podermos ter um build de integração contínua disparado automaticamente.

Além dos três, há outros dois provedores genéricos – um para Git, outro para Subversion. Por serem genéricos, eles têm suas limitações:

  1. Não temos um processo de conexão simplificado (sem OAuth ou algo parecido); e
  2. Não temos notificações de commit e, portanto, nada de triggers de CI.

"Ué, sem trigger de CI? Então como faz?"

Simples de novo: Polling.

Configurando um build de CI para o GitLab

Para começar a configuração de um build de CI para o GitLab, crie uma nova definição de build e adicione uma conexão ao GitLab:

Para configurar um build do GitLab, na aba Get Sources (1) selecione a opção Remote Repo (2) e então clique em Add connection (3)
Para configurar um build do GitLab, na aba Get Sources (1) selecione a opção Remote Repo (2) e então clique em Add connection (3)

Ao clicar em Add connection, preencha os dados da sua conexão:

Para criar uma conexão com o GitLab, escolha um nome amigável para a conexão (1), informe o URL de Clone do seu repositório (2), e então coloque suas credenciais de Git (3 e 4)
Para criar uma conexão com o GitLab, escolha um nome amigável para a conexão (1), informe o URL de Clone do seu repositório (2), e então coloque suas credenciais de Git (3 e 4)

Com isso, já é possível ter builds manuais e agendados. Falta apenas a configuração necessária para que esse build possa ser também de integração contínua.

Na seção Triggers, faça a configuração para ativar a integração contínua. O que vai acontecer é que, a cada X segundos, o VSTS irá conectar-se ao repositório remoto (neste nosso exemplo, o do GitLab) e verificar se houve alguma mudança desde o último build. Se sim, ele dispara um build automaticamente.

Para configurar um build de CI para um repositório remoto genérico, habilite o trigger (1) informe o intervalo em segundos para que o VSTS verifique se houveram mudanças (2) e, opcionalmente, indique quais as branches que devem ser monitoradas (3)
Para configurar um build de CI para um repositório remoto genérico, habilite o trigger (1) informe o intervalo em segundos para que o VSTS verifique se houveram mudanças (2) e, opcionalmente, indique quais as branches que devem ser monitoradas (3)

O intervalo-padrão é de três minutos (180s). Ajuste esse valor de acordo com sua necessidade. Cuidado apenas para não colocar um intervalo muito pequeno para não onerar sua infraestrutura.

Mas para quê tudo isso? O GitLab já tem build automatizado próprio!

E por que não? 😃
E por que não? 😃

Brincadeiras à parte, vejo algumas possibilidade para alguém querer usar o build do VSTS ao invés do nativo do GitLab:

  1. Tirar proveito do editor visual do VSTS (ao invés de usar arquivos YAML);
  2. Usar as tasks disponíveis para simplificar processos complexos de build e/ou release;
  3. Usar o Release Management do VSTS.

Conclusão

E você, já precisou fazer builds de CI para repositórios Git fora do VSTS? Já tinha pensado em usar o build do VSTS com código externo?

Deixe seu comentário!

Um abraço,
Igor

Autor: Igor Abade

Igor Abade V. Leite ([email protected]) é Microsoft MVP (Most Valuable Professional) de Visual Studio ALM desde 2006. Palestrante em diversos eventos da comunidade de desenvolvimento de software (TechEd Brasil, The Developers’ Conference, DevOps Summit Brasil, Agile Brazil, Visual Studio Summit, QCON e outros), é também autor de artigos em revistas e sites como o MSDN Brasil. Desde março de 2011 é um dos sócios da Lambda3, uma consultoria especializada em ALM, desenvolvimento de software e treinamentos. Visite seu blog sobre VS ALM em http://www.tshooter.com.br/ e siga-o no Twitter @igorabade.

Deixe seu comentário!