docs: map local paths to dev environment
This commit is contained in:
parent
52b88983b4
commit
483babaacb
10 changed files with 27 additions and 27 deletions
|
|
@ -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`;
|
||||
|
|
|
|||
|
|
@ -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*" \
|
||||
|
|
|
|||
|
|
@ -59,7 +59,7 @@ export FORGEJO_TOKEN="seu_token_aqui"
|
|||
|
||||
```bash
|
||||
# Na raiz do projeto GLPI11:
|
||||
./bin/mindplace-release.sh ./docker/glpi/plugins/<nome-do-plugin>
|
||||
./bin/mindplace-release.sh /home/glpi/glpi_dev/plugins/<nome-do-plugin>
|
||||
```
|
||||
|
||||
### 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
|
||||
|
|
|
|||
|
|
@ -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.
|
||||
|
|
|
|||
|
|
@ -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.
|
||||
|
|
|
|||
|
|
@ -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/<plugin>/`.
|
||||
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/<plugin>/`.
|
||||
|
||||
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/<plugin>/` — 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/<plugin>/` — 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 <plugin>.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)
|
||||
|
|
|
|||
|
|
@ -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" \
|
||||
|
|
|
|||
|
|
@ -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`) |
|
||||
|
|
|
|||
|
|
@ -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 <arquivos>
|
||||
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:
|
||||
|
|
|
|||
|
|
@ -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/<plugin>.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/<plugin>` (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/<key>/setup.php &&
|
||||
php -l /var/www/glpi/plugins/<key>/hook.php &&
|
||||
php /var/www/glpi/bin/console plugin:install <key> -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_<key>.php glpi11-app:/tmp/
|
||||
docker exec glpi11-app php /tmp/test_<key>.php
|
||||
docker cp test_<key>.php devportal_glpi:/tmp/
|
||||
docker exec devportal_glpi php /tmp/test_<key>.php
|
||||
```
|
||||
|
||||
Exemplo real: teste E2E do `assetinherit` (6 cenários; a homologação revelou
|
||||
|
|
|
|||
Loading…
Reference in a new issue