Mesh CI
Mesh CI spúšťa workflowy GitHub Actions vo vašich repozitároch v
LosOS Git. Push alebo pull request spustí workflowy z
priečinka .github/workflows/ v danom commite, boxy vašej siete si úlohy
rozdelia a výsledok každej úlohy sa ukáže pri commite a v kontrolách pull
requestu. Mesh CI v bočnom paneli ho otvorí na /ci.
Kedy je Mesh CI k dispozícii
Mesh CI existuje len vtedy, keď box zdieľa svoje úložisko so sieťou, do ktorej sa pripojil (pozrite režimy úložiska). So zdieľaním vypnutým alebo mimo siete nie je v bočnom paneli Mesh CI a žiadny workflow sa nespustí. Behy, ktoré už prebehli, zostávajú na disku a vrátia sa s ním.
Behy
Stránka ukazuje najnovšie behy ako prvé: workflow, jeho číslo, čo ho spustilo (push, pull request alebo Spustiť workflow), repozitár, commit a ako dlho trval. Otvorte beh a uvidíte jeho úlohy. Pri každej úlohe je napísané, kde bežala: Tento box, alebo Sieť s menom boxu, ktorý ju prevzal. Vyberte úlohu a prečítate si jej log krok po kroku, s návratovým kódom každého kroku a výstupmi úlohy.
Zrušiť beh zastaví úlohy behu a ich kontajnery sa odstránia. Spustiť znova spustí tie isté workflowy na tom istom commite.
Spustiť workflow spustí workflow, ktorý má medzi spúšťačmi
workflow_dispatch. Zadajte repozitár ako vlastník/názov, vetvu
(predvolenú, ak pole necháte prázdne), stlačte Nájsť workflowy a jeden
vyberte.
Kde úloha beží
Úloha ide do siete, kde ju môže prevziať ktorýkoľvek box, ktorý požičiava svoj runner, okrem prípadov, keď:
- jej
runs-onuvádzaself-hosted; - jej repozitár je súkromný, pokiaľ nie je zapnuté
losos.ci.privateOnMesh. Iný box by videl kód; - box nemá na dosah žiadny edge.
Vtedy beží na tomto boxe.
Požičiavanie runnera tohto boxu
Spúšťať úlohy iných boxov v časti Runner tohto boxu určuje, kedy tento box preberá úlohy od zvyšku siete:
- Vždy;
- V okne výpočtov, v hodinách nastavených na stránke Sieť (predvolené);
- Nikdy. Box naďalej spúšťa vlastné úlohy.
Box berie naraz jednu úlohu. Úloha beží pod účtom shared v kontajneri
bez roota, bez prístupu do vlastnej siete boxu či k čomukoľvek inému v LAN.
Dostane najviac losos.ci.runner.memory pamäte (predvolene 2 GB) a
losos.ci.runner.cpus procesorového času (1,5 jadra), s nízkou prioritou,
takže vlastná práca boxu má prednosť.
Čo môže workflow používať
Workflowy sa čítajú ako workflowy GitHub Actions, takže väčšina z nich beží bez úprav:
on: push,pull_requestaworkflow_dispatch, s filtrami vetiev a značiek;- úlohy s
needs,if,strategy.matrix,outputs,env,defaultsatimeout-minutesa výrazy${{ }}; - kroky s
runa akcie zuses: akcie v JavaScripte, zložené a Docker akcie z GitHubu, akcie v repozitári (./cesta) a obrazydocker://; containeraservices. Služba je dostupná pod svojím menom aj nalocalhosta jej kontrola zdravia prejde skôr, než začnú kroky.
Úloha bez container beží vo vlastnom obraze LosOS: bash, bežné nástroje
príkazového riadka, git a curl. losos.ci.runner.images priraďuje štítkom
runs-on iné obrazy, napríklad
ubuntu-latest=docker.io/library/ubuntu:24.04.
Niektoré časti GitHub Actions potrebujú vlastné služby GitHubu a log to povie tam, kde sa objavia:
actions/checkoutnerobí nič: súbory commitu už sú v pracovnom priečinku;actions/cache,upload-artifactadownload-artifactnič neuchovajú;secretsje prázdne,schedulesa nikdy nespustí a znovupoužiteľné workflowy (jobs.<id>.uses) sa odmietnu.
Kontajnery a pm
Box spúšťa a zastavuje kontajnery každej úlohy správcom balíkov
pm, cez vlastný plugin Mesh CI pre
pm. Plugin je podpísaný a pm nenačíta žiadny plugin, ktorý podpísaný nie
je. Odpovedá len za kontajnery Mesh CI, ktorých mená začínajú na lci-, a
odmietne čokoľvek spustiť ako root.
Krok môže tiež zostaviť recept pm akciou losos-project/pm:
- uses: losos-project/pm@v0
id: pkg
with:
recipe: pkg/build.rhai
trust: 3f0c… # verejný kľúč v hex, ktorým je recept podpísaný
- run: ls -l ${{ steps.pkg.outputs.archive }}
pm zostaví recept vo vlastnom väzení, v pracovnom priečinku úlohy, a výstup archive je
balík, ktorý vyrobil. Recept musí byť podpísaný kľúčom z trust.
command: explain povie, čo by recept urobil, bez zostavenia, a
permissive: true odovzdá pm prepínač --permissive.
Nastavenia
Na paneli Rozšírené:
losos.ci.enablevypne Mesh CI;losos.ci.privateOnMeshdovolí úlohám súkromných repozitárov bežať na iných boxoch;losos.ci.runner.memory,losos.ci.runner.cpusalosos.ci.runner.imagessú opísané vyššie.