Ambiente de Desenvolvimento do Portal Modelo

Este tutorial detalha o processo de configuração do ambiente de desenvolvimento do Portal Modelo 3.

Definições

Buildout: é uma ferramenta open source de construção de software. Ela foi desenvolvida utilizando-se a linguagem de programação Python e fornece suporte à criação de instâncias de aplicações, principalmente àquelas escritas em Python, fornecendo ferramentas para criação de aplicações através de peças, denominadas parts, que podem ser módulos Python, servidores web, servidores de aplicação e etc.

Git: é um sistema de controle de versão distribuído e um sistema de gerenciamento de código fonte, com ênfase em velocidade. O Git foi inicialmente projetado e desenvolvido por Linus Torvalds para o desenvolvimento do kernel do sistema operacional Linux, mas foi também adotado por muitos outros projetos.

GitHub: é um serviço de web hosting compartilhado para projetos que usam o controle de versionamento Git. É escrito em Ruby on Rails pelos desenvolvedores da empresa Logical Awesome. O GitHub possui planos comerciais e gratuitos para projetos de código aberto, como é o caso do Portal Modelo.

mr.developer: é uma extensão do zc.buildout que torna simples o trabalho com buildouts que contêm muitos pacotes dos quais é necessário desenvolver algum.

Pré-requisitos do Ambiente de Trabalho

Para trabalhar no desenvolvimento do Portal Modelo é necessário o seguinte:

  • Uma conta no GitHub.
  • O Git instalado na estação de trabalho.
  • Python 2.7 instalado.
  • Dependências de desenvolvimento do sistema operacional da estação de trabalho.
  • Aprender Plone.

Abrindo uma Conta no GitHub

Para abrir uma conta no GitHub só é preciso visitar o endereço http://github.com e se cadastrar. O GitHub não tem custo para usuários individuais que não armazenam nele repositórios privados.

Instalação do Git

Para instalar o Git numa máquina rodando o sistema operacional GNU/Linux Ubuntu ou Debian só é preciso executar o seguinte comando:

$ sudo apt-get install git

Quer aprender mais sobre o Git?

Geração das Chaves SSH para o GitHub

Caso ainda não tenha gerado as chaves SSH, acesse a página SSH Keys e siga o passo-a-passo descrito no link generating SSH keys.

Instalação de Dependências para Desenvolvimento

Antes de baixar o código fonte e compor o ambiente de desenvolvimento do Portal Modelo, você precisará instalar as dependências do sistema operacional. As dependências são as mesmas exigidas para instalar o portal usando o instalador unificado, portanto, execute os mesmos passos do Guia de Instalação do Portal Modelo 3, no tópico Dependências.

Aprendendo Plone

Como o Portal Modelo é feito com base no CMS Plone, você precisará conhecer o Plone para implementar coisas para o portal ou alterá-lo. Você pode começar pelo treinamento oficial e depois ler sua documentação e aprender sobre sua API. Há também um bom guia de padrões de desenvolvimento que lhe ajudará durante a codificação.

Instalando o Portal Modelo a Partir do Código Fonte

O Buildout de desenvolvimento do Portal Modelo está armazenado no GitHub no endereço:

https://github.com/interlegis/portalmodelo

Para começar a trabalhar é preciso clonar este repositório, com o seguinte comando:

$ git clone git@github.com:interlegis/portalmodelo.git

Agora, dentro da pasta portalmodelo tem uma cópia do buildout do Portal Modelo. Entrar nesse diretório:

$ cd portalmodelo

O pacote contém uma configuração de desenvolvimento que vai ajudar no processo. É melhor usar ela por padrão criando um link simbólico com o nome buildout.cfg apontando à configuração de desenvolvimento:

$ ln -s development.cfg buildout.cfg

Nota: Há também um arquivo chamado buildout.d/base.cfg que pode ser linkado no lugar do development.cfg acima, para se obter uma instalação padrão do Portal Modelo, substituindo o instalador unificado. Da mesma forma, há o arquivo production.cfg que pode ser usado para criar um ambiente de produção com tudo o que o portal precisa para ser publicado na web. Nesse caso os comandos abaixo terão que ser rodados com permissão de super usuário.

Agora é possível fazer o bootstrap da configuração:

$ python bootstrap.py

O script bootstrap.py é o encarregado de inicializar o processo de instalação do ambiente, ele vai descarregar os pacotes necessários para poder executar a configuração, vai criar várias pastas e vai gerar o script bin/buildout, que deverá ser executado logo em seguida:

$ ./bin/buildout

O script bin/buildout faz várias coisas no contexto do Portal Modelo, as principais são:

  • Baixar o Plone e as dependências do projeto
  • Criar o script de inicialização do Plone
  • Criar o script de testes
  • Inicialização de um site padrão do Portal Modelo
  • Instalação de helper scripts para várias outras tarefas

Todas essas funcionalidades estão declaradas no arquivo development.cfg e em vários outros estendidos por ele. Alguns desses arquivos são listados na sequência:

  • buildout.d/base.cfg: é a configuração base, contém todos os parâmetros que são comuns tanto para a configuração de desenvolvimento, quanto para a configuração de produção.
  • buildout.d/sources.cfg: contém os endereços dos repositórios dos pacotes que conformam o Portal Modelo. Estas fontes são usadas pela extensão mr.developer para baixar o código fonte dos pacotes quando precisamos solucionar algum problema em uma dependência.
  • buildout.d/versions.cfg: contém uma lista das dependências e suas versões utilizadas no contexto do Portal Modelo. Este arquivo só inclui dependências não listadas no core do Plone, ou versões de dependências que foi necessário modificar para corrigir algum problema ou adicionar alguma nova funcionalidade ao Portal Modelo.
  • checkouts.cfg: contém uma lista de pacotes em modo desenvolvimento. Normalmente esta lista se encontra vazia, mas no processo de correção de problemas ou desenvolvimento de novas funcionalidades irá listar o nome dos pacotes que estão sendo utilizados em modo desenvolvimento.

Ao rodar o script bin/buildout ele vai pegar todas as dependências listadas nos arquivos de configuração e vai criar um Plone site com a configuração padrão do Portal Modelo.

Atualização

Antes de realizar qualquer modificação nos códigos fontes, convém atualizar o portal utilizando a sequência abaixo:

$ cd portalmodelo
$ git pull
$ ./bin/buildout
 ou
$ ./bin/develop rb (roda o último buildout)

Acessando o Portal Modelo

Para executar o servidor do Portal Modelo use o seguinte comando:

$ ./bin/instance fg

Isso irá levantar uma instância do Portal Modelo, que poderá ser acessada no navegador de internet local, através do endereço http://localhost:8080/portal, com o usuário admin e a senha interlegis.

Exemplos de Desenvolvimento

Para ilustrar o processo de desenvolvimento no Portal Modelo serão utilizado dois exemplos. No primeiro serão feitas modificações para consertar um problema fictício em um pacote. No segundo, será criado um novo pacote e será incluído ele no Portal Modelo.

Correção de Problemas ou Adição de Funcionalidades em Pacotes Existentes

Neste exemplo será consertado um bug fictício no pacote interlegis.portalmodelo.ombudsman.

A primeira coisa que precisa ser feita é editar o arquivo checkouts.cfg e adicionar o nome do pacote que vai ficar em modo de desenvolvimento:

auto-checkout =
	interlegis.portalmodelo.ombudsman

Então, ao rodar o script bin/buildout, o mr.developer vai trazer o código fonte do pacote e vai colocá-lo no diretório src. É possível então consertar o bug e rodar os testes para verificar se tudo deu certo:

$ bin/test

Quando a mudança tiver sido aceita é preciso fazer um novo release do pacote que estava em desenvolvimento.

Editar o arquivo buildout.d/versions.cfg e alterar o número da nova versão. É preciso lembrar de remover a mudança feita no arquivo checkouts.cfg para evitar que o pacote continue em modo de desenvolvimento.

Ao rodar novamente o script bin/buildout é possível ver que a nova versão é baixada e que o Portal Modelo foi atualizado com sucesso.

Adição de Novos Pacote ao Portal Modelo

O procedimento é muito parecido com o anterior. Primeiro é preciso o endereço do repositório do novo pacote.

Com essa informação é preciso editar o arquivo buildout.d/sources.cfg para adicionar o novo endereço:

[sources]
interlegis.portalmodelo.novo = git git@github.com:intelegis/interlegis.portalmodelo.novo.git

Isso indica que o pacote interlegis.portalmodelo.novo está armazenado no GitHub e é possível utilizar o protocolo Git para pegar o código fonte dele.

Depois é preciso editar o arquivo checkouts.cfg e adicionar o nome do novo pacote:

auto-checkout =
	interlegis.portalmodelo.novo

Ao rodar o script bin/buildout o código do novo pacote é incluso no diretório src.

O procedimento após um release é o mesmo definido acima, sem esquecer de adicionar uma entrada no arquivo buildout.d/versions.cfg para o novo pacote.

Lista de Discussões

As atividades de desenvolvimento do Portal Modelo são discutidas na lista PortalModelo-dev. Para participar do grupo envie e-mail para portalmodelo-dev-join ARROBA listas.interlegis.gov.br e clique no link que irá receber no seu e-mail. Veja o histórico do grupo!

Obs.: Este grupo de discussões não deve ser utilizado para dúvidas sobre o uso do Portal Modelo, somente para discussões em torno das atividades de desenvolvimento do sistema. Para dúvidas utilize a lista do GITEC.

Repositórios de Códigos

  1. https://github.com/interlegis/portalmodelo
  2. https://github.com/interlegis/portalmodelo-unifiedinstaller
  3. https://github.com/interlegis/interlegis.portalmodelo.api
  4. https://github.com/interlegis/interlegis.portalmodelo.buscadores
  5. https://github.com/interlegis/interlegis.portalmodelo.migrator
  6. https://github.com/interlegis/interlegis.portalmodelo.ombudsman
  7. https://github.com/interlegis/interlegis.portalmodelo.pl
  8. https://github.com/interlegis/interlegis.portalmodelo.policy
  9. https://github.com/interlegis/interlegis.portalmodelo.theme
  10. https://github.com/interlegis/interlegis.portalmodelo.transparency
  11. https://github.com/interlegis/interlegis.intranetmodelo.departments
  12. https://github.com/interlegis/interlegis.intranetmodelo.policy

Voltar para o ProjetoPortalModelo

Última modificação 3 anos atrás Última modificação em 05/08/2015 14:53:18
 

The contents and data of this website are published under license:
Creative Commons 4.0 Brasil - Atribuir Fonte - Compartilhar Igual.