Introdução

editar

Propósito

editar

Este plano de gerência e configuração de software tem a finalidade de descrever os objetivos, ferramentas e práticas que serão utilizadas na contribuição do projeto JuliaBox, que contém algumas práticas a cerca do que se diz a gerência de configuração de software que podem ser melhoradas e adotada outras que não foram verificadas no projeto, o objetivo deste plano é contribuir com a integração contínua no que se diz respeito a build automatizada coma execução dos testes e configuração automatizada do ambiente de maneira mais eficiente e intuitiva que não seja somente através de shell scripts.

GCS atual

editar

Atualmente o projeto contém alguns docker's containers para funcionar em qualquer ambiente linux que suporte o Docker, o projeto também conta com alguns scripts de para a preparação do ambiente e build, muitos deles estão relacionados com configuração e criação de imagens do Docker. Não foi verificado no projeto alguma prática de build automatizada.

Problema

editar

A instalação tem muitos scripts isolados, exisitindo casos que os mesmos devem ser modificados se a instalação for para um propósito diferente, além do mais existem muitos scripts relacionados a build, o que é confuso até mesmo para um desenvolvedor iniciante. Atualmente a configuração do ambiente no projeto está sendo feita através de alguns scripts porém não é verificado se algumas dependências estão instaladas, como as ferramentas de instalação de pacote utilizadas.

Escopo

editar
  • Adotar a integração contínua de maneira clara, com uma ferramenta específica no caso o Travis CI, tendo como objetivo principal a build automatizada realizando a execução dos testes.
  • Preparação do ambiente com a ferramenta Chef para tratar depedências que não são resolvidas com o Dockers, como algumas bibliotecas e o Docker. E também com os scripts atuais, podendo serem substituídos ao longo que somente as receitas do Chef suprirem o problema.

Definições e abreviações

editar
Sigla Definição
GCS Gerência de Configuração de Software
Integração contínua Práticas de desenvolvimento e produção do software que envolve: automatização de builds, desenvolvimento com testes unitários, funcionais e de aceitação, deploy automático e outra práticas que garantem a qualidade de desenvolvimento e a facilidade de realizar ações necessárias para a produção.
Julia Linguagem de programação dinâmica de alto nível e alta perfomance voltada para finalidades numéricas e científicas
Sistema de controle de versão Ferramenta que permite controlar o desenvolvimento do que geralmente é um software através de versões, onde cada alteração realizada é controlada.

Repositórios

editar

Repositório oficial: https://github.com/JuliaCloud/JuliaBox

Fork do repositório: https://github.com/mateus-andrade/JuliaBox

Ferramentas

editar
Ferramentas Descrição
Git Sistema de controle de versão utilizado no projeto.
GitHub Ambiente web para gerenciamento de controle de versão.
Travis CI Ferramenta de intergração contínua
Chef Ferramenta para a instalação de depedências de maneira automatizada
Docker Ferramenta que possibilita executar aplicações em vários ambientes
Shell Script Linguagem de script

Cronograma

editar
Período Atividade Situação
Criação do plano de GCS 26/09 ~ 03/10 Feito
Estudo da ferramenta Travis CI 24/10 ~ 30/10 A fazer
Implantar integração contínua de acordo com o plano coma ferramenta Travis CI 31/10 ~ 13/11 A fazer
Estudo e implementação da instalação do ambiente de maneira automatizada com a feramenta Chef 14/11 ~ 20/11 A fazer
Entrega final 21/11 -

Referências

editar

https://en.wikipedia.org/wiki/Continuous_integration

http://julialang.org/