Compilare din sursă
Această pagină explică cum să compilați și rulați Antimatter din codul sursă, fie pentru a lucra la el, fie pentru a crea propriile versiuni. Acoperă serverul și interfețele web, care se află într-un singur depozit, apoi imaginea Docker și aplicațiile.
Ce aveți nevoie
- Mergi, la versiunea din
server/go.mod(1.26.7 la momentul redactării). - Node.js și npm, la versiunile din
.nvmrcșiwebapp/package.json(Node 24.11.1 cu npm 11.6.2). Cu mise, fișierulmise.tomlal depozitului instalează versiunea corectă de Node. - Docker cu Compose: configurația de dezvoltare rulează PostgreSQL și câteva alte servicii în containere.
- make, git și un computer cu Linux sau macOS.
- Memorie: compilarea interfețelor web este partea cea mai intensă. Păstrați 16 GB de RAM; consultați Compilare și memorie.
git clone https://github.com/AntimatterChat/antimatter.git
cd antimatter
Depozitul conține serverul în server/, interfețele web în webapp/ (Fusion în webapp/fusion, clasică în webapp/channels, pachete partajate în webapp/platform) și testele end-to-end în e2e-tests/.
Rulare a unui server de dezvoltare
cd server
make run
make run pornește containerele de dezvoltare (PostgreSQL, Redis, un captor de e-mail și instrumente de monitorizare), leagă compilările aplicației web la locul lor, pornește serverul în fundal cu go run și pornește monitorul aplicației web, care recompilă interfața clasică pe măsură ce o modificați. Deschideți http://localhost:8065 și creați un cont: primul devine administratorul de sistem.
Comandă (în server/) | Ce face |
|---|---|
make run-server, make run-client | Pornește doar serverul sau doar monitorul aplicației web. |
make restart-server | Repornire a serverului după modificarea codului Go. |
make stop | Oprire a serverului, a monitorului și a containerelor. |
make debug-server | Rulare a serverului sub debuggerul Delve. |
make run-cli ARGS="-version" | Rulare a unei comenzi a serverului. |
make config-reset | Resetează config/config.json la valorile implicite. |
make clean, make nuke | Șterge fișierele de compilare; nuke șterge și datele de dezvoltare. |
Baza de date de dezvoltare este postgres://mmuser:mostest_password@localhost/mattermost_test, sursa de date implicită a serverului. Alegeți ce containere se pornesc cu ENABLED_DOCKER_SERVICES, într-un fișier server/config.override.mk sau în mediul dumneavoastră (consultați server/config.mk).
Interfețele web
În webapp/:
npm install # also builds the shared packages
npm run build # the classic interface, then Fusion
Buildurile se salvează în webapp/channels/dist (clasic) și webapp/fusion/dist (Fusion). Comanda make client din server/ le leagă ca server/client și server/client-fusion, unde serverul le servește: clasic sub /static/, Fusion sub /static/fusion/.
npm run run(saumake runînwebapp/) monitorizează și reconstruiește interfața clasică. AdăugațiWATCH_FUSION=truepentru a reconstrui și Fusion.npm run dev-server(make dev) rulează serverul de dezvoltare webpack în schimb: clasic pe portul 9005, Fusion pe portul 9006.- Pentru a vedea una dintre interfețe în browser, adăugați
?webui=fusionsau?webui=classicla adresa oricărei pagini.
Teste și verificări
| Comandă | Unde | Ce face |
|---|---|---|
make test-server | server/ | Suita de teste a serverului, împotriva containerelor de dezvoltare. Necesită mult timp. |
make test-server-quick | server/ | Doar testele scurte. |
go test ./channels/app/... -run TestName | server/ | Un pachet sau un test, cu containerele pornite (make start-docker). |
make check-style | server/ | go vet, golangci-lint și celelalte verificări Go. |
make test | webapp/ | Testele unitare ale aplicației web (Jest), în fiecare pachet. |
npm run test -- <pattern> | webapp/fusion | Unele dintre testele Fusion. |
make check-style, make check-types | webapp/ | ESLint și TypeScript. |
make i18n-extract | server/ și webapp/ | Actualizează fișierele de șiruri în limba engleză după ce adăugați sau modificați șiruri (a se vedea Traduceri). |
Rulați make modules-tidy în loc de go mod tidy în server/.
Arhivele de lansare
cd webapp && npm run build && cd ..
cd server
make build-linux # the antimatter and amctl binaries
make package-linux # dist/antimatter-linux-amd64.tar.gz and -arm64
make build construiește interfețele web și binarele Linux într-o singură operație. Arhiva conține bin/antimatter, bin/amctl, un config/config.json implicit cu un README.md despre modificarea setărilor, ambele interfețe web, șabloanele, fonturile și traducerile. Alte platforme: make package-osx, make package-windows, make package-freebsd.
Aplicații incluse
Un simplu make package-linux construiește o arhivă fără aplicații. Pentru a le include, așa cum fac lansările publicate, descărcați mai întâi pachetele semnate ale aplicațiilor și transmiteți folderul lor:
build/package/fetch-apps.sh "$HOME/release-apps" # needs gh, python3 and gpg
make package-linux PREPACKAGED_PLUGINS_DIR="$HOME/release-apps"
fetch-apps.sh descarcă cea mai recentă lansare GitHub a fiecărei aplicații listate în plugins.json din antimatter-docker, împreună cu semnătura, și verifică semnătura în raport cu cheia de plugin a Antimatter. În mod implicit, preia Whiteboard, Voice channels, Calls, Agents, Todo, Polls, Notes, GIFs și Memes; AM_BUNDLED_APPS (numele de depozite, separate prin spații) modifică lista. Aplicațiile fără o lansare sau fără o semnătură sunt omise cu un avertisment. Pachetele ajung în prepackaged_plugins/ al arhivei.
Pachete .deb și .rpm
build/package/build-packages.sh <archive> <amd64|arm64> <version> <out-dir> transformă o arhivă de lansare în pachete .deb și .rpm all-in-one, cu nfpm. Ghidul administratorului descrie ce instalează: consultați Instalarea pachetului .deb sau .rpm.
Fluxul de lucru pentru lansare
Fluxul de lucru antimatter-release.yml din depozitul serverului face toate acestea pe GitHub: la o etichetă v* construiește arhivele și pachetele pentru amd64 și arm64, cu SHA256SUMS, și le publică ca lansare GitHub a etichetei (o pre-lansare pentru o versiune cu -). Rulat manual, numără construcția 0.9.0-dev.<run> și păstrează fișierele ca artefacte ale fluxului de lucru. Fiecare depozit de aplicații are un flux de lucru release.yml care publică pachetul său semnat în același mod.
Imaginea Docker
Depozitul antimatter-docker construiește imaginile publicate, serverul cu aplicațiile sale, integral în Docker:
git clone https://github.com/AntimatterChat/antimatter-docker.git
cd antimatter-docker
scripts/build-all.sh # from the main branches on GitHub
SOURCES=local scripts/build-all.sh # from your checkouts next to this folder
VARIANT=next scripts/build-all.sh # the "next" image, with every Antimatter app
Necesită Docker cu buildx, Python 3, git și gpg, aproximativ 16 GB de RAM și 30 GB de disc. Rezultatul este încărcat ca ghcr.io/antimatterchat/antimatter:dev; încercați-l cu ANTIMATTER_IMAGE=ghcr.io/antimatterchat/antimatter:dev docker compose -f compose.local.yml up -d. plugins.json listează aplicațiile și versiunile construite, iar README-ul depozitului explică variantele.
build-all.sh semnează aplicațiile incluse cu cheia de semnare Antimatter, iar construcția imaginii refuză aplicațiile nesemnate. Fără această cheie privată, de care dispun doar mentorii, rulați doar primii pași: scripts/fetch-sources.sh, scripts/build-plugins.sh (pachetele de aplicații în out/plugins/) și scripts/build-server.sh (arhivele serverului în out/server/).Construcție și memorie
Interfețele web sunt construcții webpack mari, iar epuizarea memoriei este cea mai frecventă eroare de construcție.
npm run buildconstruiește interfața clasică și apoi Fusion, în mod secvențial, nu simultan, pentru a menține consumul de vârf mai scăzut. Nu le rulați în paralel voi înșivă.- Minimizerul pornește un worker per procesor. Pe o mașină cu multe nuclee și puțină memorie, limitați procesoarele vizibile pentru construcție:
taskset -c 0-5 npm run build. - Dacă Node epuizează memoria heap, creșteți limita acesteia:
NODE_OPTIONS=--max-old-space-size=6144. Construcția Docker utilizează această valoare (BUILD_NODE_OPTIONSînbuild.env). - Evitați rularea simultană a suitei complete de teste a serverului, a unei construcții web și a unei construcții Docker pe o mașină mică.
Aplicațiile
Fiecare aplicație (plugin) are propriul depozit și propriul Makefile; make dist construiește pachetul acesteia. Consultați Construcție, instalare și depanare.
Aplicația desktop
Aplicația desktop este o aplicație Electron. Cu Node.js 24 sau o versiune ulterioară:
npm install --allow-git=all
npm run build # development build, into dist/
npm start # run it
npm run package:linux # packages into release/ (also package:windows, package:mac)
Configurațiile de compilare, cum ar fi serverele de preconfigurat, se află în src/common/config/buildConfig.ts. Fără un certificat Apple, setați AM_MAC_ADHOC_SIGN=true pentru a semna aplicația macOS ad hoc, fără notarizare: Mac-urile cu procesoare Apple refuză codul nesemnat. Workflow-ul release.yml din depozit construiește pachete nesemnate pentru Linux, Windows și macOS la o etichetă v*.
Aplicația mobilă
Aplicația mobile este o aplicație React Native; README-ul acesteia listează comenzile (npm run ios, npm run android). Pentru a vă construi propria copie, aveți nevoie și de cheile de semnare proprii, de un proiect Firebase pentru notificările Android, de o cheie APNs pentru iOS și de un push proxy care deține aceste credențiale. Workflow-ul release.yml din depozit construiește APK-ul și AAB-ul Android și un .ipa iOS nesemnat la o etichetă v*, fără conturi de magazin; README-ul acestuia listează secretele care semnează compilarea Android și configurează Firebase.