Depois do código estar escrito, testado e validado, chega ao momento de movermos o código para produção ou até mesmo para pré-produção de forma que fique disponível para o público-alvo. Podemos sempre publicar de forma manual utilizando cli ou até mesmo diretamente no Visual Studio ou Rider, mas uma forma melhor é automatizar este processo. A melhor forma de automatizar é com CI/CD.
A integração contínua (CI) e entrega contínua (CD) são mais do que buzzwords — são pilares de um desenvolvimento moderno, ágil e sustentável. Neste post, vou partilhar a ferramenta de CI/CD que vou usar na automatização dos meu processos e fluxo de trabalho.
🧩 O que é CI/CD e por que importa?
- CI (Continuous Integration): Automatiza a integração de código novo no repositório principal, garantindo testes e validações constantes.
- CD (Continuous Delivery/Deployment): Automatiza a entrega do software para ambientes de staging ou produção, com segurança e consistência.
👉 Benefícios:
- Menos erros em produção
- Feedback rápido
- Deploys mais frequentes e confiáveis
- Equipa mais alinhada e produtiva
Existem algumas ferramentas que podem ajudar neste processo. Vou deixar aqui algumas opções que encontrei enquanto tentava decidir como iniciar com a integração contínua. Ainda estou muito no início, também, por isso, é provável que não tenha a informação toda ou que cometa alguns erros. As ferramentas que encontrei são as seguintes:
🧱 Jenkins
- Open-source, auto-hospedado
- Pontos fortes:
- Extensibilidade: +1800 plugins para quase tudo
- Flexibilidade total: pipelines altamente customizáveis
- Escalável: ideal para ambientes distribuídos
- Desvantagens:
- Curva de aprendizagem acentuada
- Manutenção constante: atualizações, segurança, plugins
- UI antiquada: menos intuitiva para iniciantes
🏗️ TeamCity (JetBrains)
- Comercial, com versão gratuita limitada
- Pontos fortes:
- Interface moderna e intuitiva
- Suporte nativo a .NET, Java, Docker, etc.
- Builds paralelos e gestão de agentes eficiente
- Desvantagens:
- Licenciamento: versão completa é paga
- Menos plugins que Jenkins
- Menos popular para projetos open-source
🐙 GitHub Actions
- Nativo do GitHub, baseado em YAML
- Pontos fortes:
- Sem configuração inicial: já integrado no GitHub
- Marketplace com milhares de ações reutilizáveis
- Bom suporte a Docker, runners self-hosted
- Gratuito para projetos públicos
- Desvantagens:
- Limitações de tempo e recursos em planos gratuitos
- Menos adequado para pipelines extremamente complexos
- Dependente do ecossistema GitHub
🦊 GitLab CI/CD
- Nativo do GitLab, baseado em YAML
- Pontos fortes:
- Pipeline como código com
.gitlab-ci.yml - Integração total com GitLab (issues, merge requests, etc.)
- Suporte a runners customizados e escaláveis
- Interface clara e poderosa
- Pipeline como código com
- Desvantagens:
- Menos intuitivo para quem vem do GitHub
- Configuração inicial pode ser mais técnica
- Alguns recursos avançados são pagos
A minha escolha
Jenkins deve ser uma das ferramentas de CI/CD mais conhecidas e que mais ouvi falar para as mais variadas linguagens. Inicialmente até estava a pensar em utilizar Jenkins, mas o facto de dizerem que pode ser muito confuso para iniciar acabei por me afastar desta opção. Queria algo que fosse simples de configurar e pudesse começar a usar quase logo desde o início. Como uso Rider para programar, ainda pesquisei por TeamCity, mas sinceramente já tentei por duas vezes usar e sempre foi muito confuso para mim. Gitlab seria uma opção, mas teria de mover os meus projectos para o gitlab, por isso acabei por escolher Github Actions. É relativamente fácil de usar, tens uma comunidade relativamente grande, por isso é fácil de encontrar sugestões e resolução de problemas. A versão gratuita tem limite de minutos (2000 minutos), mas é mais do que suficiente para os meus projectos. Outra coisa importante para mim era que corresse localmente na minha máquina, porque publico os meus projectos diretamente no meu home server. O Github Actions permite ter runners locais que tratam disso, por isso quando passar à parte de publicar o projecto é muito simples de o fazer.
Conclusão
Nesta primeira introdução vimos algumas opções de ferramentas e quais os motivos que me fizeram escolher Github Actions. Para mim, é a melhor opção por ter uma grande comunidade, ser fácil de utilizar e poder usar agentes locais. As outras opções também são muito válidas e até existem muitas mais que me apareceram, mas nem considerei, por nunca ter ouvido falar nelas. Irei continuar a aprender sobre CI/CD e nos próximos tempos irei ter o meu setup completamente otimizado. Acompanha-me nesta aventura.