====== Configurando uma pipeline ====== [[pres:gerti:devops:como_criar_uma_pipeline_de_ci_cd:start|Como criar uma pipeline de CI/CD]] Como dito antes, o repositório [[https://gitsource.tce.go.gov.br/GER-TI/tce.kubernetes/tce.templates|TCE.Templates]] foi criado para encapsular a implementação dos jobs e das pipelines. Para implementar uma pipeline padrão em seu projeto, basta acessar o [[https://gitsource.tce.go.gov.br/GER-TI/tce.kubernetes/tce.templates|TCE.Templates]]. Iremos tomar como base a versão mais recente do repositório atualmente, versão 3.0.0. ===== Entendendo o TCE.Templates ===== No [[https://gitsource.tce.go.gov.br/GER-TI/tce.kubernetes/tce.templates|TCE.Templates]] há 4 exemplos de pipelines: - Pipeline Docker Mínima - Pipeline Kubernetes Mínima - Pipeline Docker Completa - Pipeline Kubernetes Completa As pipelines Docker, realizam deploy através do docker, e as pipelines Kubernetes realizam deploy através do Kubernetes. * Para configurar seu repositório nos padrões do Docker, veja: [[como_envelopar_meu_projeto_com_docker|Como Configurar meu projeto com Docker]]. * Para configurar seu repositório para deploy no Cluster Kubernetes, veja: [[pres:gerti:devops:como_configurar_repositorio_kubernetes:start|Como Configurar meu projeto com Kubernetes]] As pipelines mínimas possuem configurações que todos os repositórios deveriam ter, atualmente elas se resumem a: * Versionamento Automático * Deploy Automático (Com exceção de repositórios onde não há deploy, ex: bibliotecas) Já as pipelines completas também possuem: - Lints - Testes - Integração com o Sonar ===== Importando um modelo de pipeline ===== Para implementar uma pipeline, basta acessar o [[https://gitsource.tce.go.gov.br/GER-TI/tce.kubernetes/tce.templates|TCE.Templates]], escolher sua pipeline no sumário, neste exemplo iremos implementar a [[https://gitsource.tce.go.gov.br/GER-TI/tce.kubernetes/tce.templates/-/blob/3.0.0/examples/pipeline-docker-minimal.yml?ref_type=tags|pipeline-docker-minimal]]. Veja que ele possui 2 stages: * ''%%versioning%%'' * ''%%deploy%%'' E 4 includes: - Versionamento Produção - Versionamento Homolog - Deploy Docker Produção - Deploy Docker Homolog Cada um desses includes são [[|CI/CD Components]] que implementam um Job na pipeline. Você pode ver a documentação deles no próprio [[|TCE.Templates]]: [[https://gitsource.tce.go.gov.br/GER-TI/tce.kubernetes/tce.templates/-/blob/main/templates/versioning/docs.md|Versioning Job]] e [[https://gitsource.tce.go.gov.br/GER-TI/tce.kubernetes/tce.templates/-/blob/main/templates/deploy-docker/docs.md|Deploy-Docker]]. ===== Ajustar a ===== Cada um dos components possui uma tag ''%%@%%'' no final. Você deve substituir a versão de todos os components pela versão mais recente da biblioteca. Em nosso caso, é a versão ''%%3.0.0%%'' que fica: ''%%- component: $CI_SERVER_FQDN/GER-TI/tce.kubernetes/tce.templates/deploy-docker@3.0.0%%''. > Nota: Nunca use ''%%@main%%'', prefira sempre pinnar sua pipeline a uma versão específica. Dessa forma, se sua pipeline funciona, ela semop ===== Environments ===== Todos os Components possuem uma palavra chave ''%%environment%%''. Quando ''%%environment: production%%'', esse job será executado quando houver push na ''%%main%%''/''%%master%%'', quando for ''%%environment: homolog%%'', será executado na ''%%develop%%''/''%%homolog%%''. ===== Versioning ===== O job [[https://gitsource.tce.go.gov.br/GER-TI/tce.kubernetes/tce.templates/-/blob/main/templates/versioning/docs.md|Versioning]] é o job responsável por realizar o versionamento do repositório. Se você leu sobre [[pres:gerti:devops:como_nomear_commits|Como nomear Commits?]], já sabe o que vem a seguir. O job irá rodar o [[pres:gerti:devops:semantic_release|semantic_release]], o qual irá ler o nome do último commit, decidir se uma alteração Major, Minor ou um Patch, e criar uma nova versão. Ele vai criar uma Tag automaticamente no padrão de [[pres:gerti:devops:versionamento_semantico|Versionamento Semântico]]. Esse job é bem padrão e não é necessário alterar nada. ===== Deploy Docker ===== O job ''%%deploy-docker%%'' irá realizar o deploy em um servidor rodando docker. Para configurar ele é bem simples: - Indique qual é o arquivo ''%%docker-compose.yml%%'' para produção e qual é para homologação na input ''%%compose-file:%%'' - Acesse a [[https://wiki.tce.go.gov.br/doku.php/pres:gerti:processos_de_ti:devops#maquinas|Lista de Runners Docker]] (ou [[https://gitsource.tce.go.gov.br/groups/GER-TI/-/runners|Lista de Runners - Gitlab]]). - Encontre qual é a Tag do servidor que você deseja fazer deploy. * Por exemplo, em homologação queremos fazer deploy no servidor: ''%%Docker Staging Server%%'' ou ''%%vmdocker-02.tce.go.gov.br%%''. Então é: ''%%tag: docker-stag-runner%%'' * Em produção, queremos fazer no ''%%Docker Production Server%%'', ou ''%%vmdocker-01.tce.go.gov.br%%''. Então é: ''%%tag: dockers-prod-runner%%'' ===== Fazendo push ===== Feito isso, pode fazer ''%%push%%'' e ser feliz a pipeline deve estar pronta. ===== FAQ =====