Estratégia de Backup
Versão do documento: 1.2, 04/11/2020
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.
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, de forma a 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 que foram 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 que foram 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:
-
tokyo:: 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
-
yamoussoukro: Máquina do Rancher de desenvolvimento da Basis, onde fica armazenada toda a configuração da infraestrutura de desenvolvimento rodando em Rancher 2. Os seguintes diretórios são salvos:
/etc /opt /srv/rancher2/volume
-
colombo: Máquina de banco de dados onde são salvas as entradas de ponto eletrônico da Basis. Os seguintes diretórios são salvos:
C:/Backup
-
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 dividos em volumes pelo Storage Daemon.
Histórico de Revisões
| Data | Versão | Autor | Revisor | Observação |
|---|---|---|---|---|
09/07/2015 |
1.0 |
Dyogo Cruz |
Guilherme Peres |
Versão Inicial |
01/05/2018 |
1.1 |
Cédric Lamalle |
Guilherme Peres |
Correções tipográficas para conversão no formato asciidoc, ajustes nos nomes das máquinas, atualização dos servidores entrando no backup e atualização da Configuração de Hardware |
04/11/2020 |
1.2 |
Guilherme Peres |
Cédric Lamalle |
Atualização de máquinas onde se realiza backup |
Estratégia de Verificação, Validação e Integração
Versão do documento: 3.4, 06/07/2021
Introdução
Objetivo
Este documento tem por objetivo documentar toda a estratégia de integração contínua, bem como a verificação por pares e testes de software utilizados pela Basis no desenvolvimento de seus projetos, bem como estabelecer critérios de integração e evidenciar a realização da prática através de relatórios de integração, 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 verificação por partes dos artefatos elaborados pela Análise e Design dos projetos de desenvolvimento, a construção efetiva de um sistema, através de integração contínua, tal como as configurações de ferramentas envolvidas e breves explicações sobre seus funcionamentos e os procedimentos utilizados para testar o produto nos ambientes de desenvolvimento, integração e pretendido para o uso.
Não Escopo
Estão fora do limite definido como escopo deste documento as informações inerentes à configuração e conexão da VPN da Basis, bem como de acesso remoto à máquina do Jenkins e seus slaves, ou suas especificidades desnecessárias ao contexto.
Definições, Acrônimos e Abreviações
-
Agent, ou Slave: máquina responsável pela execução de jobs;
-
Build: Construção sistematizada de uma aplicação a partir de código-fonte;
-
Commit: submeter ao repositório as novas modificações realizadas em suas pastas locais;
-
CRUD: Create, Read, Update, Delete – funções básicas de manutenção de entidades;
-
Deploy: instalação do software executável no servidor de aplicação;
-
Java, PHP, C#: linguagens de programação;
-
Job: tarefa de compilação de código e execução de testes de projetos;
-
Plugin: extensão de software para adicionar novas funcionalidades;
-
Repositório Git: espaço, local ou remoto, para armazenamento de arquivos e controle de versão dos mesmos;
-
VPN: rede privada de comunicação, que busca assegurar a confidencialidade e integridade na troca de informações pela rede.
Verificação por Pares
Introdução
A verificação por pares é executada para identificar defeitos nos requisitos, na arquitetura e no desenvolvimento do produto antes que estes sejam formalizados como código fonte estável, de forma que o custo para resolução seja mais baixo e a solução mais efetiva, garantindo a integridade da informação ao longo do ciclo de vida do software.
A Basis realiza verificações por pares em seus produtos através da técnica de Inspeção, onde um revisor fará uma inspeção com base em critérios, nos produtos selecionados.
São efetuadas inspeções em requisitos, na arquitetura do produto e no código-fonte do mesmo, com base em critérios definidos nas ferramentas SGO e Git. 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:
-
Ver se o template está na versão mais atual da Biblioteca de Ativos
-
Garantir que o formato do documento está de acordo com o template
-
Garantir que as seções estão de acordo com o template
-
Garantir que houve correção ortográfico automática no documento
-
Garantir que não foram excluídas as seções do template
Requisitos
Executam-se inspeções em requisitos, representados pelas especificações funcionais de Casos de Uso ou Especificações por Exemplo (EPEs), de acordo com a opção do projeto. As inspeções são feitas com base em critérios definidos na ferramenta SGO, para cada tarefa de implementação.
As mesmas poderão ser efetuadas por amostragem, quando a quantidade de Casos de Uso ou EPEs for grande (maior que 10). Nestes casos, poderá se optar por realizar apenas a revisão de parte das especificações funcionais, ficando a cargo do revisor essa decisão. Recomenda-se que nestes casos a escolha leve em consideração:
-
A criticidade dos requisitos dentro do projeto;
-
A existência ou não de um padrão de especificações funcionais (Ex: Especificação tem vários CRUDs. Opta-se por fazer inspeção de apenas 10% dos CRUDs).
Arquitetura
Executam-se inspeções na arquitetura do produto, na qual o revisor é um par do elaborador das especificações. As inspeções são feitas com base em critérios definidos na ferramenta SGO, para cada ordem de serviço.
Desenvolvimento
Executam-se inspeções no código-fonte a ser integrado à branch principal do repositório Git do sistema em questão. As inspeções são feitas com base na checklist de validação de Merge Request, evidenciada na própria criação do Merge Request no repositório, e definida na seção Qualidade.
Integração Contínua
Introdução
A Integração Contínua é uma prática recente na engenharia de software, que consiste, resumidamente, em unificar todas as cópias de trabalho de cada desenvolvedor, várias vezes ao dia, em um ambiente centralizado e compartilhado. Ela ganhou grande importância na comunidade de desenvolvimento de software devido ao grande impacto causado pelas metodologias ágeis, sendo ela um dos pilares de tal agilidade e garantindo que todo o sistema funcione de forma correta em cada nova construção (build), mesmo que a equipe envolvida seja grande e diversas partes do código estejam sendo alteradas ao mesmo tempo.
Uma grande vantagem da integração contínua é a repercussão instantânea. A cada commit no repositório, a build é automaticamente realizada, executando testes e detectando falhas. Se o código de algum commit não compilar ou não passar em algum dos testes, a equipe envolvida toma conhecimento instantaneamente através de um E-mail, por exemplo, que aponta as falhas detectadas e o commit que contém o código defeituoso, possibilitando assim uma correção imediata.
Equipes e Funções
O processo de integração envolve três equipes principais, todos com responsabilidades, objetivos e procedimentos bem definidos:
Desenvolvimento
A equipe de desenvolvimento, composta por codificadores e testadores, é responsável pela elaboração respectiva do código-fonte relativo aos sistemas e dos testes das funcionalidades desenvolvidas, bem como sua execução. Suas tarefas são repassadas pelos gestores de projeto, seu ambiente de aplicação depende da equipe de configuração, e o código por eles produzido deve ser constantemente versionado.
Configuração
A equipe de configuração é responsável por criar e configurar os ambientes de integração, de aplicação e de avaliação do código fornecido pelos desenvolvedores, de acordo com as tarefas e planos elaborados pelos gestores. Cabe também à configuração administrar os repositórios de versionamento dos desenvolvedores, e resolver/reportar problemas relativos aos ambientes relatados no processo de integração.
Gestão
Os gestores de cada projeto são responsáveis por elaborar as solicitações de codificação e criação de ambientes, distribuindo as tarefas entre as demais equipes. Também lhes cabe a responsabilidade por aprovar ou rejeitar o código dos desenvolvedores, bem como avaliar sua aplicação nos ambientes respectivos, de acordo com o cliente.
Ferramentas Utilizadas
Jenkins
O Jenkins é uma ferramenta de Integração Contínua projetada para realizar builds automáticas de múltiplos projetos (definidos em configurações individuais nomeadas Jobs), a partir de gatilhos pré-definidos; periódicos, específicos ou a cada novo commit no repositório associado. Baseado em Java, ele permite restringir o acesso de usuários às Jobs, e possui vários plugins instaláveis para melhor atender às necessidades específicas de projetos. Sua construção garante que apenas builds de sucesso sejam publicadas em produção.
No ambiente Basis, o Jenkins, acessível pelo endereço https://cje-master1.basis.com.br/, possui uma estrutura padronizada de acesso a jobs de clientes. As pastas de acesso consistem em "Cliente/Sistema/Ambiente", e possuem acesso restrito aos grupos de recursos Basis associados àqueles clientes específicos.
A ação da construção de fato é dividida em agents, também conhecidos como slaves, que são máquinas individuais, executando construções em paralelo. Todos os agents são gerenciados no servidor central, Jenkins Master, responsável por configurar os jobs, atribuindo-lhes opções específicas de inicialização, e por direcionar as builds, disponibilizando-as em agents livres. Os agents, bem como certas ferramentas comuns do Jenkins como versões de Java e Maven, são configurados em uma instância de controle de Jenkins Masters, o Jenkins Operation Center, acessível em https://joc.basis.com.br/.
Versões mais recentes do Jenkins aplicam o conceito de Pipeline às jobs. Uma pipeline de entrega contínua no Jenkins consiste em um processo complexo de construção do software de maneira confiável e repetida, normalmente separada em estágios para melhor controle. Tais pipelines são elaboradas via código, utilizando uma sintaxe específica conhecida como Domain-specific Language (DSL), e podem ser colocadas ou em um arquivo Jenkinsfile dentro do próprio repositório de código, ou na configuração da job no Jenkins, ou em um Job Template.
Um Job Template no Jenkins consiste em uma configuração fixa e padronizada de jobs, de tal forma que qualquer job que seja criada a partir desse template só necessita de alguns parâmetros a configurar, em vez de uma configuração completa. Os templates do Jenkins Basis aplicam parâmetros específicos em pipelines, de forma a manter as jobs uniformemente configuradas.
Os templates do ambiente Basis possuem também uma funcionalidade associada ao SonarQube, de modo a realizar avaliações de qualidade de código toda vez que uma nova build é executada. Se o código sendo construído ficar aquém de um limite fixo de qualidade de código, o chamado Quality Gate, a construção é interrompida, exigindo a revisão do código pelos desenvolvedores de forma a eliminar os problemas de qualidade recém surgidos.
Maven
Apache Maven, ou simplesmente Maven, é uma ferramenta de automação de compilação utilizada primariamente em projetos Java. O Maven utiliza um arquivo XML (POM) para descrever o projeto de software em construção, bem como suas dependências de módulos e componentes externos, ordem de compilação dos mesmos, diretórios e plugins necessários. Ele possui objetivos pré-definidos para realizar tarefas específicas, como compilação e empacotamento de código.
O Maven adquire bibliotecas Java e seus plugins dinamicamente de um ou mais repositórios, como o próprio repositório central Maven ou o Nexus Basis, e armazena-os em uma área de cache local. Esse cache pode também ser atualizado com artefatos criados por projetos locais.
O Jenkins utiliza o Maven como concentrador de comandos e variáveis para integração contínua. O arquivo POM é lido para ajustar os deploys da integração a partir do plugin Cargo, bem como a migração do banco de dados a partir do Liquibase ou Flyway.
Docker
Docker é uma plataforma Open Source, que facilita a criação e administração de ambientes isolados. O Docker possibilita o empacotamento de uma aplicação ou ambiente inteiro dentro de um container, e a partir desse momento o ambiente inteiro torna-se portável para qualquer outro Host que contenha o Docker instalado. Isso reduz drasticamente o tempo de deploy de alguma infraestrutura ou até mesmo aplicação, pois não há necessidade de ajustes de ambiente para o correto funcionamento do serviço, o ambiente é sempre o mesmo, configurado uma vez e replicado quantas vezes quiser.
O backend padrão do Docker é o LXC. Com isso é possível definir limitações de recursos por container (memória, cpu, I/O, etc.)
Vantagens:
-
Implantação rápida de aplicativos: os containers incluem os requisitos mínimos de tempo de execução do aplicativo, reduzindo seu tamanho e permitindo que eles sejam implantados rapidamente.
-
Portabilidade entre máquinas: um aplicativo e todas as suas dependências podem ser agrupados em um único contêiner que é independente da versão host do kernel, plataforma de distribuição ou modelo de implantação do Linux. Este contêiner pode ser transferido para outra máquina que executam o Docker e executado na mesma sem problemas de compatibilidade.
-
Controle de versão e reutilização de componentes: pode rastrear versões sucessivas de um container, inspecionar diferenças ou reverter para versões anteriores. Os recipientes reutilizam componentes das camadas anteriores, o que os torna visivelmente leves.
-
Compartilhamento: pode usar um repositório remoto para compartilhar seu container com outras pessoas ou ambientes. A RedHat fornece um registro para esse propósito, e também é possível configurar seu próprio repositório particular.
-
Leve e mínima sobrecarga: imagens Docker são pequenas por padrão, o que facilita a entrega rápida e reduz o tempo para implantar novos recipientes de aplicativos.
-
Manutenção simplificada: Docker reduz o esforço e o risco de problemas com dependências de aplicativos.
As construções do Jenkins que utilizem um template relativo a Docker criam imagens a partir dos códigos-fonte e enviam para repositórios internos no Nexus, para que sejam utilizadas em suas máquinas respectivas. Nossas máquinas Docker, ou Docker Hosts, são separadas por cliente, mantidas e organizadas via Rancher.
Rancher
O Rancher consiste numa plataforma de operação do Docker, provendo uma interface gráfica intuitiva e várias funcionalidades que facilitam a manutenção de hosts e containers. Entre elas, o gerenciamento de redes e balanceamento de carga entre hosts, criação e manutenção de volumes de armazenamento, facilitação de uso de recursos do próprio Docker, elaboração de catálogos contendo pilhas de serviços Docker para execução direta, visualização de logs, execução de comandos, entre outros.
Uma pilha de serviços no Rancher normalmente comprime tudo o que é necessário para a execução de um sistema. É composta por um ou mais containers Docker, que se comunicam entre si através de redes internas estabelecidas pelo próprio Rancher.
As construções do Jenkins que utilizem um template relativo a Docker fazem a atualização dos serviços específicos relativos aos seus sistemas diretamente no Rancher, através de um plugin desenvolvido internamente. Portanto, não há necessidade de interação com o Rancher uma vez que os serviços estejam corretamente configurados, o próprio Jenkins se encarrega dos demais processos de atualização.
SonarQube
O SonarQube, anteriormente conhecido simplesmente como Sonar, é uma plataforma aberta de gerenciamento de qualidade de código. Abrangendo várias linguagens e métodos, o SonarQube provê estatísticas relativas à codificação de cada sistema, apresentando resultados de testes unitários e de integração, avaliação de código duplicado, documentação, complexidade, e apontando diversos problemas encontrados no código ao longo do tempo.
A integração do SonarQube com o Jenkins é direta, feita através de um plugin que adiciona um passo de pós-build à job desejada, bastando também adicionar testes e referências no POM relativo ao projeto. O sucesso em uma build configurada desta forma já coloca o código no ambiente do SonarQube, para posterior avaliação dos resultados.
Em nosso ambiente padrão de qualidade de código, acessível pelo endereço https://codequality.basis.com.br/, o SonarQube possui um Quality Gate, um “limite de qualidade” específico para cada tipo de avaliação. A BASIS define um limite de qualidade minimo padrão para seus projetos. Esses limites podem ser alterados de acordo com os níveis acordados em contrato, sendo necessária intervenção no código caso fique abaixo de tal. Este nível de qualidade deve ser garantido pelos responsáveis pelo desenvolvimento e será verificado no momento da geração das baselines de código-fonte.
Existe também um ambiente separado para verificação de qualidade imediata em builds do Jenkins. Acessível via https://codequality-build.basis.com.br/, esta instância do SonarQube possui um Quality Gate voltado especificamente para verificação de novos problemas que tenham surgido em cada uma das construções realizadas no Jenkins, bloqueando a continuidade das mesmas enquanto o problema não for resolvido.
Repositórios
Existem dois tipos de repositórios utilizados na configuração dos projetos de integração: os repositórios de código-fonte de cada sistema (Git – http://gitlab.basis.com.br) e o repositório interno referente às bibliotecas a serem utilizadas pelo Maven, NPM, Bower, bem como às imagens Docker (Nexus – http://element.basis.com.br). No Git, utilizado como ferramenta de controle de versão, armazenam-se a documentação e o código-fonte de cada sistema. Código este em que se encontra o pom.xml, responsável por fornecer os parâmetros do Maven. O Nexus é responsável pelas bibliotecas do Maven, a partir das quais os comandos de construção são executados, bem como por Docker Registries privados, onde se armazenam imagens Docker construídas e utilizadas pelo Jenkins para uso nos ambientes Basis.
Cargo
Cargo é um empacotador que permite a manipulação de diversos tipos de servidores de aplicações, como Java EE, de maneira padronizada. No Maven, ele funciona como um plugin para configurar, iniciar, parar ou implantar aplicativos em seus devidos servidores. Para chamá-lo no Jenkins, utiliza-se a opção cargo:redeploy, e seus parâmetros serão lidos do pom.xml. O Cargo é normalmente utilizado em projetos de arquitetura antiga, onde não se utiliza o Docker.
Migração de Banco de Dados
Para sistemas construídos pela Basis que necessitem de banco de dados, utilizamos ferramentas que possibilitem uma migração automatizada e controlada de forma simples. Tais ferramentas de migração de banco de dados são integradas ao Maven como um plugin, e podem ser executadas tanto em cada construção do sistema quanto na inicialização do mesmo. Funcionam com scripts SQL padrão ou no formato XML, e são compatíveis com os principais bancos de dados.
Tal abordagem tem como motivações:
-
Mudanças constantes no banco de dados;
-
Interrupção do desenvolvimento por mudanças no banco;
-
Histórico de mudança perdendo-se até chegar em produção;
-
Versionamento e ordenação dos scripts;
-
Constante recriação manual do banco de dados em ambientes diferentes (desenvolvimento, teste, etc);
-
Automação das atualizações das aplicações.
A depender do projeto, escolhe-se uma das duas ferramentas abaixo: Liquibase ou Flyway.
Liquibase
O Liquibase é a ferramenta de uso mais comum em projetos recentes, sendo configurado diretamente no repositório dos projetos que serão executados no Jenkins, incluindo o POM, sem necessitar de parâmetros extras na construção do Maven.
Os scripts de banco de dados são agregados em arquivos XML. Por padrão, a pasta “resources/config/liquibase” abrange o master.xml, responsável por listar e ordenar os scripts a serem executados, e a pasta changelog, onde ficam os scripts de fato. O Liquibase encarrega-se de recriar ou atualizar o banco de dados, desde que os scripts de mudança estejam listados e configurados no master.xml e com a sintaxe padrão (XXXXX_nome_do_script.xml, sendo XXXXX a data/hora da geração do script).
Flyway
O Flyway é usado em nosso ambiente para atualização dos bancos de dados em conjunto com o Maven e o Jenkins, aplicando o comando flyway:migrate na entrada de parâmetros do Maven dos sistemas que serão construídos. Normalmente é relacionado a projetos de arquitetura antiga, em conjunto com o Cargo.
Os scripts de banco de dados ficam em pastas específicas do repositório de código-fonte, por padrão, “resources/db/migrate” no caso de sistemas Java. O Flyway encarrega-se de recriar ou atualizar o banco de dados, desde que os scripts de mudança estejam nomeados na ordem correta e com a sintaxe padrão (VXX.XXXX__nome_do_script.sql).
Procedimentos
A integração é realizada tendo em vista objetivos bem definidos:
Planejar a Integração do Produto
A preparação determina um planejamento para a sequência de integração, o estabelecimento do ambiente de integração, os itens de software a serem integrados, bem como procedimentos e critérios para a integração do produto. A definição da estratégia e das ferramentas que serão utilizadas no projeto é registrada e aprovada no Documento de Arquitetura de Software dos projetos.
Garantia da Compatibilidade das Interfaces
A compatibilidade entre interfaces é garantida através da execução e manutenção de práticas como a revisão das descrições de interfaces internas e externas, evidenciando quaisquer alterações por rastreamento.
Montagem e Entrega dos Componentes do Produto
Executa-se, por fim, o planejamento de integração elaborado inicialmente, de forma a evidenciar por fim a disponibilidade dos componentes do produto para integração.
Para que a integração possa ocorrer de maneira completa, há três ambientes que devem estar preparados previamente:
Repositório de Código
Acessível pelos projetos específicos listados no site https://gitlab.basis.com.br/, necessita minimamente de arquivos base para inicialização das builds, como um POM, e de scripts de banco para execução do Liquibase ou Flyway. Acessos são restritos à equipe de cada sistema.
Banco de Dados:
Configurado pela equipe de banco e acessível também à equipe de configuração, deve ter suas configurações de acesso e especificidades colocadas no código e nos próprios ambientes de desenvolvimento. O tipo de banco varia de acordo com o projeto.
Ambientes DES / TST / HOM:
Criados pela equipe de configuração a partir de uma tarefa repassada pelo gestor, logo após a aprovação da proposta de trabalho relativa ao sistema. Consistem em containers Docker empilhados no Rancher, ou máquinas virtuais que possuem os requisitos de hardware e software mínimos para aplicação do código e associação com o banco de dados.
Faz-se necessário, por fim, a configuração de uma job no Jenkins propriamente dito, realizada pela equipe de configuração. Acessando o endereço apontado na sessão Jenkins, com nome e senha específicos de usuário, temos a tela inicial do ambiente:

A partir desta tela, a equipe de configuração seleciona um projeto do cliente desejado dentre os já existentes, organizados em pastas. Caso não haja ainda uma pasta do cliente específico, uma nova pode ser criada no botão Novo job, ou New Item, e selecionando o tipo Folder.


Na configuração que segue, por padrão, se estabelece o nome do cliente, possivelmente um nome de exibição com mais detalhamento, e uma variável de ambiente DOCKER_REGISTRY, para direcionamento das jobs ao repositório Docker associado ao mesmo.

Uma vez dentro da pasta do cliente, seguem-se procedimentos semelhantes para criação das pastas do sistema propriamente dito, e das instâncias separadas de DES/TST/HOM que forem necessárias. O destaque a ser feito para este ponto do processo é que, da mesma forma que a pasta do cliente possui uma variável de ambiente DOCKER_REGISTRY para direcionamento das imagens do Docker, as pastas de cada sistema devem ter também uma variável, GRUPO, para que as imagens tenham um subgrupo específico do sistema em questão.

Dentro da pasta final, por padrão seguindo a estrutura Cliente/Sistema/Ambiente, podem ser criadas as jobs de construção de fato. Para tal, clica-se em New Item, seleciona-se o nome e o tipo ou template de job a ser configurada. Supondo uma construção de um container Docker para o backend de um sistema, por exemplo, seleciona-se o Template Docker Backend.

Na tela que segue, toda a configuração acerca do sistema em questão é realizada, incluindo, entre os detalhes mais importantes, a definição do repositório a usar-se para o código, utilizando endereço de acesso SSH com as credenciais estabelecidas na configuração do próprio Jenkins, a automatização de construções baseada em frequência de atualizações do repositório, os parâmetros do Maven utilizados na build, como escolha de um profile do POM. Os parâmetros de configuração da job possuem um ícone de ajuda para maior esclarecimento sobre a utilidade de cada parâmetro.


Diferentes sistemas podem exigir diferentes configurações ou templates, incluindo jobs mais abertas que não utilizem templates propriamente. O padrão para todos, independente das configurações individuais de sistema, é utilizar os repositórios Git corretos, selecionando a branch master por padrão, e ativar a consulta periódica do SCM para ambientes de desenvolvimento. Dessa forma, sempre que houver um novo commit no repositório de código do sistema, uma build será automaticamente executada.
No caso de jobs específicas para verificação de qualidade, deve ser utilizado o Template Sonar. A job em questão terá seu foco em testes que estejam configurados para aquele cliente/sistema, para atestar qualidade e erros de código. Vale constar que existem dois Templates Sonar principais, sendo o segundo o Template Sonar Branch. Este possui como diferencial a parametrização da branch do repositório que será usada na execução manual da job, sendo que o primeiro foca numa única branch, definida na configuração, e roda automaticamente e periodicamente.

Configurados e salvos os detalhes da job, as construções do sistema podem ser realizadas. Na tela padrão da job, clicando em Construir agora, uma nova build é iniciada. Todos os usuários com acesso ao Jenkins e às pastas específicas dos clientes, requisitado pelo gestor, podem executar builds e visualizar os detalhes da execução.

Na seção “Histórico de builds”, clicando nos detalhes da build em execução, ou mesmo em alguma previamente executada, é exibida a tela de detalhes da build em questão, incluindo detalhes da alteração no repositório que iniciou sua execução.

Ainda dentro da tela da build, selecionando Saída do console, ou a partir de outra tela que exiba o progresso atual das builds do Jenkins, ao clicar na barra de progressão das mesmas, é possível ver o log de execução da construção em tempo real.

Se a build finalizar em vermelho, houve algum problema em sua execução, e o log deve ser examinado para determinar a solução. Nesse caso, o sistema não é construído e fica inacessível em sua versão mais recente.
Se finalizar em azul, o sistema foi corretamente construído de acordo com os parâmetros de configuração anteriormente especificados e deve estar acessível por seu link ao ambiente específico.
Se a build finalizar em amarelo, a construção terminou de modo instável. Isso indica que algo na construção não saiu como esperado e pode acarretar em problemas no sistema. Também cabe investigar os logs para determinar se a situação necessita de reparo.
Independente do resultado das builds, quando esta é finalizada, as equipes de configuração e gestão são informadas por e-mail e por chat, de acordo com a configuração da própria job. O e-mail inclui o resultado da build e a saída de log da build em questão.
Para solucionar o problema apontado na build, o executor da mesma inicialmente examina o log. Se o erro apontado for algo relativo a seu próprio trabalho, ele mesmo faz as devidas alterações, seja em código ou ambiente, e realiza uma nova build. Caso o erro não faça parte da sua própria jurisdição, ele deve abrir uma ocorrência no SGO para direcionar o erro à equipe responsável por tal departamento.
Testes
Os testes são classificados em dois tipos distintos: testes de caixa branca, para os quais se exige conhecimento interno do sistema, e testes de caixa preta, para os quais não é necessário tal conhecimento, sendo esses realizados em visão de teste.
Todos os testes de caixa branca do ambiente Basis são realizados no Jenkins e evidenciados no Sonar (resultados e scripts), porém tais testes não são obrigatórios. Caso não estejam presentes, o desenvolvedor deverá registrar no SGO, via Tarefa que lhe for atribuída, a execução dos testes funcionais (de caixa preta) realizados. Um arquivo comprovando a execução deve ser anexado à Tarefa para que seja possível sua conclusão.
Quando se adota o teste manual o testador deve a cada correção de defeito executar um teste de regressão na funcionalidade inteira na qual a correção foi aplicada. No caso de testes automatizados os mesmos são realizados após cada correção de bug identificado nos testes realizando uma cobertura de testes de regressão.
-
Testes unitários (caixa branca): realizados pelo desenvolvedor e executados no Jenkins, durante a implementação dos requisitos. A Basis define duas formas de realizar testes unitários: Via código, com classes de testes e métodos de testes automatizados, ou manualmente. Nesse último caso, o registro de testes é feito dentro de ocorrências de Tarefa no SGO, concluídas com a inserção de um anexo comprobatório.
-
Testes de integração (caixa branca): elaborados e realizados pelo desenvolvedor e executados no Jenkins, à medida que realizam commits no repositório. Avaliam interfaces de código entre componentes, módulos, camadas, entre outros. Tais testes são criados dentro do desenvolvimento utilizando bibliotecas de teste[1] e versionados juntamente ao código-fonte, mas não são integrados no produto final (executável). Neste caso, segue-se o fluxo de integração de código-fonte definido nas seções acima.
-
Testes funcionais (caixa preta): realizados pela equipe de testes e desenvolvedores, em ambiente de teste similar ao ambiente do cliente em termos de configurações, interfaces sistêmicas e outros, levando em consideração os requisitos levantados junto ao cliente. Esses testes são realizados manualmente, especificados em ocorrências no SGO do tipo Tarefa, com departamento Proteste, relacionadas às OSs originais e separadas por funcionalidade e cenário. Os testes funcionais abordam todas as regras de negócio descritas nos cenários dos casos de uso ou EPEs. As evidências de execução dos testes são elaboradas com apoio de ferramentas de captura de tela, em que se pode visualizar as telas de execução dos testes. Os erros são registrados no SGO como defeitos, nos quais além do relacionamento com módulo e funcionalidade, deve ser citado o cenário (EPE) ou fluxo (UC) onde ocorreu o erro, e as evidências geradas são ali anexadas. Importante observar que o projeto só transita de fase no momento em que todos os erros identificados foram resolvidos. O prazo para que isso ocorra é o prazo planejado para a fase.
-
Homologação (caixa preta): A equipe disponibiliza o produto no ambiente do cliente e este realiza os testes sem a presença da equipe de testes, levando em consideração a documentação funcional produzida. O aceite da OS no SGO determina que os critérios contidos na documentação funcional foram homologados no sistema disponibilizado, e este pode então ser implantado em produção. Esta implantação é feita pelo cliente, com base no plano de implantação elaborado no projeto.
Especificações de Hardware
O Jenkins tem sua instância Master rodando como um Docker container dentro do Rancher de produção, atualmente utilizando a imagem cloudbees/jenkins-enterprise, com acesso a 32 vCPU, 10GB de memória RAM limitados via parâmetros JVM e 1,78TB de armazenamento acessíveis via NFS. Associado ao mesmo, há um outro container para um Jenkins Operation Center, atualmente utilizando a imagem cloudbees/jenkins-operations-center, com acessos de hardware semelhantes ao Master. O conjunto Jenkins trabalha com 5 agents Linux para fazer os deploys das builds, sendo cada um instalado em uma máquina virtual do VMware, com sistema operacional Linux Ubuntu, com 4 vCPU, 4096MB de memória e 160GB de armazenamento. Além destes, há um agent em Windows Server utilizado para sistemas que utilizem Microsoft .NET, configurado numa máquina com 4 vCPU, 8GB de memória e 100GB de armazenamento.
Histórico de Revisões
| Data | Versão | Autor | Revisor | Observação |
|---|---|---|---|---|
10/03/2015 |
1.0 |
Dyogo Cruz |
Guilherme Peres |
Versão Inicial |
22/05/2015 |
1.1 |
Dyogo Cruz |
Guilherme Peres |
Reforço e revisão de atividades e práticas envolvidas no processo |
10/07/2015 |
2.0 |
Guilherme Peres |
Dyogo Cruz |
Inclusão dos procedimentos e detalhamento do Sonar |
23/07/2015 |
2.1 |
Guilherme Peres |
Dyogo Cruz Marcelle Mirsky Cédric Lamalle |
Inclusão dos procedimentos de verificação e validação |
09/05/2018 |
3.0 |
Guilherme Peres |
Cédric Lamalle |
Atualização e revisão de ferramentas e processos |
26/06/2018 |
3.1 |
Guilherme Peres |
Cédric Lamalle |
Substituição de menções ao EA por Tarefas SGO |
09/10/2018 |
3.2 |
Cédric Lamalle |
Guilherme Peres |
Adicionar itens na revisão por pares |
26/02/2020 |
3.3 |
Guilherme Peres |
Cédric Lamalle |
Adição de especificações sobre o defeito aberto para teste, remoção do qTest, atualização da revisão por pares |
06/07/2021 |
3.4 |
Cédric Lamalle |
Wilson Carlos |
Atualizar o planejamento da Integração do Produto |
Guia de Gerência de Configuração
Versão do documento: 3.3, 06/09/2018
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.: As baselines devem ser geradas de acordo com a periodicidade definida no cronograma do projeto em questão. 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.
-
Obs: Versões de código podem ser armazenadas em tags no repositório do projeto, em paralelo com as Baselines, e não necessitam de um padrão de nomenclatura.
-
A BASIS define que todo produto de trabalho é um item de configuração, e o nível de seu controle é caracterizado conforme abaixo:
-
Os produtos de trabalho decorrentes de atividades técnicas serão considerados itens de configuração de controle formal. Exemplo: descrição de requisitos, modelagem, código, casos de testes.
-
Os produtos de trabalho decorrentes de atividades gerenciais e de suporte serão considerados itens de configuração com controle de versão. Exemplo: plano de projeto, checklist de qualidade, resultados de medição, atas de reunião.
-
Os produtos de trabalho decorrentes de atividades da biblioteca de ativos serão considerados itens de configuração com controle Formal através de solicitações de melhoria no SGO. Exemplo: Templates, 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
| Repositório | Permissão |
|---|---|
Documentação |
Sem acesso |
Código-Fonte |
Sem acesso |
Gravações |
Sem acesso |
Biblioteca de Ativos |
Visualização |
Projeto de Melhoria |
Visualização |
Administrativo / Assistente de RH
| Repositório | Permissão |
|---|---|
Documentação |
Sem acesso |
Código-Fonte |
Sem acesso |
Gravações |
Sem acesso |
Biblioteca de Ativos |
Visualização |
Projeto de Melhoria |
Sem acesso |
Gerente de Projetos
| Repositório | Permissão |
|---|---|
Documentação |
Edição |
Código-Fonte |
Edição |
Gravações |
Edição |
Biblioteca de Ativos |
Visualização |
Projeto de Melhoria |
Visualização |
EPG
| Repositório | Permissão |
|---|---|
Documentação |
Edição |
Código-Fonte |
Edição |
Gravações |
Edição |
Biblioteca de Ativos |
Edição |
Projeto de Melhoria |
Edição |
Analista de Configuração
| Repositório | Permissão |
|---|---|
Documentação |
Edição |
Código-Fonte |
Edição |
Gravações |
Edição |
Biblioteca de Ativos |
Edição |
Projeto de Melhoria |
Edição |
Analista de Requisitos
| Repositório | Permissão |
|---|---|
Documentação |
Edição |
Código-Fonte |
Edição |
Gravações |
Edição |
Biblioteca de Ativos |
Visualização |
Projeto de Melhoria |
Visualização |
Analista de Métricas
| Repositório | Permissão |
|---|---|
Documentação |
Visualização |
Código-Fonte |
Visualização |
Gravações |
Visualização |
Biblioteca de Ativos |
Visualização |
Projeto de Melhoria |
Visualização |
Analista de Teste / Testador / Prototipador
| Repositório | Permissão |
|---|---|
Documentação |
Edição |
Código-Fonte |
Edição |
Gravações |
Visualização |
Biblioteca de Ativos |
Visualização |
Projeto de Melhoria |
Visualização |
Analista de Qualidade / Auditor de Configuração
| Repositório | Permissão |
|---|---|
Documentação |
Visualização |
Código-Fonte |
Visualização |
Gravações |
Visualização |
Biblioteca de Ativos |
Visualização |
Projeto de Melhoria |
Visualização |
Analista / Projetista
| Repositório | Permissão |
|---|---|
Documentação |
Edição |
Código-Fonte |
Edição |
Gravações |
Visualização |
Biblioteca de Ativos |
Visualização |
Projeto de Melhoria |
Visualização |
Programador
| Repositório | Permissão |
|---|---|
Documentação |
Edição |
Código-Fonte |
Edição |
Gravações |
Visualização |
Biblioteca de Ativos |
Visualização |
Projeto de Melhoria |
Visualização |
Arquiteto
| Repositório | Permissão |
|---|---|
Documentação |
Edição |
Código-Fonte |
Edição |
Gravações |
Visualização |
Biblioteca de Ativos |
Visualização |
Projeto de Melhoria |
Visualização |
DBA
| Repositório | Permissão |
|---|---|
Documentação |
Edição |
Código-Fonte |
Edição |
Gravações |
Visualização |
Biblioteca de Ativos |
Visualização |
Projeto de Melhoria |
Visualização |
Regras de Nomenclatura
Baseline
-
Requisitos: siglacliente_siglaprojeto_BL_DOC_numerosequencial
-
ex: CLIENTEX_SISTEMAY_BL_DOC_04
-
obs: caso haja uma revisão da baseline, pode ser colocado um número decimal
-
ex: CLIENTEX_SISTEMAY_BL_DOC_04.1
-
-
-
Código-Fonte: X.Y.Z
-
ex: 1.0.5
-
Seguindo o padrão do Semantic Versioning
-
-
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 obdecer 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 uma melhor clareza no preenchimento desse item, preencher complementando a frase "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."
-
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 OS que esta trabalhando para a alteração do documento ao fazer o commit/push.
Fluxo Git

-
Desenvolvimento (TAREFA-XXXX)
-
O nome da branch deve conter o número da tarefa, por exemplo BASIS-1234
-
Essa branch será utilizada para o desenvolvimento de features específicas;
-
A cada nova feature, uma nova branch será criada a partir da branch master;
-
Ao finalizar o desenvolvimento, o merge deve ser feito para a master;
-
-
Teste (master)
-
Nessa branch, deverá ser mesclado o código das branches de desenvolvimento;
-
Ao finalizar o desenvolvimento, o merge para a branch de homologação deverá ser realizado e uma tag deverá ser criada;
-
-
Homologação (homologacao)
-
A correção dos bugs encontrados na fase de homologação deverá ser realizada na própria branch;
-
Ao finalizar a homologação, o merge para a branch de desenvolvimento deverá ser realizado;
-
-
Produção (producao)
-
Quando uma nova versão for para produção, o merge deverá ser realizado da tag homologada para a branch de produção;
-
Os artefatos que irão para produção deverão ser gerados a partir dessa branch;
-
-
Hotfix (hotfix)
-
Serve para corrigir algum erro em produção, uma branch hotfix deverá ser criada (se não existir) a partir da branch de produção;
-
Ao finalizar a correção, o merge deve ser feito para as branch de producao e master;
-
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 dos Projetos
-
Perfis: Analista de Requisitos, Analista de Qualidade, Analista de Negócio, Gerente de Projetos, Prototipador, Gerente de RH, Assistente de RH, Programador, Arquiteto de Software, DBA, Analista de Métricas, Analista de Testes, Auditor de Configuração, Analista de Configuração, EPG, Responsável por Medição e Análise
-
Acesso ao Repositório: TortoiseGIT (última versão disponível)
-
Elaboração e Consulta de Documentos: Suite Office 2010 ou superior
-
Acesso às Ferramentas On-Line: Navegador Web (Internet Explorer 8 ou superior ou Firefox 4 ou superior ou Chrome 11 ou superior)
-
Gestão de Tarefas: SGO (Jira)
-
Comunicação online Rocket.Chat, versão 2.8.0 ou superior, ou via web
-
-
Projetos de Desenvolvimento
-
Perfis: Arquiteto de Software, Programador, DBA
-
Projetos Java
-
IDE: IntelliJ IDEA Community Edition 14.1 ou superior, Eclipse for Java EE Developers v3.7.2 ou superior, com plugins subclipse e mylyn com conector JIRA
-
Ferramenta de build: Maven v3.0 ou superior
-
JDK: Java Devolpment Kit 1.6 ou superior
-
Hardware Configuração Mínima: RAM:8GB HD:128GB CPU: 2Ghz
-
-
Projetos .Net
-
IDE: Visual Studio 2010 com plugin AnkhSvn e Atlassian Connector for Visual Studio
-
SDK .Net: Versão definida no documento de arquitetura
-
Hardware Configuração Mínima: RAM:8GB HD:128GB CPU: 2Ghz
-
-
Projetos PHP
-
IDE: Eclipse for PHP v3.0.2 ou superior com plugins subclipse e mylyn com conector JIRA
-
Servidor web com PHP: WAMP v2.2 ou superior, XAMPP v1.8.2 ou superior
-
Hardware: Configuração Mínima: RAM:8GB HD:128GB CPU: 2Ghz
-
-
-
Suporte SGO
-
IDE: Eclipse for PHP v3.0.2 ou superior com plugins subclipse e mylyn com conector JIRA
-
Servidor web com PHP: WAMP v2.2 ou superior, XAMPP v1.8.2 ou superior
-
Hardware: Configuração Mínima: RAM:8GB HD:128GB CPU: 2Ghz
-
-
Grupo de Processos
-
Perfis: EPG, Analista de Qualidade, Responsável por Medição e Análise
-
Edição de Processos BizAgi 2.7 ou superior, AsciiDoc
-
Controle de Cronograma Project 2010 ou superior ou Open Project
-
Alta Maturidade MiniTab Versão 17.0 ou superior
-
Hadware: Configuração Mínima: RAM:8GB HD:450GB CPU: 2,5Ghz
-
-
Gerência de Configuração
-
Perfis: Desenvolvedor, Arquiteto de Software, Analista de Configuração, Auditor de Configuração.
-
Repositório de Gerência de Configuração Git versão 1.9.0 ou superior
-
Ferramentas: AsciiDoc, Vmware vSphere versão 5.1.0 ou superior, Filezilla (ultima versão disponível), Notepad++ (ultima versão disponível), CheckPoint Endpoint Security 5.4.1, Putty (ultima versão disponível), FortiClient SSLVPN versão 4.0. OCS Inventory V2.0.2
-
Hardware: Configuração Mínima: RAM:8GB HD:450GB CPU: 2,5Ghz
-
-
Revisão por Pares e Testes
-
Perfis: Desenvolvedor, Analista de Requisitos, Arquiteto de Software, Analista de Configuração, Auditor de Configuração.
-
Repositório de Gerência de Configuração Git versão 1.9.0 ou superior
-
Ferramentas: qTestes 3.0.10.7
-
Hardware: Configuração Mínima: RAM:8GB HD:450GB CPU: 2,5Ghz
-
-
Requisitos
-
Perfis: Analista de Requisitos, Analista de Negócios, Prototipador
-
Repositório de Gerência de Configuração Git versão 1.9.0 ou superior
-
Ferramentas: Enterprise Architect 10 ou superior, Pickles-0.13.1, IntelliJ IDEA Community Edition 14.1 ou superior, Balsamic Mockups 2.2 ou superior
-
Hardware: Configuração Mínima: RAM:8GB HD:450GB CPU: 2,5Ghz
-
-
Gerente de Projetos
-
Perfis: Gerente de Projetos
-
Alta Maturidade MiniTab Versão 17.0 ou superior e Crystal Ball 11 ou superior
-
Itens de Configuração
Projetos Basis
| 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 |
Arquiteto |
Equipe do Projeto |
SGO (E-mail) |
|
SGO |
||||||
Ata de Reunião Kick-off |
Equipe do Projeto |
Cliente, Gerente de Projeto e Diretor |
SGO (E-mail) |
|
SGO ou Documentação\2 - Comunicação\Atas, E-mails, etc. |
||||||
Ata de Reunião de Repasse |
Equipe do Projeto |
Cliente, Gerente de Projeto e Diretor |
SGO (E-mail) |
|
SGO ou Documentação\2 - Comunicação\Atas, E-mails, etc. |
||||||
Atas de Reuniões - Gerais |
Equipe do Projeto |
Cliente e Gerente de Projeto |
SGO (E-mail) |
|
SGO ou Documentação\2 - Comunicação\Atas, E-mails, etc. |
||||||
Base de Riscos |
Gerente de Projeto |
Gerente de Projeto, Equipe de Projeto e Diretor |
SGO (E-mail) |
|
SGO |
||||||
Baselines |
Analista de Configuração |
Gerente de Projeto e Equipe do Projeto |
Disponibilização em Repositório |
|
Documentação → Tags ou Código Fonte → Tags |
||||||
Caso de teste |
Analista de Testes |
Gerente de Projeto e Testador |
Disponibilização em Repositório |
|
Documentação\5 - Testes\Caso de Teste |
||||||
Caso de Uso |
Analista de Requisitos |
Cliente, Gerente de Projeto e Analista de Requisitos |
Disponibilização em Repositório |
|
Documentação\3 - Requisitos\Especificações |
||||||
Checklist de Auditoria de Configuração - Documentação |
Auditor de Configuração |
Auditor de Configuração e Gerente de Projeto |
SGO (E-mail) |
|
SGO |
||||||
Checklist de Garantia da Qualidade |
Analista de Qualidade |
Gerente de Projeto |
SGO (E-mail) |
|
SGO |
||||||
Checklist de Revisão Técnica |
Revisor Técnico |
Gerente de Projeto, Analista de Requisitos/ Arquiteto |
SGO (E-mail) |
|
SGO |
||||||
Diagramas |
Analista de Requisitos e Arquiteto |
Arquitetos, Analista de Requisitos e Programador |
Disponibilização em Repositório |
|
Documentação\4 - Análise e Design |
||||||
Dicionário de Dados |
DBA |
Arquiteto e Programador |
Disponibilização em Repositório |
|
Documentação\4 - Análise e Design |
||||||
Documento de Arquitetura e software |
Arquiteto |
Analista de Requisitos e Programador |
Disponibilização em Repositório |
|
Documentação\4 - Análise Design |
||||||
Documento de Visao |
Analista de Requisitos |
Gerente de Projeto, Cliente, Arquiteto e Programador |
Disponibilização em Repositório |
|
Documentação\3 - Requisitos |
||||||
Especificação Suplementar (RNF) |
Arquiteto |
Gerente de Projeto, Cliente e Analista de Requisitos |
Disponibilização em Repositório |
|
Documentação\3 - Requisitos\Especificação Suplementar |
||||||
Especificações Por Exemplo |
Analista de Requisitos |
Cliente, Gerente de Projeto, Analista de Requisitos |
Disponibilização em Repositório |
|
Documentação\3 - Requisitos\Especificações |
||||||
Evidência de Teste |
Testador |
Cliente, Gerente de Projetos e Testador |
Disponibilização em Repositório |
|
Documentação\5 - Testes |
||||||
Fontes |
Programador |
Analista de Configuração |
Disponibilização em Repositório |
|
Código Fonte |
||||||
Gravações |
Equipe do Projeto |
Gerente de Projetos e Analista de Requisitos |
Disponibilização em Repositório |
|
Gravações |
||||||
Manual do Sistema |
Arquiteto |
Cliente |
SGO, E-mail, Disponibilização em Repositório |
|
Documentação\6-Entrega |
||||||
Mensagem de Interface |
Analista de Requisitos |
Gerente de Projetos, Analista de Requisitos |
Disponibilização em Repositório |
|
Documentação\3 - Requisitos\Mensagens de Interface |
||||||
MER |
DBA |
Arquiteto, Programadores |
Disponibilização em Repositório |
|
Documentação\4 - Análise e Design |
||||||
Não Conformidades |
Analista de Qualidade e Auditor de Configuração |
Gerentes de Projeto, Analista de Qualidade, EPG |
SGO (E-mail) |
|
SGO |
||||||
Planilha de Contagem |
Analista de Métricas |
Gerente de Projetos |
SGO (E-mail) |
|
SGO |
||||||
Plano de Implantação |
Arquiteto |
Analista de Configuração |
Disponibilização em Repositório |
|
Documentação\6-Entrega |
||||||
Plano de Medição |
Gerente de Projeto |
Equipe do Projeto |
SGO (E-mail) |
|
SGO - Ocorrência de Plano de Projeto |
||||||
Plano de Projeto |
Gerente de Projeto |
Equipe do Projeto |
SGO (E-mail) |
|
SGO - Ocorrência de Plano de Projeto |
||||||
Plano de Teste |
Analista de Testes |
Gerente de Projeto e Testador |
Disponibilização em Repositório |
|
Documentação\5 - Testes |
||||||
Proposta Técnica |
Gerente de Projeto |
Cliente |
SGO (E-mail) |
|
SGO - Aba "PT - Detalhamento da Solução" nas OSs |
||||||
Protótipos |
Analista de Requisitos |
Cliente e Equipe do Projeto |
Disponibilização em Repositório |
|
Documentação\3 - Requisitos\Protótipos |
||||||
Regra de Negócio Geral |
Analista de Requisitos |
Cliente, Arquiteto, Programador |
Disponibilização em Repositório |
|
Documentação\3 - Requisitos\Regra de Negócio Geral |
||||||
Relatório de Monitoração |
Gerente de Projeto |
Diretor |
SGO (E-mail) |
|
Comentários no Plano de Projeto no SGO |
||||||
Relatório de Status |
Gerente de Projeto |
Diretor |
Google Drive (E-mail) |
|
Na subpasta do Contrato no Google Drive Status Report |
||||||
Scripts |
DBA |
Arquiteto, Programador |
Disponibilização em Repositório |
|
Documentação\4 - Análise e Design |
||||||
Qualquer outro documento relevante do projeto (Faturamento, Relatório de Despesas, Infraestrutura e etc) que não esteja definido acima e que o Gerente de Projeto queira armazenar no repositório |
Equipe do Projeto |
Equipe do Projeto |
Disponibilização em Repositório |
|
Documentação\8 - Outros |
-
Obs 1: O titulo é obrigatório porém o seu uso é livre. Por exemplo: pode ser usado para lembrar o que é o REQ_1.
-
Obs 2: 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 3: A nomenclatura informada é apenas para arquivos .pdf.
-
Obs 4: Artefatos realizados no arquivo do Enterprise Architect ou Asciidoc/PlantUML.
-
Obs 5: Para baselines, a branch utilizada no repositório deve ser a Master.
-
Obs 6: 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.
| 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 |
|
01.Comunicação |
||
Relatório de Auditoria Informal |
EPG |
Repositório |
|
01.Comunicação |
||
Relatório de Análise de Gap |
EPG |
Repositório |
|
01.Comunicação |
||
Ata de Reunião de Kick-off |
EPG |
Repositório |
|
01.Comunicação |
||
Publicação da Biblioteca de Ativos |
Todos da Organização |
E-mail, Repositório, SGO |
|
01.Comunicação ou SGO |
||
Plano de Avaliação SCAMPI |
EPG, Avaliador CMMI |
E-mail e Repositório |
|
02.Planejamento |
||
Ata de Reunião de Análise de Gap |
EPG |
Repositório |
|
02.Planejamento |
||
Cronograma de Melhoria |
Todos da Organização |
E-mail, Repositório, SGO |
|
02.Planejamento ou SGO |
||
Plano de Projeto de Melhoria |
Todos da Organização |
E-mail e Repositório |
|
02.Planejamento |
||
Comprometimento com Projeto de Melhoria |
EPG |
Repositório |
|
04.Implementação |
||
MPSBr - F Declaração Avaliação |
EPG |
Repositório |
|
04.Implementação |
||
MPSBr - Press Release Avaliação |
EPG |
Repositório |
|
04.Implementação |
||
MPSBr - Resultado da Avaliacao |
EPG |
Repositório |
|
04.Implementação |
||
Planejamento Auditoria da Qualidade |
EPG |
Repositório |
|
04.Implementação |
||
Basis Tecnologia da Informação - SCAMPI B |
EPG, Avaliadores CMMI |
Repositório e Dropbox |
|
04.Implementação |
||
Relacao entre as SPs das PAs e as praticas do processo |
Analista de Métrica e Diretor |
Repositório |
|
04.Implementação |
||
Relatório Estatístico |
EPG |
Repositório |
|
06. Estatisticas/Baseline XX |
||
Análise de Causas Organizacional |
EPG |
SGO |
|
Tarefa de Análise de Causas |
||
Resultado Análise Organizacional |
EPG |
Repositório |
|
06. Estatisticas/Baseline XX |
||
Relatório Monte Carlo Organizacional |
EPG |
Repositório |
|
06. Estatisticas/Baseline XX |
||
Resumo Baseline Organizacional |
EPG |
Repositório |
|
06. Estatisticas/Baseline XX |
||
Laudo de Qualidade de Alta Maturidade |
EPG |
Repositório |
|
06. Estatisticas/Baseline XX |
||
Análise de Causas do Projeto |
EPG |
SGO |
|
Tarefa de Análise de Causas |
||
Relatório Monte Carlo do Projeto |
EPG |
Repositório |
|
06. Estatisticas/Baseline XX/Projetos/PROJETO |
||
Relatório Estatístico do Projeto |
EPG |
Repositório |
|
06. Estatisticas/Baseline XX/Projetos/PROJETO |
||
Projetos de Análise de Produtividade e Qualidade do Projeto |
EPG |
Repositório |
|
06. Estatisticas/Baseline XX/Projetos/PROJETO/Dados da Analise |
||
Análise Simulação Monte Carlo |
EPG |
Repositório |
|
06. Estatisticas/Baseline XX |
||
Lista de Profissionais |
EPG |
Repositório |
|
06. Estatisticas/Baseline XX/Relatorios SGO |
||
Dados de desempenho das Tarefas, separadas por subgrupo |
EPG |
Repositório |
|
06. Estatisticas/Baseline XX/Relatorios SGO |
||
Lista de Sistemas |
EPG |
Repositório |
|
06. Estatisticas/Baseline XX/Relatorios SGO |
||
Projetos de Análise de Produtividade e Qualidade |
EPG |
Repositório |
|
06. Estatisticas/Baseline XX/Dados da Analise |
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.
| Nome | Gerência | Endereço |
|---|---|---|
Política da Basis |
Diretoria |
|
Descrição dos Ciclos de Vida da Organização |
Gerencia de Qualidade |
|
Estratégia de Gerência de Portfólio de Projetos |
Diretoria |
|
Planilha de Portfólio |
Diretoria |
(armazenada em Google Drive) |
Objetivos e Ações Estratégicas |
Diretoria |
|
Template Caso de Uso |
EPG |
|
Template Documento de Visão |
EPG |
|
Template Especificação Suplementar |
EPG |
|
Geração de Documentos de Arquitetura de Software |
Gerência de Arquitetura |
|
Plano Estratégico de Treinamento |
Gerência de RH |
|
Estratégia de Gerenciamento de RH |
Gerência de RH |
|
Quadro de Competências |
Gerência de RH |
|
Modelo de Avaliação de Eficácia de Treinamento |
Gerência de RH |
|
Modelo de Avaliação de Desempenho |
Gerência de RH |
|
Modelo de Lista de Presença |
Gerência de RH |
|
Modelo de planilha de contagem SISP 1 |
Gerência de Qualidade |
|
Modelo de planilha de contagem SISP 2 |
Gerência de Qualidade |
|
Base de Medição e Análise Organizacional |
Gerência de Qualidade |
|
Modelo de Relatório Estatístico |
Gerência de Qualidade |
|
Guia de Gerenciamento de Riscos |
EPG |
|
Orientação das Equipes de Trabalho |
EPG |
|
Base de Riscos |
EPG |
|
Template Relatório Monitoramento |
EPG |
|
Template Ata Kick-off / Planning |
EPG |
|
Template de Controle Financeiro |
EPG |
|
Template de Relatório de Status |
EPG |
|
Checagem Automática de Seguimento dos Processos |
Gerência de Qualidade |
|
Checklist de Auditoria de Biblioteca de Ativos |
Gerência de Qualidade |
|
Checklist de Auditoria de Ativos Organizacionais |
Gerência de Qualidade |
|
Template Checklist de Alta Maturidade |
Gerência de Qualidade |
|
Estratégia de backup |
Gerência de Configuração |
|
Estratégia de Verificação, Validação e Integração |
Gerência de Configuração |
|
Guia de Gerência de Configuração |
Gerência de Configuração |
|
Manual Clone e Commit no Git |
Gerência de Configuração |
|
Manual Criação de Repositório |
Gerência de Configuração |
|
Manual Instalação Inventário |
Gerência de Configuração |
|
Checklist de Auditoria de Ativos Organizacionais |
Gerência de Configuração |
|
Estratégia de Reutilização |
Gerência de Arquitetura |
|
Template de Avaliação de Ativos Reutilizáveis |
Gerência de Arquitetura |
|
Template de Registro de Ativos Reutilizáveis |
Gerência de Arquitetura |
|
Portal de Processos FOUNDATION |
EPG |
Ativos de 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ões
| Data | Versão | Autor | Revisor | Observação |
|---|---|---|---|---|
7/10/2014 |
1.0 |
Marcelle Mirsky |
Miguel Negrelli |
Versão inicial |
30/12/2014 |
1.1 |
Dyogo Ellyson |
Guilherme Peres |
- |
04/02/2015 |
1.2 |
Leandro Rodrigues |
Guilherme Peres |
- |
14/04/2015 |
1.3 |
Marcelle Mirsky |
Miguel Negrelli |
Inserção das diretrizes definidas na política rganizacional |
22/05/2015 |
2.0 |
Marcelle Mirsky |
Guilherme Peres |
Alteração para refletir todas as melhorias provenientes do SCAMPI B |
08/05/2015 |
2.1 |
Marcelle Mirsky |
Guilherme Peres |
Alteração para refletir os ajustes apontados na auditoria de Baseline BASIS_BL_ORG_04 (Ajustes nos Ics da Biblioteca de Ativos) |
23/06/2015 |
2.2 |
Marcelle Mirsky |
Guilherme Peres |
Preenchimento das colunas "Publico-Alvo" e "Forma de Envio" |
25/06/2015 |
2.3 |
Guilherme Peres |
Marcelle Mirsky |
Pequenas alterações para organização das Baselines em acordo com as auditorias |
07/07/2015 |
2.4 |
Marcelle Mirsky |
Guilherme Peres |
Alterações para deixar mais claro quais artefatos tem controle formal. Retirada de artefatos que não deveriam estar no documento.Alinhamento dos ambiente com os papeis organizacionais |
29/07/2015 |
2.5 |
Guilherme Peres |
Marcelle Mirsky |
Alterações nas Permissões de Acessos, incluindo repositórios diferentes e retirando permissões por pasta (não existem no Git), mais pequenas alterações |
11/08/2017 |
2.6 |
Guilherme Peres |
Cédric Lamalle |
Inclusão de ferramentas de Alta Maturidade |
22/09/2017 |
2.7 |
Gabriel Feitosa |
Guilherme Peres |
Alteração na nomenclatura do commit nos repositórios git, da baseline de código-fonte, retirada da baseline organizacional, aumento de memória de máquina da equipe, adição do Fluxo Git. |
09/03/2018 |
2.8 |
Guilherme Peres |
Cédric Lamalle |
Revisão e exemplificação das tags de Baseline. |
21/05/2018 |
2.9 |
Guilherme Peres |
Cédric Lamalle |
Revisão dos ICs de projetos e adição de decimais às tags de Baseline. |
07/06/2018 |
3.0 |
Guilherme Peres |
Cédric Lamalle |
Conversão para o formato asciidoc, ajustes nos itens de configuração e permissões relevantes. |
20/06/2018 |
3.1 |
Guilherme Peres |
Cédric Lamalle |
Adição de tabela de Ativos de Treinamento, e pequenas formatações nas demais tabelas. |
22/08/2018 |
3.2 |
Guilherme Peres |
Cédric Lamalle |
Adição de estatísticas de Melhoria, mais ativos organizacionais, regras de nomenclatura e atualização do Fluxo Git. |
06/09/2018 |
3.3 |
Guilherme Peres |
Cédric Lamalle |
Novos ativos organizacionais. |
Manual Clone e Commit no Git
Versão do documento: 3.0, 04/11/2020
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.
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.
É 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.
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.
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:
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.
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.
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.
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.
O nome de usuário e a senha da rede devem ser digitados para validar o clone.
Os mesmos ficarão salvos no Gerenciador de Credenciais do Windows, caso precisem ser alterados.
Após a confirmação da senha, uma tela será exibida informando o progresso do clone.
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:
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
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.
Com a chave em mãos, entrar no Gitlab, e adentrar a seção "Configurações", no menu do canto superior direito.
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.
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.
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.
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.
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.
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
|
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.
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.
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".
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.
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.
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:
Criando Fork
Dentro da página no Gitlab do repositório que se deseja copiar, clicar em Fork, no canto superior direito.
Selecionar como namespace o próprio nome de usuário, apresentado por padrão na página.
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".
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".
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.
Uma vez criado, o merge request será listado no menu de Merge Requests do repositório original.
Também será criado um link para acessar o merge request na ocorrência do SGO mencionada pelo mesmo.
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.
A janela seguinte terá informações de quais foram os últimos commits, e quem os realizou, para devida informação e discussão.
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".
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 |
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:
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.
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.
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.
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).
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
| Data | Versão | Autor | Revisor | Observação |
|---|---|---|---|---|
06/01/2015 |
1.0 |
Dyogo Ellyson |
Guilherme Peres |
Versão inicial. |
30/03/2015 |
1.1 |
Guilherme Peres |
Dyogo Ellyson |
Correções e adição de "solução de problemas". |
15/05/2015 |
1.2 |
Guilherme Peres |
Dyogo Ellyson |
Atualizações de screenshots do Stash + correções e mais solução de problemas. |
09/06/2015 |
1.3 |
Guilherme Peres |
Dyogo Ellyson |
Maior detalhamento de problemas e soluções + alteração do título |
25/01/2018 |
2.0 |
Guilherme Peres |
Cédric Lamalle |
Alteração de texto para direcionamento ao Gogs no lugar do Stash, e adição de instruções para Rebase e SSH. |
01/02/2018 |
2.1 |
Guilherme Peres |
Cédric Lamalle |
Adição de criação de tags. |
06/09/2018 |
2.2 |
Guilherme Peres |
Cédric Lamalle |
Alteração da configuração SSL. |
04/11/2020 |
3.0 |
Guilherme Peres |
Cédric Lamalle |
Substituição do Gogs por Gitlab e adição do guia de Fork. |
Manual Criação de Novo Repositório
Versão do documento: 3.0, 04/11/2020
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".

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".

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.

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.

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".

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.

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".

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.
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.

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.

Criar novo repositório
Na tela do grupo, no canto direito da tela, clicar em "Novo projeto".

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.

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.

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

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).

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.

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

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.

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]

Quando finalizar o commit, clicar em Push logo abaixo.

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

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…".

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

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, a não ser que haja 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.

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;

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
| Data | Versão | Autor | Revisor | Observação |
|---|---|---|---|---|
23/03/2014 |
1.0 |
Leandro Rodrigues |
Mateus Augusto |
Versão Inicial |
30/07/2014 |
1.2 |
Leandro Rodrigues |
Marcelle Mirsky |
Adicionando informações sobre usuários básicos para os repositórios |
19/01/2015 |
1.3 |
Guilherme Peres |
Dyogo Ellyson |
Adicionando informações sobre repositórios Git |
14/04/2015 |
1.4 |
Guilherme Peres |
Dyogo Ellyson |
Alterando informações de plug-ins do Stash |
25/05/2018 |
2.0 |
Guilherme Peres |
Cédric Lamalle |
Removendo seções relativas a SVN e Stash, adicionando Gogs e remanejando seções do documento |
24/08/2018 |
2.1 |
Cédric Lamalle |
Pedro Frazão |
Ajustes no Histórico de Revisão |
04/11/2020 |
3.0 |
Guilherme Peres |
Cédric Lamalle |
Adaptação para Gitlab e automação de criação via SGO |
Manual de Instalação Inventário Basis
Versão do documento: 1.2, 28/05/2019
Introdução
Este documento tem como objetivo orientar todos os colaboradores na instalação do OCS Inventory, cliente do inventário Basis.
Configuração do nome da Máquina
Antes de fazer a instalação do cliente, para fins de padronização e organização, faz-se necessário trocar o nome do computador individual para o seu nome de usuário BASIS, nome.sobrenome trocando o . por -, por exemplo: nome-sobrenome. Isto vale para todos os sistemas operacionais.
Instalação no Windows
Troca do nome da máquina

Conforme a figura acima, no Windows, clique com o botão direito em Computador, e selecione Propriedades.
Ao entrar, clique em “Alterar Configurações”.

Na tela de Propriedades do Sistema que surgir, selecione “Alterar”. Na janela seguinte, em que se lê “Nome do Computador”, coloque seu usuário BASIS como indicado acima. Clique em OK e reinicie o computador para que as configurações tenham efeito.

Instalação e configuração do OCS Inventory
O software OCSinventory deve ser baixado em sua versão específica 2.0.5, seguindo o link: https://launchpad.net/ocsinventory-windows-agent/2.x/2.0.5/+download/OCSNG-Windows-Agent-2.0.5.zip.

Ao fim do download, extraia o arquivo OCSNG-Windows-Agent-2.0.5.zip, e clique duas vezes no arquivo OCS-NG-Windows-Agent-Setup.exe para abrir o instalador.

Prossiga com a instalação, avançando para as próximas páginas:


Na tela de configuração com o servidor, em Server URL, coloque o endereço https://inventario.basis.com.br/ocsinventory. Mantenha em branco todos os outros campos, desmarcando inclusive a checkbox “Validate certificates”.

Não há a necessidade de adicionar nada nas configurações de proxy. Na tela seguinte, em “Setup options…”, marque a última checkbox “Immediately launch inventory (=/NOW)”.

Ao concluir, os dados de sua máquina já estarão disponíveis para consulta no inventário.
Instalação no Linux
Atenção: todos os passos seguintes são executados no Terminal, usando comandos shell/bash.
-
Entrar em modo root:
sudo su
-
Renomear a máquina, editando os arquivos
/etc/hostnamee/etc/hostse substituindo o nome atual do computador pelo nome de usuário BASIS, como indicado acima. Reiniciar a máquina em seguida. -
Execute atualização e instalação dos componentes:
apt-get update
apt-get install debhelper libnet-ip-perl libnet-ssleay-perl libwww-perl libxml-simple-perl perl po-debconf quilt openssl
-
Habilitar o cpan digitando o comando:
cpan -i CPAN
(responder à pergunta digitando yes)
-
Habilitar módulos Perl necessários para a aplicação. Inserir o comando:
cpan -i Module::Install Digest::MD5 XML::Simple Net::IP Proc::Daemon Proc::PID::File Nvidia::ml Compress::Zlib LWP::Protocol::https Crypt::SSLeay Net::CUPS Net::SNMP Net::Netmask Net::Ping Nmap::Parser Data::UUID Parse::EDID
-
Fazer o download do inventário com:
wget https://github.com/OCSInventory-NG/UnixAgent/archive/master.zip
-
Será salvo um arquivo chamado
master.zip. Para extraí-lo, insira:
unzip master.zip
O resultado será o diretório UnixAgent-master.
-
Acesse o diretório recém extraído:
cd UnixAgent-master
-
Dentro do diretório, rodar os seguintes comandos:
perl Makefile.PL
make
make install
|
Caso haja problemas com o
|
-
Nas perguntas que o instalador apresenta, responder:
-> Do you want to configure the agent? > responder y -> Where do you want to write the configuration file? > escolher a opção - 2 (/etc/ocsinventory-agent) -> Do you want to create the directory /etc/ocsinventory-agent? > responder y -> Should the old unix_agent settings be imported? > responder n -> What is the address of your ocs server? > inserir a URL https://inventario.basis.com.br/ocsinventory -> Do you need credential for the server? > responder n -> Do you want to apply an administrative tag on this machine? > responder n -> Do you want to install the cron task in /etc/cron.d > responder y -> Where do you want the agent to store its files? > digitar /var/ocs-files -> Do you want to create the /var/ocs-files directory? > responder y -> Should I remove the old unix_agent? > responder y -> Do you want to activate debug configuration option? > responder y -> Do you want to use OCS inventory NG UNix Unified agent log file? > responder y -> Specity log file path you wanto to use? > digitar /var/ocslogs -> do you want disable SSL CA verification configuration option (not recommended)? > responder y -> Do you want to set CA certificates file path? > responder n -> Do you want to use OCS-Inventory software deployment feature? > responder n -> Do you want to use OCS-Inventory SNMP xcans feature? > responder n -> Do you want to send an inventory of this machine? > responder y
Caso apareça:
Lauching OCS Inventory NG Unix Unified agent...
-> Success !
A Instalação foi concluída e o primeiro relatório foi enviado.
Para enviar relatórios manualmente, abra um terminal como root e insira o comando ocsinventory-agent.
Histórico de Revisões
Data |
Versão |
Autor |
Revisor |
Observação |
13/07/2015 |
1.0 |
Dyogo Ellyson |
Guilherme Peres |
Versão inicial |
01/05/2018 |
1.1 |
Cédric Lamalle |
Guilherme Peres |
Adicionar instruções para instalação no Linux |
28/05/2019 |
1.2 |
Jonathan Nascimento |
Guilherme Peres |
Atualização de instruções para instalação no Linux |
Checklist de Auditoria de Ativos Organizacionais
Versão do documento: 1.0, 21/05/2018
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á em conformidade com 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 de acordo com 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, de acordo com 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? |