Antes de tudo, a partir de hoje, o GitLab Community Edition pode ser totalmente interoperável com o Jenkins. Nenhuma pergunta.
A seguir, dou alguns comentários sobre uma experiência bem-sucedida combinando o Jenkins e o GitLab CI. Também discutirei se você deve usar os dois ou apenas um deles e por que motivo.
Espero que isso lhe forneça informações de qualidade em seus próprios projetos.
Pontos fortes do GitLab CI e Jenkins
IC do GitLab
O GitLab CI é naturalmente integrado no GitLab SCM. Você pode criar pipelines usando gitlab-ci.yml
arquivos e manipulá-los através de uma interface gráfica.
Esses pipelines como código podem obviamente ser armazenados na base de código, impondo a prática "tudo como código" (acesso, controle de versão, reprodutibilidade, reutilização etc.).
O GitLab CI é uma ótima ferramenta de gerenciamento visual:
- todos os membros das equipes (incluindo os não técnicos) têm acesso rápido e fácil ao status do ciclo de vida dos aplicativos.
- portanto, pode ser usado como um painel interativo e operacional para gerenciamento de liberação.
Jenkins
Jenkins é uma ótima ferramenta de construção. Sua força está em seus muitos plugins. Especialmente, tive muita sorte em usar plugins de interface entre o Jenkins e outras ferramentas de CI ou CD. Essa é sempre uma opção melhor do que recriar (possivelmente mal) uma interface de diálogo entre dois componentes.
O pipeline como código também está disponível usando groovy
scripts.
Usando o GitLab CI e Jenkins juntos
Pode parecer um pouco redundante a princípio, mas a combinação de GitLab CI e Jenkins é bastante poderosa.
- O IC do GitLab orquestra (encadeia, executa, monitora ...) pipelines e pode-se beneficiar de sua interface gráfica integrada ao GitLab
- Jenkins executa o trabalho e facilita o diálogo com ferramentas de terceiros.
Outro benefício desse projeto é ter um acoplamento frouxo entre as ferramentas:
- poderíamos substituir qualquer um dos componentes da fábrica de construção sem precisar refazer todo o processo de CI / CD
- poderíamos ter um ambiente de construção heterogêneo, combinando (possivelmente vários) o Jenkins, o TeamCity, o nome dele, e ainda ter uma única ferramenta de monitoramento.
O compromisso
Bem, é claro, há um preço a pagar por esse projeto: a configuração inicial é complicada e você precisa ter um nível mínimo de entendimento de muitas ferramentas.
Por esse motivo, eu não recomendo essa configuração, a menos que
- você tem muitas ferramentas de terceiros para lidar. É quando Jenkins é super útil com seus muitos plugins.
- você precisa lidar com aplicativos complexos com tecnologias heterogêneas, cada um com um ambiente de construção diferente, e ainda precisa ter uma interface de usuário de gerenciamento de ciclo de vida de aplicativos unificada.
Se você não estiver em nenhuma dessas situações, provavelmente estará melhor com apenas uma das duas, mas não com as duas.
Se eu tivesse que escolher um
O GitLab CI e Jenkins têm prós e contras. Ambos são ferramentas poderosas. Então qual escolher?
resposta 1
Escolha aquele em que sua equipe (ou alguém próximo) já possui um certo nível de experiência.
Resposta 2
Se vocês são todos novatos em tecnologias de CI, basta escolher um e seguir em frente.
- Se você estiver usando o GitLab e tiver um talento especial para tudo como código, faz total sentido escolher o GitLab CI.
- Se você precisar dialogar com muitas outras ferramentas de CI / CD ou precisar absolutamente dessa GUI para criar seus trabalhos, vá para Jenkins.
Aqueles de vocês que estão usando o GitLab e não têm certeza de que continuarão fazendo isso ainda precisam ter em mente que, ter escolhido o IC do GitLab implicaria na lixeira de todos os seus pipelines de CI / CD.
A palavra final é: o equilíbrio se inclina um pouco para Jenkins por causa de seus muitos plugins, mas é provável que o GitLab CI preencha rapidamente a lacuna.