Code Monkey home page Code Monkey logo

novo-site's People

Watchers

Raphael de Almeida avatar Vitor Mattos avatar Lucas Azevedo avatar  avatar  avatar Fábio Monteiro avatar

novo-site's Issues

Acrescentar licença AGPL

Descrição:

Um projeto no GitHub, ou em qualquer outro lugar, precisa de uma licença que defina claramente os termos e condições de uso do código-fonte. Isso é essencial para que as pessoas saibam como podem utilizar o projeto, mesmo que o código esteja disponível abertamente.

Definição de Pronto:

  • Incluir uma cópia da Licença GNU Affero General Public License (AGPL) em um arquivo chamado "LICENSE.md" na raiz do repositório. A AGPL é uma licença de software livre que estabelece as condições para o uso, modificação e distribuição do código-fonte.

Esta issue tem o objetivo de garantir a transparência e a legalidade do uso do código do projeto, tornando-o acessível para outras pessoas interessadas, ao mesmo tempo em que define claramente os direitos e obrigações de acordo com a licença AGPL.

Navegar para pasta do projeto antes de executar o Jigsaw

Aparentemente é necessário executar o Jigsaw a partir da raiz do projeto para que o autoload funcione corretamente:

root@f187cebb98bc:/# /var/www/html/vendor/bin/jigsaw 

Fatal error: Uncaught Error: Class "TightenCo\Jigsaw\Container" not found in /var/www/html/vendor/tightenco/jigsaw/jigsaw on line 14

Error: Class "TightenCo\Jigsaw\Container" not found in /var/www/html/vendor/tightenco/jigsaw/jigsaw on line 14

Call Stack:
    0.0002     475152   1. {main}() /var/www/html/vendor/bin/jigsaw:0
    0.0002     481656   2. include('/var/www/html/vendor/tightenco/jigsaw/jigsaw') /var/www/html/vendor/bin/jigsaw:119

root@f187cebb98bc:/# cd /var/www/html
root@f187cebb98bc:/var/www/html# ./vendor/bin/jigsaw 
Jigsaw 1.7.1

Usage:
  command [options] [arguments]

Options:
  -h, --help            Display help for the given command. When no command is given display help for the list command
  -q, --quiet           Do not output any message
  -V, --version         Display this application version
      --ansi|--no-ansi  Force (or disable --no-ansi) ANSI output
  -n, --no-interaction  Do not ask any interactive question
  -v|vv|vvv, --verbose  Increase the verbosity of messages: 1 for normal output, 2 for more verbose output and 3 for debug

Available commands:
  build       Build your site.
  completion  Dump the shell completion script
  help        Display help for a command
  init        Scaffold a new Jigsaw project.
  list        List commands
  serve       Serve local site with php built-in server.

Criar workflow de deploy

📖 Descrição

Nossa meta é criar um ambiente de desenvolvimento para a próxima versão do nosso site, permitindo que nossa equipe visualize o progresso enquanto implementamos o novo design. Para isso, vamos utilizar o GitHub Pages, a funcionalidade de hospedagem de sites estáticos do GitHub. Como estamos usando um gerador de site estático (SSG), é essencial compilar os templates e arquivos fonte em HTML a cada commit. Para automatizar esse processo, vamos configurar um fluxo de trabalho do GitHub Actions.

🥇 Critério de aceitação

  • Criar um workflow: Crie um novo arquivo chamado deploy.yml para o GitHub Actions. Você pode utilizar nosso workflow do site atual como referência.
  • Adaptar para o Jigsaw: Se você usou o workflow atual como referência, siga estas etapas para adaptá-lo ao Jigsaw em vez do Sculpin:
    • Alterar passo "Generate static files": Modifique este passo para executar o comando vendor/bin/jigsaw build production, que é o comando necessário para compilar o site Jigsaw.
    • Alterar passo "Deploy": Atualize este passo para publicar o diretório build_production, que é o diretório onde os arquivos compilados do Jigsaw serão armazenados.
  • Atualizar comentários: Certifique-se de atualizar quaisquer comentários no fluxo de trabalho que fazem referência a comandos ou configurações específicas do Sculpin, para que reflitam as configurações do Jigsaw.

Instalar pacotes Composer no entrypoint

Atualmente o entrypoint não executa o comando composer install para instalar as dependências do projeto, resultando no seguinte erro ao subir o container:

novo-site-backend-1  | Could not open input file: /var/www/html/vendor/bin/jigsaw

Proposta: não utilizar caminho /var/www e usuário www-data

Inspirado nas ótimas imagens do projeto LinuxServer.io, tenho feito essas duas coisas nos meus ambientes de desenvolvimento Docker nos últimos anos:

  • Montar o projeto em /app para ter o código em um caminho simples, direto, que não existe dentro do container e que faz sentido para o desenvolvimento de qualquer tipo de projeto.
  • Criar um novo usuário: Evita problemas de permissão ao criar arquivos na home do usuário. Por exemplo, tivemos problemas no nextcloud-docker-development quando npm tenta criar seu cache na home do usuário www-data que é /var/www, mas pertence ao usuário root.

Não há nenhuma urgência nessa issue.

Iniciar projeto usando Jigsaw

Objetivo

O novo site da comunidade será feito utilizando o gerador de sites estáticos Jigsaw.
No momento o repositório está vazio, precisamos iniciar um novo projeto usando o comando init do gerador.

Checklist

  • Criar um fork do repositório https://github.com/PHPRio/novo-site
  • Clonar localmente
  • Criar uma nova branch
  • Iniciar um novo projeto do Jigsaw usando o comando init. Note que não usaremos os starter templates oferecidos pela ferramenta.
  • Realizar o commit dos arquivos criados
  • Enviar (git push) a branch para o GitHub e abrir um PR (proposta de contribuição)

Corrigir apelidos para jigsaw na imagem Docker

Atualmente temos dois apelidos sendo criados na imagem Docker para simplificar os comandos de desenvolvimento e produção do site:

RUN echo "alias jigsaw=./vendor/bin/jigsaw" >> ~/.bashrc && \
echo "alias compile='./vendor/bin/jigsaw build'" >> ~/.bashrc && \

Porém, esses aliases estão sendo criados no .bashrc da home do usuário atual no momento do build (usuário root), e o container é executado em outro usuário (www-data). Por esse motivo, os aliases não estão funcionando.

Criar ambiente de desenvolvimento no Docker

📖 Descrição

Para desenvolver o novo projeto de forma consistente e facilitar a colaboração entre os membros da comunidade PHP Rio, é essencial ter um ambiente de desenvolvimento padronizado e isolado. O uso de contêineres Docker permite que todos os desenvolvedores tenham a mesma configuração, reduzindo problemas de compatibilidade e facilitando a escalabilidade do ambiente.

Objetivos

  • Criar um Dockerfile que inclua, inicialmente, a instalação do PHP 8, Composer e Git.
  • Configurar um docker-compose para orquestrar o ambiente.
  • Fornecer uma estrutura flexível para a adição de serviços adicionais no futuro.

🥇 Critério de aceitação

  • O Dockerfile foi criado e documenta, inicialmente, a instalação do PHP 8, Composer e Git.
  • O docker-compose foi criado e permite que o ambiente seja iniciado com sucesso.
  • O ambiente inicia sem erros ou problemas.
  • O ambiente é configurado de forma que seja fácil adicionar novos serviços no futuro, se necessário.

Executar serviço com UID e GID do host

Atualmente o serviço está sendo executado como root, o que causa problemas de permissão para os arquivos criados por comandos executados nele (dependências do Composer e saída do Jigsaw):

$ docker compose exec backend ls -l /var/www/html -- | grep root
drwxr-xr-x  3 root     root       4096 Dec  6 17:59 build_local
drwxr-xr-x 24 root     root       4096 Dec  6 17:59 vendor

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.