diff --git a/records/infrastructure/KB-INFRA-001-glpi-plugin-path.md b/records/infrastructure/KB-INFRA-001-glpi-plugin-path.md index 48845f2..1b5c6e2 100644 --- a/records/infrastructure/KB-INFRA-001-glpi-plugin-path.md +++ b/records/infrastructure/KB-INFRA-001-glpi-plugin-path.md @@ -14,7 +14,7 @@ created_at: 2026-05-01 updated_at: 2026-05-01 applies_to: - glpi/glpi:latest - - macOS + OrbStack + - macOS + OrbStack / Linux Docker Swarm - ambiente local de desenvolvimento related_records: [] --- @@ -23,7 +23,7 @@ related_records: [] O plugin `GLPI Matrix` nao era exibido na interface do GLPI, mesmo existindo no host e no container. # Sintoma observavel -- Plugin presente em `docker/glpi/plugins/glpimatrix`. +- Plugin presente em `/home/glpi/glpi_dev/plugins/glpimatrix`. - Interface de plugins do GLPI nao listava o plugin. # Causa raiz @@ -35,16 +35,16 @@ A imagem `glpi/glpi:latest` usada neste projeto executa o core em `/var/www/glpi # Correcao aplicada No `docker-compose.yml`, atualizar volumes do servico `glpi`: -- `./docker/glpi/plugins:/var/www/glpi/plugins` -- `./docker/glpi/files:/var/glpi/files` -- `./docker/glpi/config:/var/glpi/config` -- `./docker/glpi/marketplace:/var/glpi/marketplace` +- `/home/glpi/glpi_dev/plugins/:/var/www/glpi/plugins` +- `/home/glpi/glpi_dev/files:/var/glpi/files` +- `/home/glpi/glpi_dev/config:/var/glpi/config` +- `/home/glpi/glpi_dev/marketplace/:/var/glpi/marketplace` # Validacao padrao Executar: 1. `docker compose up -d --force-recreate glpi` -2. `docker exec glpi11-app ls -la /var/www/glpi/plugins` -3. `curl -s -o /dev/null -w "%{http_code}\n" http://localhost:8081` +2. `docker exec devportal_glpi ls -la /var/www/glpi/plugins` +3. `curl -s -o /dev/null -w "%{http_code}\n" http://localhost` Esperado: - diretorio do plugin visivel em `/var/www/glpi/plugins`; diff --git a/records/plugin-dev/KB-PLUGIN-011-mindplace-release-zip-procedure.md b/records/plugin-dev/KB-PLUGIN-011-mindplace-release-zip-procedure.md index 3fc0429..f16c1e4 100644 --- a/records/plugin-dev/KB-PLUGIN-011-mindplace-release-zip-procedure.md +++ b/records/plugin-dev/KB-PLUGIN-011-mindplace-release-zip-procedure.md @@ -38,7 +38,7 @@ O ZIP gerado automaticamente pelo GitHub (Source code) **não inclui** arquivos ## Procedimento para gerar o ZIP de release ```bash -cd docker/glpi/plugins/mindplace +cd /home/glpi/glpi_dev/plugins/mindplace zip -r mindplace-1.0.0.zip . \ --exclude "*.git*" \ diff --git a/records/plugin-dev/KB-PLUGIN-013-mindplace-plugin-publication-runbook.md b/records/plugin-dev/KB-PLUGIN-013-mindplace-plugin-publication-runbook.md index 57fe651..3b0456e 100644 --- a/records/plugin-dev/KB-PLUGIN-013-mindplace-plugin-publication-runbook.md +++ b/records/plugin-dev/KB-PLUGIN-013-mindplace-plugin-publication-runbook.md @@ -59,7 +59,7 @@ export FORGEJO_TOKEN="seu_token_aqui" ```bash # Na raiz do projeto GLPI11: -./bin/mindplace-release.sh ./docker/glpi/plugins/ +./bin/mindplace-release.sh /home/glpi/glpi_dev/plugins/ ``` ### O que o script faz automaticamente @@ -87,7 +87,7 @@ O script é seguro para rodar múltiplas vezes: # 'version' => '1.0.0' → '1.1.0' # 2. Rodar o script — ele detecta a nova versão e cria nova Release -./bin/mindplace-release.sh ./docker/glpi/plugins/meu-plugin +./bin/mindplace-release.sh /home/glpi/glpi_dev/plugins/meu-plugin ``` ### Notas importantes diff --git a/records/plugin-dev/KB-PLUGIN-014-getfromdbbycrit-stale-fields.md b/records/plugin-dev/KB-PLUGIN-014-getfromdbbycrit-stale-fields.md index 7509108..ddabe24 100644 --- a/records/plugin-dev/KB-PLUGIN-014-getfromdbbycrit-stale-fields.md +++ b/records/plugin-dev/KB-PLUGIN-014-getfromdbbycrit-stale-fields.md @@ -119,6 +119,6 @@ Quando em dúvida, **sempre instancie um objeto novo** por iteração. O overhea ## Onde isso pegou na vida real -`docker/glpi/plugins/mindplace/src/MarketplaceView.php::showPage()` — bug surgiu quando o catálogo do Mindplace passou a ter mais de um plugin. O segundo plugin (não instalado) "herdava" o estado do primeiro (instalado), causando comportamento inexplicável: clicar Habilitar num plugin parecia ativar outro. +`/home/glpi/glpi_dev/plugins/mindplace/src/MarketplaceView.php::showPage()` — bug surgiu quando o catálogo do Mindplace passou a ter mais de um plugin. O segundo plugin (não instalado) "herdava" o estado do primeiro (instalado), causando comportamento inexplicável: clicar Habilitar num plugin parecia ativar outro. Corrigido em `mindplace v1.0.7` instanciando `new Plugin()` por iteração. diff --git a/records/plugin-dev/KB-PLUGIN-015-querySelector-row-collision.md b/records/plugin-dev/KB-PLUGIN-015-querySelector-row-collision.md index 039313d..747e19e 100644 --- a/records/plugin-dev/KB-PLUGIN-015-querySelector-row-collision.md +++ b/records/plugin-dev/KB-PLUGIN-015-querySelector-row-collision.md @@ -91,4 +91,4 @@ Para seletores de containers em plugins GLPI, em ordem de robustez: ## Onde isso pegou na vida real -`docker/glpi/plugins/tilesections/public/js/helpdesk_home.js::reorganizeTiles()` — corrigido em `tilesections v1.1.2`. O bug não era reproduzível em dev porque o ambiente Docker não tinha o plugin `news_alert` instalado. +`/home/glpi/glpi_dev/plugins/tilesections/public/js/helpdesk_home.js::reorganizeTiles()` — corrigido em `tilesections v1.1.2`. O bug não era reproduzível em dev porque o ambiente Docker não tinha o plugin `news_alert` instalado. diff --git a/records/plugin-dev/KB-PLUGIN-017-mindplace-zip-wrapper-detector-bug.md b/records/plugin-dev/KB-PLUGIN-017-mindplace-zip-wrapper-detector-bug.md index 552b434..e051f48 100644 --- a/records/plugin-dev/KB-PLUGIN-017-mindplace-zip-wrapper-detector-bug.md +++ b/records/plugin-dev/KB-PLUGIN-017-mindplace-zip-wrapper-detector-bug.md @@ -21,7 +21,7 @@ applies_to: ## Contexto -O extrator de plugins do Mindplace (`docker/glpi/plugins/mindplace/ajax/marketplace.php`) baixa o `.zip` da release do GitHub, detecta um "wrapper directory" no topo e remove esse prefixo dos demais entries antes de extrair para `marketplace//`. +O extrator de plugins do Mindplace (`/home/glpi/glpi_dev/plugins/mindplace/ajax/marketplace.php`) baixa o `.zip` da release do GitHub, detecta um "wrapper directory" no topo e remove esse prefixo dos demais entries antes de extrair para `marketplace//`. Quando o ZIP de release de um plugin é gerado **sem** um wrapper directory consistente, a heurística antiga aceitava qualquer pasta top-level como wrapper e **mutilava** os paths de todos os outros entries. @@ -104,11 +104,11 @@ if ( } ``` -Arquivo: `docker/glpi/plugins/mindplace/ajax/marketplace.php` (linhas ~91-114). +Arquivo: `/home/glpi/glpi_dev/plugins/mindplace/ajax/marketplace.php` (linhas ~91-114). ## Como diagnosticar uma instalação afetada -1. Listar `docker/glpi/marketplace//` — se aparecerem arquivos com nomes começando por `.` (`.php`, `.png`), arquivos com nomes incompletos (`p.php`, `est.php`), ou pastas com nomes esquisitos (`ic/`, `t/`), o bug está presente. +1. Listar `/home/glpi/glpi_dev/marketplace//` — se aparecerem arquivos com nomes começando por `.` (`.php`, `.png`), arquivos com nomes incompletos (`p.php`, `est.php`), ou pastas com nomes esquisitos (`ic/`, `t/`), o bug está presente. 2. Confirmar inspecionando o `.zip` original: `unzip -l .zip | head` — se o primeiro entry **não** é um wrapper directory que contém todos os demais, o ZIP é vulnerável a esta versão do bug. ## Como evitar (em plugins novos) diff --git a/records/plugin-dev/KB-PLUGIN-018-plugin-release-zip-wrapper-convention.md b/records/plugin-dev/KB-PLUGIN-018-plugin-release-zip-wrapper-convention.md index fae149a..3399d2a 100644 --- a/records/plugin-dev/KB-PLUGIN-018-plugin-release-zip-wrapper-convention.md +++ b/records/plugin-dev/KB-PLUGIN-018-plugin-release-zip-wrapper-convention.md @@ -85,7 +85,7 @@ Se precisar gerar localmente fora do script: ```bash # A partir do diretório PAI da pasta do plugin -cd docker/glpi/plugins +cd /home/glpi/glpi_dev/plugins/ zip -r mcprotocol-1.0.3.zip mcprotocol/ \ -x "mcprotocol/.git*" \ -x "*.zip" \ diff --git a/records/plugin-dev/KB-PLUGIN-025-mcprotocol-date-timezone-handling.md b/records/plugin-dev/KB-PLUGIN-025-mcprotocol-date-timezone-handling.md index 6b1f612..84b9f5b 100644 --- a/records/plugin-dev/KB-PLUGIN-025-mcprotocol-date-timezone-handling.md +++ b/records/plugin-dev/KB-PLUGIN-025-mcprotocol-date-timezone-handling.md @@ -34,7 +34,7 @@ Cadeia de TZ no ambiente atual: | Camada | TZ | |---|---| -| Container app (`glpi11-app`) — clock | `-03` (São Paulo) | +| Container app (`devportal_glpi`) — clock | `-03` (São Paulo) | | PHP (`date.timezone`) | `UTC` | | Container MariaDB (`glpi11-mariadb`) — clock | `-03` | | MariaDB session (`@@session.time_zone`) | `SYSTEM` (= `-03`) | diff --git a/records/plugin-dev/KB-PLUGIN-027-mcprotocol-dev-prod-release-flow.md b/records/plugin-dev/KB-PLUGIN-027-mcprotocol-dev-prod-release-flow.md index 85befff..8890174 100644 --- a/records/plugin-dev/KB-PLUGIN-027-mcprotocol-dev-prod-release-flow.md +++ b/records/plugin-dev/KB-PLUGIN-027-mcprotocol-dev-prod-release-flow.md @@ -75,7 +75,7 @@ A versão do plugin é a **mesma** entre dev e prod — não há suffixo `-dev`, ### 2. Push em Dev ```bash -cd /opt/projects/GLPI11/docker/glpi/marketplace/mcprotocol +cd /home/glpi/glpi_dev/marketplace/mcprotocol git add git commit -m "feat/fix/chore: ..." git push origin main # vai pro Forgejo lab (192.168.100.101) @@ -95,9 +95,9 @@ Commit + push para dev primeiro. ### 5. Push em Prod (manual, via script) ```bash cd /opt/projects/MindPlace -./bin/mindplace-release.sh ./docker/glpi/plugins/mcprotocol +./bin/mindplace-release.sh /home/glpi/glpi_dev/plugins/mcprotocol # Ou se o plugin estiver em outro caminho: -./bin/mindplace-release.sh /opt/projects/GLPI11/docker/glpi/marketplace/mcprotocol +./bin/mindplace-release.sh /home/glpi/glpi_dev/marketplace/mcprotocol ``` O script executa 5 fases: diff --git a/records/plugin-dev/KB-PLUGIN-031-plugin-dev-workflow-runbook.md b/records/plugin-dev/KB-PLUGIN-031-plugin-dev-workflow-runbook.md index 2e4167f..e9c3223 100644 --- a/records/plugin-dev/KB-PLUGIN-031-plugin-dev-workflow-runbook.md +++ b/records/plugin-dev/KB-PLUGIN-031-plugin-dev-workflow-runbook.md @@ -66,8 +66,8 @@ Durante TODO o processo de desenvolvimento: | Componente | Onde | |---|---| | Servidor dev (docker) | CT 100 — `root@192.168.100.49` (SSH key do Mac já cadastrada) | -| Diretório de plugins | `/opt/projects/GLPI11/docker/glpi/plugins/` (bind → `/var/www/glpi/plugins`, ver [KB-INFRA-001]) | -| Container GLPI | `glpi11-app` (GLPI dev em `http://192.168.100.49:8081`) | +| Diretório de plugins | `/home/glpi/glpi_dev/plugins/` (bind → `/var/www/glpi/plugins`, ver [KB-INFRA-001]) | +| Container GLPI | `devportal_glpi` (GLPI dev em `http://localhost`) | | Knowledge-base | `/opt/projects/GLPI11/knowledge-base/` (repo no Forgejo dev) | | Forgejo DEV | `git@192.168.100.101:administrador/.git` (remote `origin`) — web `http://192.168.100.101:3000` / `https://forgejo.lab.coretoai.com`, usuário `administrador` | | Forgejo PROD | `servicedesk.mindtek.com.br/git/rodolpho.lopes/` (remote `production`) | @@ -77,7 +77,7 @@ Durante TODO o processo de desenvolvimento: ```bash ssh root@192.168.100.49 -cd /opt/projects/GLPI11/docker/glpi/plugins +cd /home/glpi/glpi_dev/plugins/ ``` Ou via IDE no Mac: Remote SSH em `root@192.168.100.49`, abrir a pasta do plugin. @@ -123,7 +123,7 @@ Instalação e ativação **sempre via console** (erros legíveis; a UI só most falha genérica): ```bash -docker exec glpi11-app sh -c ' +docker exec devportal_glpi sh -c ' php -l /var/www/glpi/plugins//setup.php && php -l /var/www/glpi/plugins//hook.php && php /var/www/glpi/bin/console plugin:install -n --username=glpi && @@ -180,8 +180,8 @@ Padrão do teste: criar massa de dados com prefixo `TEST` → exercitar os cenários → **deletar tudo com purge no final**. Executar: ```bash -docker cp test_.php glpi11-app:/tmp/ -docker exec glpi11-app php /tmp/test_.php +docker cp test_.php devportal_glpi:/tmp/ +docker exec devportal_glpi php /tmp/test_.php ``` Exemplo real: teste E2E do `assetinherit` (6 cenários; a homologação revelou