From 69a89acbd909a5237897d27c0aeae5287edb68ff Mon Sep 17 00:00:00 2001 From: mvrp21 <mvrp21@inf.ufpr.br> Date: Mon, 5 Feb 2024 14:12:59 -0300 Subject: [PATCH] Deve funfar Signed-off-by: mvrp21 <mvrp21@inf.ufpr.br> --- .gitlab-ci.yml | 58 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 58 insertions(+) create mode 100644 .gitlab-ci.yml diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml new file mode 100644 index 0000000..4dacdcb --- /dev/null +++ b/.gitlab-ci.yml @@ -0,0 +1,58 @@ +# Eventualmente vou criar um template com tudo bem documentado. +# Isso eh um "rascunho" para eu ver o que funciona melhor e o que nao funciona" + +# Isso define os estagios do pipeline. +# Eles serao executados na ordem que voce definir. +stages: + # TODO: revisar, nao gostei desses nomes nessa ordem + # - builds de teste e deploy deveriam ser diferentes + # - idealmente a homologacao em si deve fazer parte do pipeline + - build + - test + - deploy + + +# Eu particularmente prefiro agrupar tudo de um estagio em um lugar. Eh mais facil de ver. +Build Job1: + stage: build + script: + - echo "Aqui voce roda seu 'npm install' ou seja la qual for sua ferramenta de build." +# Esses nomes "Build Job1", "Test Job X", e etc. sao arbitrarios. Escolha nomes que fazem sentido pra voce. +Build Job2: + stage: build + script: + - echo "Isso deve rodar deboa TAMBEM" + - echo "npm install" + + + +# TODO: Aqui faria mais sentido rodar os testes de integracao, ja que +# cosas como linter rodam antes faz sentido os testes UNITARIOS rodarem antes tambem +Test Job: + stage: test + script: + - echo "Coisas como test coverage rodam aqui." + - echo "No geral, test coverage deveria ser 90%+. Podemos discutir isso eventualmente." + - echo "Se qualquer comando retornar um exit-code diferente de zero o pipeline cancela" + # --------------------------------------------------------------------------- # + - echo "Tome MUUUITO cuidado com esses exit-codes." + - echo "Se o teste falhar mas seu comando retornar zero o pipeline continua." + # --------------------------------------------------------------------------- # + - echo "npm run test" + + + +# Essa parte depende bastante dos roots. +# Estou ainda pesquisando como facilitar isso, queria deixar bem clean. +# Os fatores que dificultam sao os seguintes: +# - Versionamento (se o repositorio fizer direito da pra dockarizar bonito e isso fica resolvido) +# - Janelas de atualizacao (somente permitir deploy em horarios em que alguem possa verificar que funcionou) +# - Deploy parcial (nao sei explicar isso com poucas palavras ainda) +# - Rollbacks (deu caca no deploy da producao, tem que voltar pra versao anterior com um click) +# - Qualquer coisa que se relacione ao BD, pois ele esta completamente separado da aplicacao. +Deploy Job: + stage: deploy + only: + - main # Da pra ajustar a branch como necessario, pegar um deploy separado para outra maquina por exemplo + script: + - echo "Aqui rodaria a parte de deploy. E eh a parte mais chatinha de fazer." -- GitLab