AITM vám umožňuje spouštět vlastní periodické údržbové a automatizační skripty přímo uvnitř běžící instance — bez rebuildu Docker image, bez redeploye, jen s restartem kontejneru.

Uživatelské úlohy (naplánované pluginové úlohy)

Kde na vaší instalaci žije složka s pluginy

Každý release build AITM (plná, online i „thin“ varianta Docker image) obsahuje vrstvu plugins-runtime/ zabudovanou v samotném image. Pro vás jako zákazníka je ale důležitá jiná, trvalá složka: plugins uvnitř datového adresáře připojeného jako svazek (bind mount) — typicky $AITM_DATA_DIR/plugins uvnitř běžícího kontejneru, nikoli cesta uvnitř image.

  • Při první instalaci je tato složka prázdná.
  • Při prvním spuštění kontejneru ji entrypoint skriptu naplní referenční ukázkovou úlohou example-scheduled-job — ale pouze pokud daná podsložka ještě neexistuje, takže vaše vlastní úpravy přežijí upgrady i restarty.
  • AITM znovu prohledá složku s pluginy při každém startu kontejneru — po přidání nebo úpravě úlohy je proto potřeba kontejner restartovat (rebuild image není nutný).

Přidání vlastní úlohy

  1. Vytvořte novou podsložku v připojené cestě plugins/ (jedna složka na úlohu/plugin).
  2. Do ní vložte soubor plugin.json obsahující pole aitm.jobs.
  3. Vložte skript, na který odkazuje handler.path dané úlohy.
  4. Restartujte kontejner AITM.

Struktura plugin.json

PolePopis
nameJedinečný identifikátor úlohy.
labelLidsky čitelný název zobrazený v UI.
intervalMsInterval opakování úlohy v milisekundách.
priorityPriorita plánování — viz bezpečnostní poznámka níže, "high" je vyhrazeno pro interní úlohy AITM.
timeoutMsMaximální doba běhu, než je úloha ukončena.
onTimeoutChování při vypršení timeoutu.
heavyOznačuje úlohu jako náročnou na zdroje.
parallelZda může běžet souběžně s dalšími úlohami.
concurrencyGroupSkupina, uvnitř které se úlohy nespouští souběžně.
afterSeznam úloh, které musí doběhnout dřív.
nextÚloha spuštěná po úspěšném doběhnutí této.
minFreeRamMb / minFreeCpuPercentMinimální volné zdroje potřebné ke spuštění.
kind'in-process' | 'child-process' | 'remote' — způsob provedení úlohy.
allowedModesRežimy serveru, ve kterých je úloha povolena.
handler{ type: 'script', path, args, env } — co a jak se spustí.

Ukázkový příklad

Ilustrativní struktura vycházející z dodávané ukázkové úlohy example-scheduled-job:

{
  "aitm": {
    "jobs": [
      {
        "name": "example-scheduled-job",
        "label": "Example Scheduled Job",
        "intervalMs": 3600000,
        "priority": "normal",
        "timeoutMs": 60000,
        "kind": "child-process",
        "handler": {
          "type": "script",
          "path": "./run.js",
          "args": [],
          "env": {}
        }
      }
    ]
  }
}

Ladění úlohy bez redeploye

Běžící úlohu lze přes REST přepsat (interval, priorita, zapnutí/vypnutí) bez restartu kontejneru nebo redeploye:

  • GET /api/scheduler/jobs/:name/override
  • PUT /api/scheduler/jobs/:name/override

Bezpečnostní poznámka: nikdy nepoužívejte priority „high“

Vlastní (zákaznická) úloha nesmí nikdy použít priority: "high" — tato úroveň priority je vyhrazena výhradně pro interní plánovací úlohy AITM a její použití z vlastní úlohy není podporováno.

Podrobnější technickou referenci (vnitřní schéma manifestu úlohy, sémantiku kind/allowedModes, mechaniku timeoutů a retry) najdete v dokumentaci AITM.