Skip to content

igor-primo/wiki2

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

36 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Wiki

Novo deploy para a Wiki.

Arquitetura do projeto

Nesse projeto existem as seguintes coisas:

  1. Um arquivo Dockerfile para gerar uma imagem customizada da Mediawiki.
  2. Um arquivo .gitlab-ci.yml para configurar uma carga de trabalho de Integração Contínua.
  3. Pacotes releases de plugins utilizados pelo Tribunal para o Mediawiki.
  4. Arquivos template de configuração de deploy, service e ingress para configuração do software no Kubernetes.

Construção da imagem

A construção da imagem customizada da Mediawiki tem como partida a versão mais recente da Mediawiki na época da atualização da Wiki (v1.40, de Outubro de 2023).

A receita Dockerfile utiliza um script para construir localmente (na imagem) software para realização de tarefas LDAP.

Além disso, o mesmo arquivo Dockerfile instala manualmente na imagem um número de dependências requeridas pelo uso do Tribunal. São elas:

  • mediawiki-extensions-LDAPAuthentication2-2.0.0.tar.gz
  • mediawiki-extensions-LDAPProvider-2.0.0.tar.gz
  • MobileFrontend-REL1_40-6d77c0b.tar.gz
  • PluggableAuth-REL1_40-764e1ec.tar.gz
  • Foreground-REL1_40-cd870ce.tar.gz
  • Vector-REL1_40-31f26e6.tar.gz

Existe incompatibilidade entre a versão de alguns desses pacotes e a versão mais recente da Mediawiki verificado na data 23-05-2024.

Configuração do deploy no Kubernetes

O arquivo que configura a pipeline CI no Gitlab é o .gitlab-ci.yml. Os jobs são:

  • build: constrói a imagem customizada da Mediawiki a partir do Dockerfile nesse repositório e copia a imagem para o repositório de imagens Docker do Tribunal.
  • deploy_homolog: invoca helm para construir o artefato desejado, que é o yaml para configuração do software no Kubernetes. Também instala a aplicação no Kubernetes.
  • stop_homolog: invoca helm para desinstalar a aplicação do Kubernetes. Esse job é manual.
  • deploy_prod: invoca helm para construir o artefato desejado, que é o yaml para configuração do software no Kubernetes. Também instala a aplicação no Kubernetes. Esse job é manual.
  • stop_prod: invoca helm para desinstalar a aplicação do Kubernetes. Manual.

Nota importante sobre implementação da Mediawiki

O projeto Mediawiki armazena binários, como imagens, vídeos, etc., utilizados pelas páginas da wiki em um sistema de arquivos e o caminho para esses artefatos é armazenado em uma tabela no banco de dados da aplicação.

O armazenamento dos binários fica em um disco virtual representado por um PV (Persisten Volume) no Kubernetes. O arquivo template de deploy especifica um PVC (Persistent Volume Claim) para utilizar o NFS. Esse arquivo está no caminho ./chart/wiki/templates/wiki-deploy.yaml.

O caminho e credenciais para acesso ao banco de dados são especificados em variáveis de ambiente no Gitlab e resgatados pela aplicação através da função ‘getenv()’ no arquivo ‘LocalSettings.php’, que é copiado para imagem customizada na ocasião de sua criação. Esse arquivo configura a aplicação.

Após cada atualização do Mediawiki é necessário verificar se o esquema de banco de dados precisa de alguma atualização. Essa atualização pode ser feita pela interface Web ou através da execução do script php que fica no caminho /var/www/html/maintenance/update.php. Instruções para como realizar a atualização está na documentação da Mediawiki.

Sumário de ações necessárias para aplicar a atualização

  • Construir o PV para a nova versão da Wiki. Aqui deve-se garantir que somente o conteúdo de imagens/, do antigo NFS, i.e., os diretórios e arquivos dentro de imagens/ e somente eles sejam copiados para o PV, porque o arquivo de deploy monta o diretório ‘/var/www/html/images’ no PV.
  • As variáveis em .gitlab-ci.yaml devem ser verificadas e deve-se confirmar que as variáveis de ambiente configuradas no Gitlab estejam corretas.
  • Pode-se utilizar o Dockerfile neste repositório para construir uma imagem local para executar o script de atualização do esquema de banco de dados.
    # Constrói a imagem.
    docker build --progress=plain -t wiki-img .
    # Faz login no container.
    docker run -e DB_SERVER="db_server" -e DB_NAME="db_name" -e DB_USER="db_user" -e DB_PASSWORD="db_password" --rm -it wiki-img bash
    # Executa o script de atualização.
    php maintenance/run.php update
        
  • Após qualquer modificação eventual de configuração, fazer commit, criar tag e subir para o repositório remoto. O deploy de produção é ativado manualmente.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published