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