-
Notifications
You must be signed in to change notification settings - Fork 5
Home
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.
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.
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.
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;
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.
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".
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
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)