Gerência de Configuração

Estratégia de Backup

Versão do documento: 2.0, 02/01/2025

Introdução

Objetivo

Este documento tem por objetivo documentar toda a estratégia de backup utilizada pela Basis, bem como estabelecer critérios de backup e evidenciar a realização da prática através de relatórios, apontando problemas e correções.

Escopo

Considera-se no escopo deste documento abordar todas as etapas e procedimentos que são necessários para a construção efetiva de um backup, tal como as configurações e breves explicações sobre o funcionamento de ferramentas envolvidas.

Não Escopo

Estão fora do limite definido como escopo deste documento dados de máquinas cujo backup é realizado pelas ferramentas listadas, informações inerentes à configuração e conexão da VPN da Basis, bem como de acesso remoto à máquina do Bacula, ou especificidades desnecessárias ao contexto.

Definições, Acrônimos e Abreviações

Backup

Cópia de segurança de dados de um dispositivo ou software, para possível recuperação do original em casos emergenciais.

Daemon

Software que executa em segundo plano em sistemas operacionais multitarefa.

Ferramentas Utilizadas

Todo o processo de backup da Basis é realizado através da ferramenta Bacula, centralizada em uma máquina especializada, de nome Amsterdam. O Bacula é um framework para administração, restauração e verificação de backups e dados de máquinas seletas em uma rede. A configuração do Bacula é dividida em três partes:

Bacula Director

O Director (bacula-dir.conf) é a parte mais complexa do sistema, em que se figura toda a configuração dos trabalhos de backup (job), agendamentos, pools, seleção dos alvos de backup (FileSet), definição do tipo de armazenamento, etc. Em suma, configuram-se os clientes e arquivos que farão parte do backup, além de realizar a comunicação entre os clientes e dispositivos de armazenamento.

Bacula File Daemon

File Daemon (bacula-fd.conf). Todos os clientes que possuem esse daemon em execução estabelecem uma comunicação com o Director, que por sua vez gerencia todas as máquinas e redireciona os dados destas para o Storage.

Bacula Storage Daemon

Storage Daemon (bacula-sd.conf) é o arquivo de configuração do Bacula, em que se relacionam os dispositivos de armazenamento, como fitas e discos, para organizar os dados armazenados advindos do Director. Esse agente estabelece a comunicação com tais dispositivos, armazenando ou recuperando os arquivos específicos de cada cliente.

Backup

Há três tipos diferenciados de backup realizados na Basis:

Backup Full/Total

backup completo dos dados. O próximo backup, seja ele Diferencial ou Incremental, usará este como referencial, portanto, é obrigatório para seguir com todos os backups seguintes. Na Basis, esse tipo de backup é realizado no primeiro domingo de cada mês. Para restaurar um backup Full, pode-se restaurar todo o job que realizou o backup, ou seja, restaurar todos os arquivos copiados, ou selecionar apenas os arquivos que se deseja restaurar a partir deste job.

Backup Diferencial

somente os arquivos novos ou modificados desde o último backup completo (Full) são transmitidos. Neste modelo, o espaço ocupado com o armazenamento dos arquivos é maior em relação ao Incremental, mas o tempo para restauração dos dados é menor. Na Basis, fazemos esse tipo de backup todos os domingos, às 23h. Para restaurar um backup Diferencial, pode-se restaurar todo o job do backup Diferencial desejado, ou seja, apenas aqueles arquivos que foram copiados, tomando como referência o último backup Full. Se o desejado for restaurar outro diferencial que não seja o imediatamente anterior, é preciso inicialmente restaurar o último backup Full, e depois avançar até o diferencial desejado.

Backup Incremental

somente os arquivos novos ou modificados desde a última execução do backup são transmitidos. Nesse modelo, o espaço ocupado com o armazenamento dos arquivos é menor, e o tempo para restauração dos dados é maior. Na Basis, esse tipo de backup é realizado todos os dias, às 23h. Para restaurar um Backup Incremental, pode-se restaurar todo o Job do backup desejado, ou seja, apenas os arquivos copiados, tomando como referência o último backup, seja ele Full, Diferencial ou Incremental. Caso o interesse seja restaurar todo o backup, desde outro referencial que não seja o imediatamente anterior, é preciso inicialmente restaurar o backup Diferencial antecedente ao desejado, e em seguida os incrementais seguintes até o que se deseja restaurar.

As máquinas internas que seguem as especificações de backup acima listadas são as seguintes:

orlando

Máquina do SGO, inclui todas as configurações e anexos de ocorrências da Basis. Os seguintes diretórios são salvos:

/etc
/var/lib
/volumes
brasilia

Servidores reverse proxy que servem de ponto de entrada externo para os principais sistemas utilizados pela Basis. Os seguintes diretórios são salvos:

/etc/apache2
bridgetown

Servidores reverse proxy que servem de ponto de entrada externo para os principais sistemas desenvolvidos pela Basis. Os seguintes diretórios são salvos:

/etc/nginx
praga

Máquina do NFS com drive SSD, onde são salvos os dados utilizados em ambientes de produção da Basis que exigem mais dinamismo de escrita e leitura, como os repositórios e configurações do Git (Gitlab) e SonarQube, entre outros. Os seguintes diretórios são salvos:

/etc
/opt
/export/rancher
mykonos

Máquina do NFS com drive HD, onde são salvos os dados utilizados em ambientes de produção da Basis, como dados do site da Basis, Chat Basis (RocketChat), repositórios de imagens e bibliotecas (Nexus), entre outros. Os seguintes diretórios são salvos:

/mnt/nfs_kube/nexus_docker
ottawa

Máquina do NFS com drive HD, onde são salvos os dados utilizados pelo Jenkins, como configurações de Jobs, plugins, bibliotecas baixadas do Nexus para construção, entre outros. Os seguintes diretórios são salvos:

/etc
/opt
/export/rancher
panama

Máquina do Rancher de produção da Basis, onde fica armazenada toda a configuração da infraestrutura de produção rodando em Rancher 2. Os seguintes diretórios são salvos:

/etc
/opt
/srv/rancher2/volume
amsterdam

Máquina do Bacula, inclui toda a configuração de backup para restauração dos clientes. O seguinte diretório é salvo:

/etc/bacula

Configurações de Hardware

O Bacula tem sua instância instalada em uma máquina física com sistema operacional Linux Ubuntu 14.04 LTS, com um CPU Xeon 4 cores, 8192MB de memória RAM, e 5,5TB de armazenamento configurado em RAID 10. Os backups são divididos em volumes pelo Storage Daemon.

Estratégia de Verificação, Verificação por pares e Validação

Versão do documento: 4.0, 02/01/2025

Verificação por Pares

A verificação por pares é executada para identificar defeitos na documentação dos candidatos enviada aos clientes.

A Basis realiza verificações por pares em seus artefatos através da técnica de Inspeção, onde um revisor fará uma inspeção com base em critérios, nos artefatos selecionados.

São efetuadas inspeções em documentações dos candidatos enviadas aos clientes, com base em critérios definidos nas ferramentas SGO. No momento da inspeção, a tarefa deve ser atribuída ao revisor, que deverá então analisar os documentos à luz dos critérios padronizados. Caso problemas sejam identificados, estes poderão ser relatados no texto de observação existente no checklist, bem como em evidências de captura de tela, quando pertinente.

Em todas as revisões por pares o revisor deve se preocupar em:

Verificar se o modelo está na versão mais atual da Biblioteca de Ativos * Garantir que o formato do documento está conforme o modelo * Garantir que as seções estão conforme o modelo * Garantir que houve correção ortográfica automática no documento * Garantir que não foram excluídas as seções do modelo

Artefatos verificados por pares

Documentação dos candidatos

  • Analista de RH deve revisar as informações dos candidatos apresentadas na documentação antes do envio ao cliente:

  • Verificar se comprovações de experiência estão conforme o definido no contrato

  • Verificar se certificações estão conforme o definido no contrato, caso aplicável

  • Verificar se versão atual do currículo do candidato

Planilhas de faturamento

  • Analista de Faturamento deve revisar as informações de faturamento antes do envio ao cliente:

  • Verificar se todos os postos foram listados

  • Verificar se assiduidade foi registrada corretamente

Guia de Gerência de Configuração

Versão do documento: 4.1, 17/02/2025

Critérios

A BASIS define 2 modos de controle de itens de configuração:

FORMAL

todo item de configuração de controle formal, que não seja elaborado internamente ao SGO, deverá ser inserido em baseline e sua alteração deverá ser analisada e aprovada antes da execução. Todo o ciclo de vida é gerenciado em ferramenta. Para alterações nestes itens é necessário criar uma tarefa de descrição da mudança a ser realizadas.

Obs.: A Baseline deve ser gerada conforme o estabelecimento dos requisitos dos serviços na fase de planejamento. Para ICs organizacionais, a periodicidade está definida no cronograma do projeto de melhoria de processos. Nelas estarão presentes todos os Ics de nível de controle formal.

CONTROLE DE VERSÃO

itens de configuração de controle de versão não necessitam ser inseridos em baseline, mas podem constar como forma de rastreamento de registro. Sua alteração é gerenciada em ferramenta (SGO), sendo que o registro da causa de alteração é realizado no momento do versionamento.

A BASIS define que todo produto de trabalho é um item de configuração, e o nível de seu controle é caracterizado conforme abaixo:

  • Os requisitos dos perfis definidos no contrato serão considerados itens de configuração de controle formal.

  • Os produtos de trabalho decorrentes de atividades gerenciais e de suporte serão considerados itens de configuração com controle de versão.

  • Os produtos de trabalho decorrentes de atividades da biblioteca de ativos serão considerados itens de configuração com controle Formal por solicitações de melhoria no SGO. Exemplo: Modelos, definição de processos, fluxos…

  • Os produtos de trabalho decorrentes de atividades de RH serão considerados itens de configuração com controle de versão. Exemplo: Mapeamento de Competências, Plano Estratégico Tático de Treinamento…​

  • A regra para preencher o histórico de revisões dos documentos é a seguinte:

  • Para mudanças estruturais do documento (seções novas, seções removidas, criação de subseções), a numeração avança para o próximo número inteiro (por exemplo, de 1.0 para 2.0).

  • Para mudanças que não afetem a estrutura do documento, a numeração avança um decimal (por exemplo, 1.0 para 1.1).

  • Alguns documentos (conforme definido no Guia de Gerência de Configuração), como por exemplo a Política da Basis, devem passar por aprovação formal da direção, caso sofram uma mudança estrutural.

Permissões de Acessos

Gerente de RH

Tabela 1. Permissões Gerente RH
Repositório Permissão

Documentação do contrato

Visualização

Ocorrência de contrato

Visualização

Ocorrência de perfis

Edição

Biblioteca de ativos

Visualização

Projeto de melhoria

Visualização

Administrativo / Assistente de RH

Tabela 2. Permissões Administrativo / Assistente de RH
Repositório Permissão

Documentação do contrato

Sem acesso

Ocorrência de contrato

Sem acesso

Ocorrência de perfis

Visualização

Biblioteca de ativos

Visualização

Projeto de melhoria

Sem acesso

Entrevistador

Tabela 3. Permissões Entrevistador
Repositório Permissão

Documentação do contrato

Sem acesso

Ocorrência de contrato

Sem acesso

Ocorrência de perfis

Visualização

Biblioteca de ativos

Visualização

Projeto de melhoria

Sem acesso

Gestor de Contratos/ Preposto

Tabela 4. Permissões Gestor de Contratos/ Preposto
Repositório Permissão

Documentação do contrato

Visualização

Ocorrência de contrato

Edição

Ocorrência de perfis

Visualização

Biblioteca de ativos

Visualização

Projeto de melhoria

Visualização

EPG

Tabela 5. Permissões EPG
Repositório Permissão

Documentação do contrato

Visualização

Ocorrência de contrato

Edição

Ocorrência de perfis

Edição

Biblioteca de ativos

Edição

Projeto de melhoria

Edição

Analista de Configuração

Tabela 6. Permissões Analista de Configuração
Repositório Permissão

Documentação do contrato

Visualização

Ocorrência de contrato

Edição

Ocorrência de perfis

Edição

Biblioteca de ativos

Edição

Projeto de melhoria

Edição

Analista de Qualidade / Auditor de Configuração

Tabela 7. Permissões Analista de Qualidade / Auditor de Configuração
Repositório Permissão

Documentação do contrato

Visualização

Ocorrência de contrato

Visualização

Ocorrência de perfis

Visualização

Biblioteca de ativos

Visualização

Projeto de melhoria

Visualização

Medição e Análise

Tabela 8. Permissões Medição e Análise
Repositório Permissão

Documentação do contrato

Visualização

Ocorrência de contrato

Visualização

Ocorrência de perfis

Sem acesso

Biblioteca de ativos

Visualização

Projeto de melhoria

Sem acesso

Suporte SGO

Tabela 9. Permissões Suporte SGO
Repositório Permissão

Documentação do contrato

Visualização

Ocorrência de contrato

Visualização

Ocorrência de perfis

Visualização

Biblioteca de ativos

Visualização

Projeto de melhoria

Visualização

Regras de Nomenclatura

Baseline

  • Projeto de Melhoria: BASIS_BL_MELHORIA_numerosequencial

    • ex: BASIS_BL_MELHORIA_04

    • obs: caso haja uma revisão da baseline, pode ser colocado um número decimal

    • ex: BASIS_BL_MELHORIA_04.1

  • Organizacional: BASIS_BL_ORG_numerosequencial

    • ex: BASIS_BL_ORG_04

Commit

Os commits deverão obedecer a seguinte regra:

Assunto - XXX (Obrigatório)
(Linha em branco)
Corpo (Opcional)

Onde: * XXX - é o número da ocorrência no SGO;

  • Assunto - Um resumo do commit. Limitar esse campo a 72 caracteres. Para padronizar o preenchimento desse item, escrever complementando a expressão "Quando aplicar esse commit vai…​" e informar o assunto do commit. Por exemplo, Quando aplicar esse commit vai…​ "Corrigir a cor do botão cancelar - BASIS-12345"

A expressão Quando aplicar esse commit vai…​ não deve fazer parte da mensagem de commit!
  • Corpo - Uma descrição detalhada do commit;

  • Somente os membros da equipe de gestão de configuração podem alterar meta-dados (propriedades no sistema de controle de versão) dos artefatos. No GIT deve-se informar a ocorrência SGO que está trabalhando para a alteração do documento ao fazer o commit/push.

Rastreabilidade

Conforme definido no item Regras de Nomenclatura e no item Fluxo Git os commits podem ser relacionados à tarefa aberta para implementação da funcionalidade pelo número da ocorrência contido na mensagem de commit ou no nome da branch. Com isso é possível rastrear o requisito associado, no SGO, a partir da OS que originou a tarefa.

Ambientes

Integrantes Basis

Perfis: Analista de Qualidade, Gestor de Contratos/ Preposto, Gerente de RH, Assistente de RH, Auditor de Configuração, Analista de Configuração, EPG, Responsável por Medição e Análise, Analista Financeiro, Entrevistador.

  • Acesso ao Repositório: TortoiseGIT (última versão disponível) ou GIT (na linha de comando).

  • Elaboração e Consulta de Documentos: Suite Office 2016 ou superior.

  • Acesso às Ferramentas On-Line: Navegador Web (Edge, Firefox ou Chrome)

  • Gestão de Tarefas: SGO

  • Repositório de documentos Alfresco

  • Comunicação online Mattermost, Cliente Desktop ou via web.

Suporte SGO

  • IDE: Intellij community

  • Hardware: Configuração Mínima: RAM:8GB HD:128GB CPU: 2,5Ghz

Grupo de Processos

Perfis: EPG, Analista de Qualidade, Responsável por Medição e Análise

  • Edição de Processos BizAgi, AsciiDoc

  • Alta Maturidade MiniTab Versão 17.0 ou superior

  • Hardware: Configuração Mínima: RAM:8GB HD:450GB CPU: 2,5Ghz

Gerência de Configuração

Perfis: Analista de Configuração, Auditor de Configuração.

  • Repositório de Gerência de Configuração Git .

  • Ferramentas: AsciiDoc, Vmware vSphere, Vscode, Putty ou cliente SSH, Client Open VPN, OCS Inventory.

  • Hardware: Configuração Mínima: RAM:8GB HD:450GB CPU: 2,5Ghz.

Revisão por Pares

Perfis: Analista de Configuração, Auditor de Configuração, Assistente de RH.

  • Hardware: Configuração Mínima: RAM:8GB HD:450GB CPU: 2,5Ghz

Gestor de Contratos/ Preposto

Perfis: Gestor de Contratos/ Preposto

  • Alta Maturidade JASP Stats

  • Hardware: Configuração Mínima: RAM:8GB HD:450GB CPU: 2,5Ghz

Itens de Configuração

Contratos

Tabela 10. ICs Contratos
Obrigatoriedade Artefatos Controle de Versão Controle Formal Produto Entregável ao Cliente Baseline documentação Baseline fontes Quem elabora Publico-Alvo Forma de Envio Padrão de Nomes dos Artefatos Localização

Análise e decisão

Gestor de contratos/ preposto

Equipe do contrato

SGO (E-mail)

Não se aplica (documento elaborado no SGO)

SGO

Ata de reunião Kick-off

Gestor do contrato

Cliente, Gerente de contrato e Diretor

SGO (E-mail)

SIGLACONTRATO_ATA_KICK-OFF

SGO ou pasta de contrato no Alfresco

ATAS DE REUNIÕES - GERAIS

Gestor do contrato/ Preposto

Cliente

SGO (E-mail)

SIGLACONTRATO _ATA_ASSUNTO_DATA (Ver Obs. 1 E 3)

SGO ou pasta de contrato no Alfresco

Riscos e Oportunidades

Gestor do contrato/ Preposto

Gestor do contrato/ Preposto, Equipe de contrato e Diretor

SGO (E-mail)

Não se aplica (documento elaborado no SGO)

SGO

BASELINES

Analista de configuração

Gestor do contrato/ Preposto, equipe de contrato

Disponibilização em repositório

SIGLACONTRATO_BL_XXX (Ver aba nomenclatura E Obs. 2)

Versão no Alfresco

Checklist de auditoria de configuração - documentação

Auditor de configuração

Gestor do contrato/ preposto, equipe de contrato

SGO (E-mail)

Não se aplica (documento elaborado no SGO)

SGO

Checklist de garantia da qualidade

Analista de qualidade

Gestor do contrato/ Preposto

SGO (E-mail)

Não se aplica (documento elaborado no SGO)

SGO

Checklist de revisão técnica

Revisor técnico

Gestor do contrato/ Preposto

SGO (E-mail)

Não se aplica (documento elaborado no SGO)

SGO

Não conformidades

Analista de qualidade e auditor de configuração

Gestor do contrato/ Preposto, Analista de qualidade, EPG

SGO (E-mail)

N/A

SGO

Plano de medição

Gestor do contrato/ Preposto

Equipe do contrato

SGO (E-mail)

Não se aplica (documento elaborado no SGO)

SGO - Ocorrência do contrato

Ocorrência de perfil

Gerente de RH

Assistente de RH, GEstor de contrato, Diretor e Entrevistador

SGO (E-mail)

Não se aplica (documento elaborado no SGO)

SGO

Ocorrência do contrato

Gestor do contrato/ Preposto

EQUIPE DO CONTRATO

SGO (E-MAIL)

Não se aplica (documento elaborado no SGO)

SGO

Relatório de monitoramento

Gestor do contrato/ Preposto

Diretor

SGO (E-mail)

Não se aplica (documento elaborado no SGO)

Comentários na ocorrência do contrato no SGO

Relatório de Status

Gestor do contrato/ Preposto

DIRETOR

SGO (E-MAIL)

Não se aplica (documento elaborado no SGO)

Comentários na ocorrência do contrato no SGO

Qualquer outro documento relevante do contrato (faturamento, relatório de despesas, infraestrutura e etc) que não esteja definido acima e que o Gestor do contrato/ Preposto queira armazenar no repositório

Equipe do contrato

Equipe do contrato

SGO (E-mail) OU Alfresco

Nome livre

SGO – Anexo na ocorrência do contrato ou documento da pasta do contrato no Alfresco

  • Obs 1: O assunto é livre e deve indicar o objetivo da reunião. Por exemplo: reunião com cliente, alta direção, equipe, lições aprendidas, encerramento.

  • Obs 2: Para baselines, a branch utilizada no repositório deve ser a Master.

  • Obs 3: Necessário apenas quando o cliente exigir a elaboração do artefato.

Projeto de Melhoria

Os itens de Melhoria são armazenados em um repositório próprio: Projeto de Melhoria

A pasta de Estatísticas é dividida por Baselines, sendo que cada nova Baseline terá uma pasta específica associada.

Tabela 11. ICs Melhoria
Artefatos Controle Formal Controle de Versão Publico-Alvo Forma de Envio Padrão de Nomes dos Artefatos Localização

Ata de Reunião

EPG

Repositório

[BASIS] Ata_Reuniao_aaaa-mm-dd

01.Comunicação

Relatório de Auditoria Informal

EPG

Repositório

[BASIS] Relatorio_Auditoria_Informal_Detalhes_Mes_Ano

01.Comunicação

Relatório de Análise de Gap

EPG

Repositório

[BASIS] Relatorio_Gap_Analysis_CMMI_ML3_Consolidado_Mes_Ano

01.Comunicação

Ata de Reunião de Kick-off

EPG

Repositório

BASIS_MELHORIA_Kick-Off

01.Comunicação

Publicação da Biblioteca de Ativos

Todos da Organização

E-mail, Repositório, SGO

Publicação Biblioteca de Ativos_ddmmaaaa

01.Comunicação ou SGO

Plano de Avaliação SCAMPI

EPG, Avaliador CMMI

E-mail e Repositório

Appraisal_Plan_Basis v.x.x

02.Planejamento

Ata de Reunião de Análise de Gap

EPG

Repositório

BASIS_MELHORIA_ATA_GAP ANALISE_aammdd

02.Planejamento

Cronograma de Melhoria

Todos da Organização

E-mail, Repositório, SGO

BASIS_MELHORIA_Cronograma

02.Planejamento ou SGO

Plano de Projeto de Melhoria

Todos da Organização

E-mail e Repositório

BASIS_MELHORIA_PP

02.Planejamento

Comprometimento com Projeto de Melhoria

EPG

Repositório

Comprometimento com Projeto de Melhoria

04.Implementação

MPSBr - F Declaração Avaliação

EPG

Repositório

MPSBr - F Declaração Avaliação BASIS ddmmaa

04.Implementação

MPSBr - Press Release Avaliação

EPG

Repositório

MPSBr - Press Release Avaliação ddmmaa

04.Implementação

MPSBr - Resultado da Avaliacao

EPG

Repositório

MPSBr - Resultado da Avaliacao

04.Implementação

Planejamento Auditoria da Qualidade

EPG

Repositório

Planejamento Auditoria da Qualidade - Mês

04.Implementação

Basis Tecnologia da Informação - SCAMPI B

EPG, Avaliadores CMMI

Repositório e Dropbox

Basis Tecnologia da InformaçãoSCAMPI_B

04.Implementação

Relacao entre as SPs das PAs e as praticas do processo

Analista de Métrica e Diretor

Repositório

(BASIS) Relacao entre as SPs das PAs e as praticas do processo_CMMInivel

04.Implementação

Relatório Estatístico

EPG

Repositório

Relatorio_Estatistico_SXXXXXX_[Qualidade/Produtividade]

06. Estatisticas/Baseline XX

Análise de Causas Organizacional

EPG

SGO

Relatório de Análise das Causas

Tarefa de Análise de Causas

Resultado Análise Organizacional

EPG

Repositório

BaselineDesempenho_BASIS

06. Estatisticas/Baseline XX

Relatório Monte Carlo Organizacional

EPG

Repositório

Relatorio_Monte_Carlo

06. Estatisticas/Baseline XX

Resumo Baseline Organizacional

EPG

Repositório

Resumo_Baseline_XX

06. Estatisticas/Baseline XX

Laudo de Qualidade de Alta Maturidade

EPG

Repositório

Laudo_QA_Alta_Maturidade

06. Estatisticas/Baseline XX

Análise de Causas do Contrato

EPG

SGO

Relatório de Análise das Causas

Tarefa de Análise de Causas

Relatório Monte Carlo do Contrato

EPG

Repositório

CONTRATO_Relatorio_Monte_Carlo

06. Estatisticas/Baseline XX/Contratos/CONTRATO

Relatório Estatístico do Contrato

EPG

Repositório

CONTRATO_Relatorio_Estatistico_SXXXXXX_[Qualidade/Produtividade]

06. Estatisticas/Baseline XX/Contratos/CONTRATO

Contratos de Análise de Produtividade e Qualidade do Contrato

EPG

Repositório

CONTRATO_SX_[DISCIPLINA]_[QUALIDADE/PRODUTIVIDADE]

06. Estatisticas/Baseline XX/Contratos/CONTRATO/Dados da Analise

Análise Simulação Monte Carlo

EPG

Repositório

Analise_Simulacao_Monte_Carlo

06. Estatisticas/Baseline XX

Lista de Profissionais

EPG

Repositório

CMMI - Profissional - Função - Meta (Sistema de Gestão de Ocorrências)

06. Estatisticas/Baseline XX/Relatorios SGO

Dados de desempenho das Tarefas, separadas por subgrupo

EPG

Repositório

CMMI - SX_XXX - Desempenho Tarefas Alta Maturidade (Sistema de Gestão de Ocorrências)

06. Estatisticas/Baseline XX/Relatorios SGO

Biblioteca de Ativos

A partir da Baseline BASIS_BL_ORG_06, a Biblioteca é inteiramente elaborada em AsciiDoc e publicada no site http://foundation.basis.com.br.

Todos os itens da Biblioteca de Ativos têm controle formal e são obrigatórios.

Tabela 12. ICs Biblioteca de Ativos
Nome Gerência Endereço

Política da Basis

Diretoria

Política da Basis

Descrição dos Ciclos de Vida da Organização

Gerencia de Qualidade

Descrição dos Ciclos de Vida da Organização

Estratégia de Gerência de Portfólio de Projetos

Diretoria

Estratégia de Gerência de Portfólio de Contratos

Planilha de Portfólio

Diretoria

(armazenada em Google Drive)

Objetivos e Ações Estratégicas

Diretoria

Objetivos e Ações Estratégicas

Plano Estratégico de Treinamento

Gerência de RH

Plano estratégico e tático de treinamento

Estratégia de Gerenciamento de RH

Gerência de RH

Estratégia de Gerenciamento de RH

Quadro de Competências

Gerência de RH

Quadro de competências

Modelo de Avaliação de Eficácia de Treinamento

Gerência de RH

Estratégia de Gerenciamento de RH

Modelo de Avaliação de Desempenho

Gerência de RH

Gestão de Recursos Humanos

Modelo de Lista de Presença

Gerência de RH

Gestão de Recursos Humanos

Base de Medição e Análise Organizacional

Gerência de Qualidade

Base de Medição e Análise Organizacional

Modelo de Relatório Estatístico

Gerência de Qualidade

Medição

Guia de Gerenciamento de Riscos

EPG

Guia de Gerenciamento de Riscos e Oportunidades

Orientação das Equipes de Trabalho

EPG

Orientação das Equipes de Trabalho

Base de Riscos

EPG

Base de Riscos

Modelo Relatório Monitoramento

EPG

Gerência de Contratos e Serviços

Modelo Ata Kick-off / Planning

EPG

Gerência de Contratos e Serviços

Modelo de Controle Financeiro

EPG

Gerência de Contratos e Serviços

Modelo de Relatório de Status

EPG

Gerência de Contratos e Serviços

Checagem Automática de Seguimento dos Processos

Gerência de Qualidade

Checagem Automática de Seguimento dos Processos

Checklist de Auditoria de Biblioteca de Ativos

Gerência de Qualidade

Checklist de Auditoria de Biblioteca de Ativos

Checklist de Auditoria de Ativos Organizacionais

Gerência de Qualidade

Checklist de Auditoria de Ativos Organizacionais

Modelo Checklist de Alta Maturidade

Gerência de Qualidade

Qualidade

Estratégia de backup

Gerência de Configuração

Estratégia de Backup

Estratégia de Verificação, Validação e Integração

Gerência de Configuração

Estratégia de Verificação, Verificação por pares e Validação

Guia de Gerência de Configuração

Gerência de Configuração

Guia de Gerência de Configuração

Manual Clone e Commit no Git

Gerência de Configuração

Manual Clone e Commit no Git

Manual Criação de Repositório

Gerência de Configuração

Manual Criação de Novo Repositório

Checklist de Auditoria de Ativos Organizacionais

Gerência de Configuração

Checklist de Auditoria de Ativos Organizacionais

Portal de Processos FOUNDATION

EPG

Portal de Processos

Ativos de Treinamento

Tabela 13. ICs Ativos Treinamento
Obrigatoriedade Nome Local de Armazenamento Visibilidade

Lista de presença

SGO - Tarefa RH Treinamento

RH, Gerentes

Avaliação de Efetividade

SGO - Tarefa RH Treinamento

RH, Gerentes

Certificado de Participação

SGO - Tarefa RH Treinamento e do funcionário

RH, Gerentes e Funcionário

Quadro de Competências

Foundation

Todos

Histórico de Revisão

Tabela 14. Histórico de Revisões
Data Versão Autor Revisor Observação

02/01/2025

4.0

Cédric Lamalle

Leonardo Lopes

Versão inicial

17/02/2025

4.1

Cédric Lamalle

Leonardo Lopes

Revisão dos Itens de Configuração dos Contratos

Manual Clone e Commit no Git

Versão do documento: 4.0, 02/01/2025

Introdução

Este documento tem como objetivo orientar todos os colaboradores sobre o uso correto dos repositórios Git, bem como das ferramentas associadas.

Como efetuar o Clone

Um clone, no Git, é a replicação inicial de um repositório remoto para uma pasta no computador pessoal, semelhante a um SVN Checkout. Inicialmente, acessar o Gitlab, repositório interno da Basis: https://gitlab.basis.com.br/. O login será realizado através do SSO Basis, usando as mesmas credenciais do SGO.

sso login
Figura 1. Tela de login do SSO

Conforme a figura acima, o usuário e a senha da rede devem ser digitados.

Ao entrar, a tela inicial é apresentada. Nela, é possível verificar projetos aos quais se tem acesso, bem como os grupos que abrangem tais projetos.

gitlab
Figura 2. Tela inicial do Gitlab

É possível pesquisar o repositório do qual se deseja fazer um clone na caixa de pesquisa no canto superior direito da tela. Ou, se preferir, usar os menus de Projetos ou Grupos, no canto superior esquerdo.

gitlab busca
Figura 3. Busca no Gitlab

Se o repositório não aparecer logo na busca inicial, ao pressionar Enter ou selecionar a caixa "em todo o Gitlab", o sistema apresentará uma tela mais completa com todos os resultados encontrados, bem como a possibilidade de pesquisar em grupos e projetos específicos.

gitlab busca avancada
Figura 4. Busca avançada no Gitlab

Ao selecionar um repositório, serão apresentados os arquivos e pastas de sua raiz, de forma que se pode explorar e visualizar detalhes dos mesmos:

gitlab repositorio
Figura 5. Listagem do Repositório

Para obter o endereço de clone, basta clicar no botão destacado Clonar, no canto direito, atentando para a seleção do tipo de clone, que pode ser HTTPS ou SSH. Para esta seção, será usado o clone via HTTPS. Clicando no ícone de prancheta ao lado do link, a URL será copiada.

gitlab clone
Figura 6. Endereço para clonar

Instalação e configuração do TortoiseGit

Baixando e instalando o TortoiseGit

O software TortoiseGit é uma de várias possíveis interfaces gráficas para Git no Windows. Ele pode ser baixado em sua versão mais recente no site: https://tortoisegit.org/download/. Para que o TortoiseGit funcione corretamente, faz-se necessária a instalação do Git for Windows, no site: http://git-scm.com/download/win. Apenas após a instalação do mesmo, o TortoiseGit deve ser instalado. Atenção à versão baixada (32-bit ou 64-bit), que deve obedecer às especificações da sua máquina para as duas instalações.

Usando TortoiseGit para o clone

Usando o Windows Explorer, na pasta onde se deseja manter o repositório local, clica-se com o botão direito. No menu de contexto, a opção "Git Clone" deve ser selecionada.

tortoisegit explorer menu
Figura 7. Menu contextual do Tortoise Git

Na janela que segue, no campo URL, deve ser colado o link de clone copiado da página de repositório do Gitlab. Se o link já estiver previamente copiado, deve aparecer automaticamente no campo.

tortoisegit clone
Figura 8. Clonando no Tortoise Git

Da primeira vez que se faz qualquer operação num repositório, o TortoiseGit exige informações de usuário. Basta colocar o nome de usuário e e-mail Basis, e clicar em OK.

tortoisegit config
Figura 9. Configurando o Git no Tortoise

O nome de usuário e a senha da rede devem ser digitados para validar o clone.

tortoisegit password
Figura 10. Inserindo senha no Tortoise Git

Os mesmos ficarão salvos no Gerenciador de Credenciais do Windows, caso precisem ser alterados.

windows gerenciador credenciais
Figura 11. Gerenciador de Credenciais Windows

Após a confirmação da senha, uma tela será exibida informando o progresso do clone.

tortoisegit cloning
Figura 12. Progesso do clone no Tortoise Git

Ao concluir, o repositório já estará localmente replicado na máquina do usuário.

Usando SSH

O Git oferece a opção de clone dos repositórios via HTTPS, como já foi apresentado, ou via SSH. O SSH costuma ser mais prático e menos limitado que o HTTPS, mas necessita de várias configurações locais e remotas para funcionar devidamente.

Inicialmente, deve ser gerada uma chave SSH localmente na sua máquina. Para tanto, vamos usar a interface padrão de console do Git for Windows, que também serve como alternativa ao próprio TortoiseGit, se for mais interessante usar comandos de linha diretamente em vez de uma interface gráfica.

Na máquina local, buscar, no menu Iniciar ou na barra de buscas do Windows, o programa Git Bash. A janela inicial será um console em preto:

gitbash
Figura 13. Git Bash

Digitar o seguinte, e pressionar Enter:

ssh-keygen -t rsa

O console vai pedir, na ordem:

  • Um caminho para os arquivos de chave. Apenas pressione Enter, e mantenha o padrão.

  • Uma senha para a chave. É opcional, mas dará mais segurança à mesma (obs.: com o preenchimento desse campo, será necessário inserir a mesma senha toda vez que for fazer alguma operação no repositório).

  • Escrever a senha outra vez. Deixar vazio se ficou vazio anteriormente. Ao final, a chave será gerada dentro do diretório selecionado na primeira entrada. Por padrão: C:\Users\[SeuUsuario]\.ssh

gitbash keygen
Figura 14. Gerando Chave SSH no Git Bash

Acessando o caminho da chave no Windows, devem haver dois arquivos: id_rsa e id_rsa.pub. O segundo deve ser aberto em qualquer editor de texto, para que se possa copiar a chave.

notepad id rsa.pub
Figura 15. Chave Pública RSA

Com a chave em mãos, entrar no Gitlab, e adentrar a seção "Configurações", no menu do canto superior direito.

gitlab config
Figura 16. Entrando nas configurações no Gitlab

Ali dentro, selecionar no menu esquerdo "Chaves SSH". Na seção que se abrir, colar a chave do id_rsa.pub, dar um título para identificar a chave, então clicar no botão "Adicionar Chave" abaixo.

gitlab add key
Figura 17. Adicionando Chave no Gitlab

Feita a adição com sucesso, a última coisa que precisa ser feita é uma alteração local do programa utilizado para SSH no TortoiseGit. No menu iniciar ou de busca, procurar por Settings, um programa que tenha o ícone do TortoiseGit. Entrando no mesmo, selecionar o item Network no menu esquerdo. Ali dentro em SSH, basta colocar o caminho do executável SSH do Git for Windows (por padrão, C:\Program Files\Git\usr\bin\ssh.exe, variando o início do caminho de acordo com a sua pasta de instalação) e clicar em OK.

tortoisegit ssh config
Figura 18. Configurando ssh no Tortoise Git

Feito isso, operações de repositório já podem ser realizadas usando SSH. Basta fazer o clone do repositório utilizando o link SSH que o mesmo fornece na página do repositório.

gitlab clone ssh
Figura 19. Endereço para clonar com SSH

Commit e Push

Sempre, antes que seja feita qualquer alteração de arquivos num repositório via Commit/Push, deve ser executado um Pull, que atualiza o repositório local com as últimas mudanças do repositório online.

tortoise git pull 1
Figura 20. Fazendo pull no Tortoise Git
tortoise git pull 2
Figura 21. Confirmando o pull no Tortoise Git

Vale lembrar o Git solicitará o nome e a senha de rede do usuário que sempre que houver uma requisição HTTPS ao repositório da Basis, seja clone, Pull ou Push. Se o clone for feito usando SSH, não será necessário.

Podemos dizer que um Pull é semelhante a um Update no SVN. É importante reparar, porém, que ao contrário do SVN Update, um Git Pull mescla a versão mais recente do repositório remoto (online) com a versão local do mesmo. Ou seja, mudanças feitas no repositório local não serão automaticamente sobrescritas pelo Pull, nem mesmo arquivos excluídos. Para recuperar originais, faz-se necessário realizar um Revert antes do commit.

Após a conclusão das alterações desejadas aos arquivos do repositório, incialmente deve ser feito o commit, que vai validar as mudanças, ainda apenas no repositório local. Deve-se clicar com o botão direito na pasta do repositório em que foram realizadas as modificações (não necessariamente a pasta raiz, porém preferencialmente, para evitar erros em potencial relativos a mudanças em outras pastas) e selecionar a opção Git Commit.

tortoisegit commit menu
Figura 22. Menu de commit do Tortoise Git

Para que o commit seja feito, é necessário relatar, na caixa de mensagem, quais alterações foram feitas e informar com qual ocorrência do SGO elas se relacionam. Ex:

Atualizar x, y e z - BASIS-1234
OBSERVAÇÕES IMPORTANTES SOBRE O COMMIT
  • Não usar ocorrências não relacionadas ao repositório em si, ou específicas de usuário, pois podem comprometer o commit e a leitura de dados por outros.

  • Atenção às regras de commit acima estabelecidas! Se o commit tiver uma mensagem sem referência a ocorrências do SGO ou o e-mail de usuário estiver incorreto, haverá erro no envio ao repositório remoto. Favor atentar aos detalhes do próprio commit.

  • Atenção aos arquivos listados! O que será enviado ao repositório pode não ser simplesmente o arquivo selecionado por clique, pois o commit do Git é feito sempre em cima do repositório inteiro. Se houver movido arquivos, ou separado pastas, por exemplo, é possível que o Git interprete que foram todos excluídos, e se estiverem marcados como tal na janela do commit, serão realmente apagados do repositório! Certifique-se sempre, na janela, de marcar apenas os arquivos que deseja alterar.

tortoisegit commit message
Figura 23. Inserindo mensagem de commit no Tortoise Git

Após a conclusão do commit, as mudanças estarão efetivadas, mas apenas no repositório local. Para enviá-las ao repositório remoto online, a opção Push deve ser selecionada logo em seguida.

tortoisegit push
Figura 24. Fazendo o push no Tortoise Git
tortoisegit push confirm
Figura 25. Confirmando o push no Tortoise Git

Após o usuário digitar seu nome e senha, se necessário, o Push será executado. Uma vez finalizado sem erro, as mudanças podem ser conferidas no site do Repositório Gitlab Basis.

Gerando Tags

Ao finalizar uma versão de código-fonte, ou finalizar um requisito específico, faz-se necessária a criação de tags nos repositórios para representar a baseline relativa àquela versão. É bastante simples fazer isso utilizando TortoiseGit.

Levando em conta que o commit que será marcado como tag já foi realizado, clicar com o botão direito na pasta do repositório em questão e selecionar TortoiseGit > Show log.

tortoisegit tag menu
Figura 26. Abrindo o log de commits no Tortoise Git

A janela que segue lista todos os commits realizados naquele repositório. A tag deve ser criada no commit específico que finalizou o requisito ou versão em questão. Clicar nele com o botão direito e selecionar "Create Tag at this version".

tortoisegit select commit
Figura 27. Selecionando o commit para geração de Tags

Na janela que se abre, entrar com o nome da versão/baseline em questão, seguindo os padrões estabelecidos no Guia de Gerência de Configuração, que estabelecem nomes diferentes para código-fonte e documentação, e atentando às versões já existentes no repositório, que podem ser verificadas na combo Tag do item Base On, ou no próprio repositório online no Gitlab. Atentar à marcação original, que deve ser o commit em questão.

tortoisegit create tag
Figura 28. Criando tag no Tortoise Git

Uma vez que a tag esteja criada, aparecendo em amarelo na janela do Git Log, deve ser feito um novo push, dessa vez especificando que as tags devem ser incluídas.

tortoisegit push tags
Figura 29. Fazendo o push das tags no Tortoise Git

Trabalhando com Forks

Certos usuários do Gitlab têm o acesso direto aos repositórios dos sistemas limitado a apenas leitura. Para que possam fazer suas próprias alterações no código, é necessário que façam um fork, que vai gerar uma cópia do repositório em questão, para que eventualmente seja mesclado por um representante da equipe (revisor técnico), seguindo o ciclo da imagem:

image
Figura 30. Ciclo Fork

Criando Fork

Dentro da página no Gitlab do repositório que se deseja copiar, clicar em Fork, no canto superior direito.

gitlab fork criar
Figura 31. Fork Gitlab

Selecionar como namespace o próprio nome de usuário, apresentado por padrão na página.

gitlab fork criacao
Figura 32. Criação do Fork

O repositório será criado e toda a estrutura de commits passará por uma importação. Uma vez finalizada, o repositório apresentará a mesma exata estrutura que o original. Desse ponto em diante, as ações de clone e push seguirão os mesmos princípios já apresentados.

Merge do Fork

Para que o código atualizado no fork seja replicado no repositório original, é necessário que seja aberto um merge request a partir do fork, apontando para a branch do repositório original. Esse merge request precisa ser aberto por um usuário que tenha acesso de escrita no repositório original, e é necessário que haja mais de um commit para o merge, pois será realizado um git squash. Caso seja aberto pelo próprio dono do Fork, que possui acesso somente leitura ao original, ou caso possua apenas um único commit, será fechado imediatamente pelo próprio sistema.

Na tela do repositório fork, no menu esquerdo, clicar em "Merge Requests".

gitlab merge request
Figura 33. Merge Requests

Dentro da tela, haverá um botão "Novo Merge Request". Selecionando o mesmo, será aberta uma nova tela para seleção de quais branches e repositórios servirão como origem e destino. Para origem ("Source Branch"), selecionar o seu fork e a branch onde se trabalhou. Para destino, selecionar o repositório original, e a branch do mesmo onde o merge deverá ser feito. Clicar em "Compare branches and continue".

gitlab merge novo
Figura 34. Novo Merge Request

Na tela que se segue, escrever um título para o seu merge request, preferencialmente incluindo a ocorrência relativa aos commits em questão para que esteja na mensagem de squash. Adicionar também uma descrição, que será unida ao template de MR da Basis, quando aplicável. No campo Assignee, apontar um usuário responsável pela aprovação do MR, caso necessário. A opção "Delete source branch when merge request is accepted" apagará a branch original do fork assim que houver o merge de fato. E a opção "Squash commits when merge request is accepted" será marcada automaticamente, mesmo que seja desmarcada nesta tela.

gitlab merge criando
Figura 35. Tela de criação do Merge Request

Uma vez criado, o merge request será listado no menu de Merge Requests do repositório original.

gitlab merge criado
Figura 36. Merge Request criado

Também será criado um link para acessar o merge request na ocorrência do SGO mencionada pelo mesmo.

gitlab merge sgo
Figura 37. Merge Request no SGO

Quando aprovado e selecionada a opção Merge, será realizado um commit de squash combinando os commits do repositório de fork, mais um commit de merge mesclando os dois repositórios. O código então será disponibilizado na branch do repositório original. Se houver algum problema no merge ou na criação do próprio merge request, o próprio sistema informará em mensagem.

Atualizando o Fork

Quando o fork se encontra atrasado em relação ao repositório original, é possível atualizá-lo em seu repositório fork clonado localmente. Para isso, é necessário inicialmente adicionar o repositório original como um novo remote caso não exista, executando no seu repositório local o seguinte comando:

git remote add upstream endereco_repositorio_original.git

Atualiza-se então esse remote "upstream" usando um fetch:

git fetch upstream

Para sincronizar de fato seus arquivos locais com os do repositório original, realiza-se um merge do seu repositório local, usando como base a branch requisitada do original (por padrão, "master"; alterar de acordo):

git merge upstream/master

Por fim, para atualizar o repositório no Gitlab, realiza-se o push padrão:

git push origin sua_branch

Lidando com Problemas

Push retorna erro

Verifique, antes de tudo, se seu repositório local está atualizado. Diferente do SVN, não basta que apenas a pasta específica em que se está editando esteja devidamente atualizada; o repositório inteiro deve estar em dia. Realize sempre um Pull antes de fazer quaisquer modificações.

Se o repositório não estava atualizado, mas o commit foi feito ainda assim, realize um Pull de todo modo. Pode ser que não haja conflitos de arquivos modificados. Se for o caso, o Pull não retornará erros, não haverá ícones de conflito nas pastas, e o seu Push pode ser realizado diretamente em seguida (sem o commit, nesse caso, pois este já havia sido feito).

Entretanto, se houver conflitos, cabe verificar com a sua equipe se os arquivos em questão foram modificados. O próprio Log do Git deve retornar informações sobre quais foram as últimas modificações sobre o determinado arquivo, o que pode ser verificado clicando sobre o mesmo com o botão direito e selecionando, sob o menu do TortoiseGit, Show Log.

tortoisegit showlog menu
Figura 38. Menu Show Log do Tortoise Git

A janela seguinte terá informações de quais foram os últimos commits, e quem os realizou, para devida informação e discussão.

tortoisegit log messages
Figura 39. Log Messages no Tortoise Git

Uma vez que se tenha certeza que o arquivo existente no seu repositório local é o mais atualizado, deve-se selecionar, no menu do TortoiseGit na pasta, a opção "Resolve".

tortoisegit resolve menu
Figura 40. Resolvendo conflitos no Tortoise Git

Marca-se então os arquivos atualizados, confirma, e então o Commit/Push pode ser realizado novamente com maior segurança.

Se ainda houver erro, experimente executar um Clean up, opção logo acima também representada. Execute também um novo Pull em seguida, para poder realizar o commit depois com segurança, e certifique-se de que todos os arquivos estão presentes no repositório local.

É importante também lembrar que é obrigatório incluir um número de ocorrência em todo e qualquer commit. Se este estiver faltando, o servidor retornará erro no Push
tortoisegit push error
Figura 41. Erro no push

Para corrigir essa situação, é necessário emendar à mensagem do commit uma ocorrência válida do SGO. Se apenas um commit errôneo foi realizado, basta selecionar Git Commit novamente no repositório em questão e selecionar a opção Ammend Last Commit na caixa logo abaixo da entrada de mensagem:

tortoisegit ammend commit
Figura 42. Ammend Commit no Tortoise Git

Em seguida, clicar em Ok e seguir com o mesmo modelo de Commit/Push apresentado mais acima.

Se houver mais de um commit na fila, no entanto, e até mesmo em outros casos de erro recorrente, será necessário fazer um Rebase, ou refazer os commits do zero antes de realizar o Push.

Quando um commit é feito no Git, ele se mantém na fila para subir ao repositório remoto num Push. Outros commits em cima do mesmo apenas se acumulam na fila. Ou seja, se o primeiro commit está errado, ele permanecerá sem enviar para o sistema até que seja removido ou editado na fila. Nesse caso, como existem vários commits errados na fila, a procedência possível seria editar ou eliminar a mesma.

Para o primeiro caso, o chamado Rebase, clicar com o botão direito na pasta do repositório com os commits problemáticos, e dentro do menu do TortoiseGit, selecionar a opção Rebase.

tortoisegit rebase menu
Figura 43. Menu Rebase no TortoiseGit

Na janela que segue, marcar inicialmente a opção Force Rebase, para que o sistema leve em conta todos os commits diferentes entre o repositório local e o remoto. Em seguida, clicar com o botão direito no commit que está com problemas (pode ser mais de um), e selecionar a opção Edit. Feito isso, iniciar o Rebase através do botão Start Rebase no rodapé da janela.

tortoisegit rebase window
Figura 44. Janela de rebase do TortoiseGit

Uma vez iniciado, se configurado corretamente, ele vai parar para edição da mensagem do(s) commit(s) em questão. Adicionar a ocorrência faltante, e clicar em Ammend, e em seguida em Done.

tortoisegit confirm rebase
Figura 45. Confirmando o rebase no TortoiseGit

Terminado o processo de Rebase, o Push já pode ser feito sem a necessidade de fazer um novo commit.

Para o caso de refazer a fila de commits do zero, primeiramente, é interessante fazer um backup dos arquivos alterados em tais commits, pois serão apagados ou substituídos pelas versões atualmente presentes no repositório remoto. Com o backup feito, selecionar na pasta raiz do repositório: TortoiseGit > Switch/Checkout. Na janela aberta, deixar exatamente como está na imagem abaixo, com todas as marcações (ênfase na branch remote/origin/master do primeiro menu, não é a master originalmente selecionada).

tortoisegit switch checkout
Figura 46. Switch/Checkout no TortoiseGit

Após clicar em OK, o repositório retornará ao seu estado anterior aos commits errôneos, exatamente igual ao repositório online. Com isso, os arquivos no backup podem ser copiados de volta para a pasta do repositório, e o commit pode ser refeito.

Se houver mais erros, entre em contato com a gerência de configuração.

Pull ou Clone retorna erro

É possível que o repositório em questão tenha nomes de arquivos ou caminhos muito grandes e, quando se realiza um Clone do mesmo num sistema Windows, ele não consiga abranger todo o caminho, retornando erros de Filename too long. Se for esse o caso, experimente realizar o Clone em outra pasta do seu sistema, preferencialmente alguma num caminho bem curto, como C:\git.

Outro erro possível teria a seguinte mensagem: error:14094410:SSL routines:ssl3_read_bytes:sslv3 alert handshake failure. Nesse caso, é necessário atualizar os protocolos de conexão SSL na configuração do Git para uma versão mais segura. Execute o seguinte comando no Git Bash (para seu uso, consultar a seção de SSH):

git config --global http.sslVersion tlsv1.2

Após essa alteração, o Clone/Pull deve funcionar corretamente. Caso contrário, ou se o comando retornar algum erro, é recomendável reinstalar o Git numa versão mais recente.

Se tais soluções não funcionarem, ou se o erro for diferente, entre em contato com a gerência de configuração.

Histórico de Revisão

Tabela 15. Histórico de Revisões
Data Versão Autor Revisor Observação

02/01/2025

4.0

Layanne Leite

Cédric Lamalle

Adequações para processo de serviço.

Manual Criação de Novo Repositório

Versão do documento: 4.0, 02/01/2025

Introdução

Objetivo

Este documento objetiva apresentar todos os passos necessários para que os interessados em realizar a criação de um novo repositório sejam capazes de, seguindo as instruções, chegarem ao resultado esperado, de uma forma correta e padronizada.

Escopo

Considera-se no escopo deste documento abordar todas as etapas e procedimentos, que são necessários para a criação efetiva de um repositório remoto, englobando desde a conexão com a máquina até o commit inicial com a estrutura de pastas padrão de novos projetos da empresa.

Não Escopo

Está fora do limite definido como escopo deste tutorial as informações inerentes à configuração e conexão da VPN da Basis, bem como de acesso remoto aos servidores internos.

Definições, Acrônimos e Abreviações

  • Repositório Git: espaço, local ou remoto, para armazenamento de arquivos e controle dos mesmos, quanto à versão;

  • Commit: submeter o repositório às novas ações realizadas em suas pastas;

  • VPN: rede privada de comunicação, que busca assegurar a confidencialidade e integridade na troca de informações pela rede.

Criação do Repositório Git via SGO

Por padrão, a criação de repositórios deve ser feita de maneira automatizada a partir das ocorrências dos respectivos sistemas no SGO.

Acessar Ocorrência do Sistema

A princípio, nenhum repositório de sistema deve ser criado sem uma ocorrência do tipo Tarefa com essa requisição, encaminhada para o departamento de Configuração. Para iniciar a criação, basta entrar nessa ocorrência, e na aba Dados do Sistema, clicar na ocorrência repassada em "Ocorrências do Sistema".

image

Aplicar transição "Criar Repositórios"

Dentro da ocorrência do sistema, nas transições de fluxo de trabalho, selecionar a transição "Criar Repositórios".

image

Uma janela pop-up deve aparecer na ocorrência, com os dados do sistema e campos para especificar quais repositórios serão criados. Caso nada seja escrito, por padrão, e seguindo o Guia de Gerência de Configuração, são criados os repositórios "codigo_fonte", "documentacao" e "gravacoes". O nome do sistema é preposto ao nome de cada repositório, ou seja, caso se escreva "backend", o nome do repositório será "sistema_backend".

Os repositórios por padrão são criados usando a estrutura padrão estabelecida para cada tipo de repositório, tendo um commit inicial apropriado. Entretanto, caso o repositório precise ser migrado de algum cliente e o projeto precise ser criado vazio, basta marcar o campo "Repositórios Migrados do Cliente". Todos serão criados sem qualquer commit, ficando a responsabilidade de popular o repositório para quem for importar o projeto do cliente.

image

A transição desencadeará as seguintes ações via webhook:

  • Criação do grupo no Gitlab relativo ao próprio contrato, caso não exista;

  • Criação do grupo relativo ao sistema no AD Basis, caso não exista;

  • Criação dos repositórios dentro do grupo;

  • Associação dos repositórios à ocorrência do SGO e ao grupo do AD, via aplicação de custom attributes no repositório;

  • Commits iniciais para cada tipo de repositório (caso o campo "Repositórios Migrados do Cliente" não esteja marcado);

  • Criação de hooks nas pastas dos repositórios para filtrar os commits realizados no mesmo.

Finalizada a transição, os repositórios serão listados ao fundo aba Cadastro do Sistema, juntamente ao grupo relacionado no AD.

image

Aplicar transição "Associar Usuários a Repos"

Caso também exista, requisitado via tarefa no SGO, um pedido para associar usuários específicos aos repositórios, é necessário realizar outra transição. Dentro da ocorrência do sistema, nas transições de fluxo de trabalho, selecionar a transição "Associar Usuários a Repos".

image

A janela da transição apresentará dois campos para preenchimento, sendo um para usuários que terão acesso de escrita e outro que terá usuários cujo acesso será de somente leitura. Preencher com o nome de usuário de cada um, separado com vírgulas (o próprio sistema auxilia auto-completando nomes), e realizar a transição.

image

Realizado este passo, os usuários serão associados ao grupo relativo ao sistema no AD Basis. Um serviço periódico de sincronização de usuários, executando em paralelo ao Gitlab, será responsável por associar esses usuários também aos repositórios do próprio Gitlab. O acesso, portanto, não é imediato, mas deve ser atualizado em menos de uma hora. A lista de usuários com acesso pode ser visualizada na seção Pessoas, à direita da ocorrência do sistema, no campo "Equipe Git".

image

Adicionalmente, existem grupos no AD cujos membros possuem acesso a todos os repositórios do cliente (“nomecliente_all” para escrita e “nomecliente_all_ro” para leitura). Caso haja requisição no SGO para acesso a todos os repositórios de determinado cliente, o acesso precisa ser dado diretamente nesses grupos, a partir do gerenciamento de usuários do próprio SGO ou do AD.

Criação do Repositório Git via Gitlab

Se, por alguma razão, não houver a possibilidade de criar o repositório diretamente pelo SGO, é possível também criar o mesmo pelo próprio Gitlab.

Conectar ao Repositório Gitlab

Na tela do Sistema de Gestão de Ocorrências (SGO) da Basis, acessar o menu no topo esquerdo da tela, e selecionar "Repositório Git", ou acessar diretamente o link https://gitlab.basis.com.br/. Se o login já estiver realizado via SSO no próprio SGO, o acesso será automático. Do contrário, a tela de login será apresentada. As credenciais de acesso são as mesmas do SGO.

sso login

Criar novo grupo

Na página inicial após o login, clicar em "Grupos" para visualizar os clientes disponíveis e selecionar o desejado que receberá o novo repositório. Caso seja um novo cliente, clicar no botão "Novo Grupo" acima dos existentes.

image

Entrar com a chave do cliente, atribuir um avatar e editar a URL se necessário. Vale constar que a chave por padrão é a mesma usada na alocação do contrato no SGO, e não pode conter espaços ou caracteres especiais. Além disso, o nível de visibilidade deve ser marcado como Privado.

image

Criar novo repositório

Na tela do grupo, no canto direito da tela, clicar em "Novo projeto".

image

Entre com o nome que o repositório receberá, seguindo o padrão:

  • Código: nomedosistema_codigo_fonte

  • Documentação: nomedosistema_documentacao

  • Gravações: nomedosistema_gravacoes

Vale constar que o nome não pode conter espaços ou caracteres especiais.

image

Uma vez criado, o projeto terá as configurações padrão do sistema aplicados a si. Salvo exceções especificadas pelos próprios gestores e clientes, não é necessário alterá-las. Contudo, essas mesmas configurações impedem que equipes possam fazer alterações nos repositórios se não houver uma branch inicial, portanto faz-se necessário criar um primeiro commit.

Commit inicial do repositório de código

Dentro do próprio Gitlab, é possível já criar um único arquivo de commit para base do repositório. No projeto vazio, clicar em Novo Arquivo.

image

Preencher o caminho do arquivo com o seguinte nome:

.gitlab/merge_request_templates/basis_template.md

Preencher o conteúdo do arquivo com o seguinte texto:

De acordo com a [Estratégia de Verificação, Validação e Integração](https://foundation.basis.com.br/gerencia_configuracao.html#estrat%C3%A9gia-de-verifica%C3%A7%C3%A3o-valida%C3%A7%C3%A3o-e-integra%C3%A7%C3%A3o) definida no Foundation, os seguintes itens de check-list devem ser validados para aceitação do Merge Request:

- [ ] `liquibase` Não usar SQL nas migrações
- [ ] `liquibase` Edição de changeset já aplicado
- [ ] `config` Níveis de logs nos arquivos de configuração globais
- [ ] `config` Configuração externalizada (vs fixa no código)
- [ ] `config` Dependências desnecessárias
- [ ] `qualidade` Nomenclatura REST - Uri Design
- [ ] `qualidade` Complexidade dos algoritmos
- [ ] `qualidade` Nomes das variáveis/métodos/classes
- [ ] `qualidade` Reinvenção de roda - classes Utils (usar commons, guava, lodash, ...)
- [ ] `qualidade` Código testável
- [ ] `qualidade` Pesquisa dentro de estrutura de repetição (Banco, WS, etc.)

Por fim, preencher o campo de mensagem de commit, substituindo a chave de ocorrência pela chave relativa à Tarefa de criação do repositório, ou sistema associado:

Criação do repositório com template de Merge Request. BASIS-XXXXX

image

Estando tudo de acordo, como na imagem, clicar em Commit abaixo. O arquivo estará então aplicado ao código, permitindo commits da equipe e merge requests seguindo o padrão Basis.

Criação da estrutura de pastas do repositório de documentação

A partir do Gitlab, clonar o novo repositório de documentação seguindo as instruções de Como efetuar o clone do Manual de _Git.

Dentro da pasta local clonada do repositório vazio, colar e executar o arquivo: mkdirsgit.bat (ou mkdirsgit.sh caso o sistema seja Linux).

image

Se o script rodou corretamente, a pasta agora possui oito novas pastas na sua raiz. Apagar ou mover para fora o arquivo mkdirsgit.bat ou mkdirsgit.sh.

image

Clicar com o botão direito na pasta raiz do repositório e selecionar "Git commit → master…​".

image

Se surgir uma mensagem informando que o nome de usuário e E-mail precisam ser setados, clicar em Yes, preencher o formulário seguinte com seu nome de usuário e E-mail Basis, selecionar "Save as Global" e clicar em Ok.

image

Marcar todos os arquivos da lista (vários .gitignore para manutenção das pastas), comentar e executar o commit.

Mensagem de commit sugerida:

Criação da estrutura de pastas de acordo com o Guia de Gerência de Configuração. [CHAVE-OCORRÊNCIA]

image

Quando finalizar o commit, clicar em Push logo abaixo.

image

Clicar em OK, digitar sua senha e aguardar a finalização.

image

Ao terminar de enviar o push, o repositório estará configurado e já poderá receber os documentos do sistema.

Caso um commit ou push dê errado, faz-se necessário realizar um Pull para manter o repositório local atualizado e estável. Clicar com o botão direito na pasta raiz do repositório e selecionar "Git Sync…​".

image

Na janela resultante, selecionar Pull. Entrar com sua senha e aguardar a finalização.

image

Nessa janela, também é possível realizar commits e pushes, se for conveniente. Lembrando que, após o pull, o push deve ser executado novamente. Um novo commit não é necessário, exceto se tiver conflitos em arquivos do repositório que precisem ser resolvidos.

Concessão de acesso aos repositórios

Nos casos em que o repositório seja criado via SGO, os acessos serão concedidos pelo mesmo, como já orientado acima. Estando associado ao grupo no AD, o mesmo será concedido no Gitlab via serviço de sincronização periódico.

Alternativamente, caso não haja associação com o SGO ou com grupos no AD, os acessos devem ser concedidos manualmente dentro do próprio Gitlab. No projeto ou no grupo, selecionar a seção Membros no menu esquerdo.

image

Na tela que segue, listar os nomes usuários que deverão ter acesso ao repositório, bem como qual tipo de acesso deverão ter, e clicar em Convidar. Para referência:

  • Maintainer: acesso de gerenciamento;

  • Developer: acesso de escrita;

  • Reporter: acesso de leitura;

image

Em todos os repositórios criados, deve ser realizada por padrão a liberação de acesso para os seguintes usuários:

  • Cédric Lamalle;

  • Miguel Negrelli;

  • Leonardo Lopes;

  • Arquitetos;

  • Gerente do Projeto;

  • Gerentes GCO.

Histórico de Revisões

Tabela 16. Histórico de Revisões
Data Versão Autor Revisor Observação

02/01/2025

4.0

Layanne Leite

Cédric Lamalle

Adequações para processo de serviço.

Checklist de Auditoria de Ativos Organizacionais

Versão do documento: 2.0, 02/01/2025

Instruções (retirar essa seção no preenchimento real)

  • Para cada tarefa o revisor deverá copiar o conteúdo abaixo e colar no comentário da tarefa a ele atribuída.

  • Para cada critério avaliado preencher a coluna "Resultado" com: "Sim", "Não" ou "N/A".

  • Para cada resultado "Não se Aplica" justificar na coluna "Ações/Justificativa".

  • As tarefas não devem seguir no fluxo de desenvolvimento até que todos os itens sejam respondidos com "Sim".

Auditoria de Configuração Organizacional

Critério

Resultado

Ações/Justificativa

Todas as baselines geradas até o momento passaram pela auditoria de gerência de configuração?

A estrutura de diretórios do repositório está conforme a estrutura de diretórios estabelecida no Guia de GC?

Os artefatos estão seguindo os padrões de nomenclatura estabelecidos no Guia de Gerência de Configuração?

Os artefatos estão armazenados nas pastas corretas do repositório conforme o estabelecido no Guia de Gerência de Configuração?

As permissões de acesso aos itens de configuração foram implementadas conforme estabelecido no Guia de Gerência de Configuração?

As baselines foram criadas seguindo a nomenclatura e local pré-estabelecidos?

A baseline foi gerada a partir da branch master?

O conteúdo da baseline está completo, conforme o estabelecido no Guia de Gerência de Configuração para a fase auditada?

O backup dos dados está sendo realizado conforme PolÍtica de Backup?

Alterações nos artefatos de controle formal estão sendo realizadas conforme o processo de mudança?

O histório de revisão dos documentos está sendo preenchido corretamente?

Histórico de Revisões

Tabela 17. Histórico de Revisões
Data Versão Autor Revisor Observação

02/01/2025

2.0

Cédric Lamalle

Leonardo Lopes

dequações para processo de serviço.

Ferramentas de Engenharia de Dados

Apresentação das ferramentas

DLT (Data Load Tool)