Skip to content
Matheus Miranda edited this page Jun 19, 2017 · 14 revisions

1 - Gerenciamento de repositórios

       Serão mantidos dois repositórios principais dentro da organização no GitHUb:

  • Este repositório, sendo o repositório principal, onde é mantido o código fonte do jogo MindScape, e utilizado para controle de versões e desenvolvimento colaborativo deste.
  • O repositório de suporte, onde serão mantidos arquivos necessários à configuração de ambientes de desenvolvimento e empacotamento do jogo.

1.1 - Política de Commits

       Os commits realizados no repositório do projeto deverão seguir o padrão definido abaixo:

  • Mensagem do commit em inglês, com verbo no infinitivo indicando o propósito do commit. Se necessário, utilizar-se de comentário adicionais.

  • Ao commitar utilizar-se da linha de comando $git commit -s. Deve-se também citar, utilizando a menção "Signed-off-by", o nome de usuário e email dos membros que colaboraram com o desenvolvimento do código que está sendo commitado.

1.2 - Política de Branches

       A branch devel será sempre atualizada a partir da branch master deste repositório. As branchs de desenvolvimento das funcionalidades deverão ser criadas sempre a partir da branch devel. Uma vez que as funcionalidades estejam concluídas deve ser aberto o Pull Request para a branch devel.

       Os Pull Requests só serão integrados à branch devel uma vez que o código desenvolvido tenha sido devidamente revisado por pelo menos outro membro da equipe de desenvolvimento.

       Nos pontos de entrega definidos, será aberto um "Pull Request" da branch devel para a branch master do repositório oficial. Desta forma visa-se garantir a estabilidade da branch master do repositório oficial, que será utilizada para empacotamento do jogo.

1.3 - Utilização das Branches

       Sempre que um ou mais membros da equipe for começar a trabalhar no desenvolvimento de uma nova funcionalidade ,correção de erros ou melhorias no jogo, deve-se criar uma branch a partir da branch devel, com o padrão definido abaixo:

Padrão para novas funcionalidades:

Nome da branch indicando a funcionalidade a ser desenvolvida, com palavras em minúsculo separadas por underline. Ex: game_mechanics;

Padrão para correção de erros ou melhorias:

       Nome da branch com o formato "issue_x_nome_da_issue", onde 'x' indica o número da issue a que está relacionado o que será desenvolvido, essa issue já deve estar mapeada no repositório. O restante do nome da branch será feito a partir de um breve resumo do nome da issue. Ex: issue_10_melhorar_privacidade;

1.4 - Política de aprovação

       Para que o "Pull Request" das funcionalidades seja devidamente aceito, este deve estar devidamente revisado e conforme os padrões de commit e estilo de código definidos.

1.5 - Uso das Issues

       Durante o desenvolvimento, deverão ser utilizadas issues para mapear as demandas e as funcionalidades, de modo que cada issue deve ser identificada com labels que facilitem o seu mapeamento com as tarefas e funcionalidades sendo desenvolvidas. Labels podem ser criadas de acordo com as necessidades de utilização. Além disso ,devem ser utilizadas as seguintes labels padrão:

-Engine;
-Game;
-Bug;
-Extra;
-Enhancement;

       Desta forma, por exemplo, caso uma issue esteja mapeando um bug relacionado à engine, deve adicionar à ela as tags "Bug" e "Engine".

2 Ferramentas e configuração de ambientes de desenvolvimento e empacotamento

Para utilizar as configurações de ambiente estabelecidas é necessário primeiramente ter as seguintes dependências instaladas:

  • Ruby
  • Chake
  • Vagrant
  • Virtual Box
  • NFS

Para configuração automatizada do ambiente de desenvolvimento foram utilizPython, com utilização do VirtualEnvPython, com utilização do VirtualEnvadas três ferramentas em conjunto, sendo elas: Chef, Chake e Vagrant. Foi construído um 'cookbook' chef com algumas receitas para configuração direta dos ambientes. Essas receitas quando executadas , por default, realizam a instalação e configuração de um ambiente de desenvolvimento com todas as dependências necessárias à utilização das SDL, a biblioteca gráfica utilizada no desenvolvimento do jogo, e à compilação do jogo. Estas foram feitas de forma genérica de modo que, ao executar a receita, o sistema operacional sendo utilizado é identificado e a correspondente configuração é realizada neste.

Além das receitas de configuração de ambientes de desenvolvimento, também foram desenvolvidas receitas para criação de um ambiente para empacotamento do jogo, uma vez que é interesssante haver um ambiente "limpo" para criação e manutenção de pacotes. Para tal utilização basta que o usuário descomente a linha "- role[packager]" no arquivo nodes.yaml, que diz quais conjuntos de receitas devem ser executados ao convergir cada uma das máquinas. Dentro do 'cookbook packager' foram definidas configurações para instalação das dependências necessárias à realização dos empacotamentos .deb e .rpm.

A criação das máquinas virtuais utilizando o Vagrant é bastante simples e demanda apenas uma linha de comando, já que o arquivo de configuração do Vagrant já está editado com as devidas configurações. Com a máquina virtual criada e 'rodando', é utilizado o Chake para execução das receitas 'remotamente' dentro da VM. O Chake funciona exatamente como uma abstração do ChefServer e permite que receitas possam ser executadas em hosts remotamente, bastando para tal, apenas realizar as corretas configurações deste.

Uma vez instaladas as dependências, deve-se seguir os seguintes passos:

# Clone o código fonte do jogo
git clone https://github.com/mind-scape/mindscape.git
cd mindscape

#Caso se deseje utilizar uma máquina debian, seja para desenvolvimento, execução ou empacotamento do jogo. Deve ser setado no Vagrant file a VM debian a ser utilizada na linha 'config.vm.box'.
#Ex: "config.vm.box = debian/jessie64"

#Caso se deseje utilizar uma máquina Centos, seja para desenvolvimento, execução ou empacotamento do jogo. Deve ser setado no Vagrant file a VM debian a ser utilizada na linha 'config.vm.box'.
#Ex: "config.vm.box = centos7"

# Execute o Vagrantfile, subindo a máquina virtual desejada.
vagrant up

# Saia do diretório atual
cd ..

# Clone o repositório de configuração de ambiente
git clone https://github.com/mind-scape/development-environment.git
cd development-environment

# Execute os cookbooks chef utilizando o chake
rake preconfig
rake clean
rake converge

Empacotamento RPM

Para fazer o empacotamento .rpm, siga as seguintes instruções:

# Acesse o repositório de configuração de ambiente
cd development-environment

# Acesse a máquina virtual
rake login:devenv

# Acesse a pasta compartilhada via NFS onde se encontra o código fonte do jogo
cd /mnt

# Gere uma tag para a versão do software
git tag v0.0.1 #Ou outra versão com o mesmo padrão de escrita

# Execute o script de empacotamento
./control.sh package --distro redhat --tag v0.0.1 #Ou outra distro (debian)