Skip to content

Commit

Permalink
Merge remote-tracking branch 'secultce/develop' into develop
Browse files Browse the repository at this point in the history
  • Loading branch information
lpirola committed Jul 24, 2024
2 parents be76920 + 97be0a8 commit 60a79e5
Show file tree
Hide file tree
Showing 135 changed files with 8,763 additions and 1,129 deletions.
7 changes: 7 additions & 0 deletions .github/pull_request_template.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
| Q | A |
|---------------|---------------------------------------------------------------------------------------------------------------------------|
| Branch? | 7.2 for features / 5.4, 6.4, 7.0, and 7.1 for bug fixes <!-- see below --> |
| Bug fix? | yes/no |
| New feature? | yes/no <!-- please update src/**/CHANGELOG.md files --> |
| Deprecations? | yes/no <!-- please update UPGRADE-*.md and src/**/CHANGELOG.md files --> |
| Issues | Fix #... <!-- prefix each issue number with "Fix #", no need to create an issue if none exists, explain below instead --> |
21 changes: 1 addition & 20 deletions .github/workflows/cicd-dev.yml
Original file line number Diff line number Diff line change
@@ -1,27 +1,8 @@
name: ci/cd-dev

on:
pull_request:
branches:
- develop
types:
- closed
- ready_for_review
- review_requested

workflow_dispatch:
on: [pull_request]

jobs:
CODE_STYLE:
name: PHP-CS-Fixer
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Run PHP-CS-Fixer
uses: erkenes/php-cs-fixer-action@main
with:
args: '--dry-run --diff -vvv'

BUILD:
if: github.event.pull_request.merged == true
runs-on: ubuntu-latest
Expand Down
58 changes: 58 additions & 0 deletions .github/workflows/tests.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,58 @@
name: tests

on:
pull_request:
branches:
- develop

jobs:
CODE_STYLE:
name: CODE STYLE
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Run PHP-CS-Fixer
uses: erkenes/php-cs-fixer-action@main
with:
args: '--dry-run --diff -vvv'

PHP_UNIT:
name: PHP UNIT
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4.1.1

- name: Checkout submodules
run: git submodule update --init --recursive

- name: Ajustar branch do MultipleLocalAuth
run: cd src/plugins/MultipleLocalAuth && git checkout v3.0.0

- name: Inicializar o mapa em modo develop
run: cd dev && docker-compose run -d --service-ports mapas

- name: Esperar o serviço inicializar
run: sleep 60

- name: Instalar os pacotes
run: docker exec -t $(docker-compose -f dev/docker-compose.yml ps -q mapas) composer.phar install

- name: Criar o arquivo .env na pasta app
run: docker exec -t $(docker-compose -f dev/docker-compose.yml ps -q mapas) cp app/.env.example app/.env

- name: Configurar o arquivo .env na pasta app
run: docker exec -t $(docker-compose -f dev/docker-compose.yml ps -q mapas) sed -i 's/APP_ENV=/APP_ENV=local/g' app/.env

- name: Executando as migrations do banco de dados
run: docker exec -t $(docker-compose -f dev/docker-compose.yml ps -q mapas) php app/bin/doctrine migrations:migrate -n

- name: Executar as fixtures
run: docker exec -t $(docker-compose -f dev/docker-compose.yml ps -q mapas) php app/bin/console app:fixtures

- name: Executar os testes
uses: php-actions/phpunit@master
with:
version: 10.5
php_version: 8.2
bootstrap: vendor/autoload.php
args: app/tests
5 changes: 3 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -26,11 +26,12 @@ Agradecemos profundamente a todos que contribuíram até a última versão do pr
- [Nova Arquitetura](./app/README.md) de arquivos e diretórios
- [Conexão](./app/README.md) com o Banco de Dados
- [Como colaborar](./help/CREATE-ISSUES.md) criando issues
- [Como implementar](./app/CREATE-PULL-REQUESTS.md) novos códigos através de pull requests
- [Como implementar](./help/CREATE-PULL-REQUESTS.md) novos códigos através de pull requests
- [Fluxo](./help/DEV-FLOW.md) de Desenvolvimento

## Tecnologias

- PHP7^
- PHP8.1^
- Symfony packages
- Slim packages
- Doctrine
Expand Down
1 change: 1 addition & 0 deletions app/.env.example
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
APP_ENV=
3 changes: 2 additions & 1 deletion app/.gitignore
Original file line number Diff line number Diff line change
@@ -1 +1,2 @@
vendor/
vendor/
.env
94 changes: 93 additions & 1 deletion app/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -278,6 +278,43 @@ public function __construct()

---

## Migrations
Migrations são a forma (correta) de fazer um versionamento do banco de dados, nesta parte da aplicação isso é fornecido pela biblioteca `doctrine/migrations` mas no core do MapaCultural isso ainda é feito por uma decisão técnica interna chamada `db-updates.php`

<details>
<summary>Como criar uma nova migration</summary>

#### Passo 1 - Criar uma nova classe no diretório `/app/migrations`

```php
<?php

declare(strict_types=1);

namespace App\Migrations;

use Doctrine\DBAL\Schema\Schema;
use Doctrine\Migrations\AbstractMigration;

final class Version20241231235959 extends AbstractMigration
{
public function up(Schema $schema): void
{
//$this->addSql('CREATE TABLE ...');
}

public function down(Schema $schema): void
{
//$this->addSql('DROP TABLE ...');
}
}
```

Note que o nome da classe deve informar o momento de sua criação, para que seja mantida uma sequencia temporal da evolução do esquema do banco de dados.

> Documentação oficial das migrations do Doctrine: <https://www.doctrine-project.org/projects/doctrine-migrations/en/3.8/reference/generating-migrations.html>
</details>
## Command
Comandos são entradas via CLI (linha de comando) que permitem automatizar alguns processos, como rodar testes, veririfcar estilo de código, e debugar rotas

Expand Down Expand Up @@ -388,7 +425,7 @@ Para criar um no cenário de teste funcional, basta adicionar sua nova classe no
```php
<?php

namespace App\Tests;
namespace App\Tests\Functional;

class MeuTest extends AbstractTestCase
{
Expand Down Expand Up @@ -417,8 +454,38 @@ Para executar os testes veja a seção <a href="#console-commands">Console Comma

---

## DI (Injeção de dependência)
Com a injeção de dependência diminuímos o acoplamento das nossas classes. E a razão para isso ser tão importante está no princípio da inversão de dependência em que o código deve depender de abstrações e não de implementações concretas.

Documentação PHP-DI: https://php-di.org

Todo o código se encontra no diretório `/app/config`, no arquivo `di.php`.

## Console Commands

<details>
<summary>CACHE CLEAR</summary>

### Limpar cache
Para executar o comando de limpar cache basta entrar no container da aplicação e executar o seguinte comando:

```shell
php app/bin/console cache:clear
```

</details>

<details>
<summary>COMMAND SQL</summary>

### Executar código SQL
Para executar um comando SQL basta entrar no container da aplicação e executar o seguinte comando:

```shell
php app/bin/console database:sql {sql}
```
O argumento chamado de `sql` é requerido e é o comando a ser executar no banco de dados.
</details>

<details>
<summary>TESTS</summary>
Expand Down Expand Up @@ -451,11 +518,36 @@ php app/bin/console app:code-style

:memo: Fixtures são dados falsos com a finalidade de testes.

#### Configuração do ambiente

Antes de executar os fixtures, é necessário criar um arquivo `.env` dentro da pasta app (/app/.env). Este arquivo deve conter a configuração de ambiente necessária. Um arquivo de exemplo chamado `.env.example` foi fornecido para facilitar esse processo.

1. Copie o arquivo `.env.example` para `.env`:

```sh
cp .env.example .env
```

2. Abra o arquivo `.env` e configure as variáveis de ambiente. Para fins de desenvolvimento, você pode definir a variável `APP_ENV` como `local`:

```sh
APP_ENV=local
```


#### Executando os Fixtures


Para executar o conjunto de fixtures basta entrar no container da aplicação e executar
```
php app/bin/console app:fixtures
```
> **Observação:**
> Se o arquivo `.env` não for encontrado, você verá a seguinte mensagem de erro:
>
> ```sh
> Please create a .env file in the root directory (/app/.env)
> ```
</details>

<details>
Expand Down
22 changes: 19 additions & 3 deletions app/bin/console
Original file line number Diff line number Diff line change
Expand Up @@ -4,22 +4,38 @@
require dirname(__DIR__, 2).'/vendor/autoload.php';
require dirname(__DIR__, 2).'/public/bootstrap.php';

use App\Application\Environment;
use App\Command\ClearCacheCommand;
use App\Command\CodeStyleCommand;
use App\Command\DatabaseCommand;
use App\Command\DebugRouterCommand;
use App\Command\FixturesCommand;
use App\Command\TestsCommand;
use App\Command\WelcomeCommand;
use Symfony\Component\Console\Application;
use Symfony\Component\Dotenv\Dotenv;
use Symfony\Component\Filesystem\Filesystem;

$env = Environment::getEnvData();
$dotenv = new Dotenv();
$dotenv->load($env);

$application = new Application();
$entityManager = $app->em ?? null;

$application->addCommands([
new WelcomeCommand(),
new TestsCommand(),
new ClearCacheCommand(new Filesystem()),
new CodeStyleCommand(),
new FixturesCommand($entityManager),
new DebugRouterCommand(),
new TestsCommand(),
new WelcomeCommand(),
]);

if (true === Environment::isLocal()) {
$application->addCommands([
new DatabaseCommand(),
new FixturesCommand($entityManager)
]);
}

$application->run();
58 changes: 54 additions & 4 deletions app/bin/doctrine
Original file line number Diff line number Diff line change
Expand Up @@ -4,14 +4,64 @@
require dirname(__DIR__, 2).'/vendor/autoload.php';
require dirname(__DIR__, 2).'/public/bootstrap.php';

use App\Application\Environment;
use Doctrine\Migrations\Configuration\Configuration as MigrationsConfiguration;
use Doctrine\Migrations\Configuration\EntityManager\ExistingEntityManager;
use Doctrine\Migrations\Configuration\Migration\ExistingConfiguration;
use Doctrine\Migrations\DependencyFactory;
use Doctrine\Migrations\Metadata\Storage\TableMetadataStorageConfiguration;
use Doctrine\Migrations\Tools\Console\Command as MigrationsCommand;
use Doctrine\ORM\Tools\Console\ConsoleRunner;
use Doctrine\ORM\Tools\Console\EntityManagerProvider\SingleManagerProvider;
use Doctrine\ORM\Tools\Console\Command\SchemaTool;

$entityManager = $app->em ?? null;

$commands = [];
$application = ConsoleRunner::createApplication(
new SingleManagerProvider($entityManager)
);

$configuration = new MigrationsConfiguration();
$configuration->addMigrationsDirectory(
'App\Migrations',
'./app/migrations'
);
$configuration->setAllOrNothing(true);
$configuration->setCheckDatabasePlatform(false);

$storageConfiguration = new TableMetadataStorageConfiguration();
$storageConfiguration->setTableName('doctrine_migration_versions');
$configuration->setMetadataStorageConfiguration($storageConfiguration);

ConsoleRunner::run(
new SingleManagerProvider($entityManager),
$commands
$dependencyFactory = DependencyFactory::fromEntityManager(
new ExistingConfiguration($configuration),
new ExistingEntityManager($entityManager)
);

$application->setCatchExceptions(true);

$application->addCommands([
new MigrationsCommand\CurrentCommand($dependencyFactory),
new MigrationsCommand\DiffCommand($dependencyFactory),
new MigrationsCommand\DumpSchemaCommand($dependencyFactory),
new MigrationsCommand\ExecuteCommand($dependencyFactory),
new MigrationsCommand\GenerateCommand($dependencyFactory),
new MigrationsCommand\LatestCommand($dependencyFactory),
new MigrationsCommand\ListCommand($dependencyFactory),
new MigrationsCommand\MigrateCommand($dependencyFactory),
new MigrationsCommand\RollupCommand($dependencyFactory),
new MigrationsCommand\StatusCommand($dependencyFactory),
new MigrationsCommand\SyncMetadataCommand($dependencyFactory),
new MigrationsCommand\UpToDateCommand($dependencyFactory),
new MigrationsCommand\VersionCommand($dependencyFactory),
]);

if (true === Environment::isLocal()) {
$application->addCommands([
new SchemaTool\UpdateCommand(),
new SchemaTool\CreateCommand(),
new SchemaTool\DropCommand(),
]);
}

$application->run();
Loading

0 comments on commit 60a79e5

Please sign in to comment.