Forrásból történő fordítás
Ez az oldal azt mutatja be, hogyan fordítható és futtatható az Antimatter a forráskódjából, legyen szó fejlesztésről vagy saját build-ek készítéséről. A szervert és a webes felületeket egy repozitóriumban találjuk, majd a Docker-képeket és az alkalmazásokat is áttekintjük.
Amihez szükséged van
- Go, a
server/go.modfájlban megadott verzióval (írás idején 1.26.7). - Node.js és npm, a
.nvmrcés awebapp/package.jsonfájlokban megadott verziókban (Node 24.11.1, npm 11.6.2). A mise segítségével a repozitóriummise.tomlfájlja telepíti a megfelelő Node verziót. - Docker Compose-kal: a fejlesztői környezet PostgreSQL-t és néhány más szolgáltatást futtat konténerekben.
- make, git, valamint Linux vagy macOS gépezet.
- Memória: a webes felületek fordítása a legköltségesebb rész. 16 GB RAM-mal érdemes számolni; lásd: Fordítás és memória.
git clone https://github.com/AntimatterChat/antimatter.git
cd antimatter
A repozitórium a szervert a server/ mappában, a webes felületeket a webapp/ mappában (a Fusion a webapp/fusion-ban, a klasszikus a webapp/channels-ben, a közös csomagok a webapp/platform-ban), valamint a végpont-teszteket az e2e-tests/ mappában tartalmazza.
Fejlesztői szerver futtatása
cd server
make run
A make run parancs elindítja a fejlesztői konténereket (PostgreSQL, Redis, e-mail fogadó és monitorozási eszközök), behelyezi a webes alkalmazás build-jeit, háttérben elindítja a szervert a go run paranccsal, és elindítja a webes alkalmazás figyelőjét, amely újra fordítja a klasszikus felületet, ahogy szerkeszted. Nyisd meg a http://localhost:8065 címet, és hozz létre egy fiókot: az első fiók rendszergazdává válik.
Parancs (a server/ mappában) | Mire szolgál |
|---|---|
make run-server, make run-client | Csak a szerver, vagy csak a webes alkalmazás figyelője indítása. |
make restart-server | A szerver újraindítása Go kód módosítása után. |
make stop | A szerver, a figyelő és a konténerek leállítása. |
make debug-server | A szerver futtatása a Delve hibakeresővel. |
make run-cli ARGS="-version" | Szerverparancs futtatása. |
make config-reset | A config/config.json fájl visszaállítása az alapértékekre. |
make clean, make nuke | Fordítási fájlok törlése; a nuke parancs a fejlesztési adatokat is törli. |
A fejlesztési adatbázis: postgres://mmuser:mostest_password@localhost/mattermost_test, a szerver alapértelmezett adatforrása. Az ENABLED_DOCKER_SERVICES változóval választhatod ki, mely konténerek induljanak el, a server/config.override.mk fájlban vagy a környezeti változóiddal (lásd: server/config.mk).
A webes felületek
A webapp/ mappában:
npm install # also builds the shared packages
npm run build # the classic interface, then Fusion
A build-ek a webapp/channels/dist (klasszikus) és a webapp/fusion/dist (Fusion) könyvtárakba kerülnek. A server/ könyvtárban futtatott make client parancs ezeket server/client és server/client-fusion néven köti össze, ahonnan a szerver szolgálja ki őket: a klasszikus verziót a /static/ alatt, a Fusiont pedig a /static/fusion/ alatt.
- A
npm run run(vagy awebapp/könyvtárban amake run) figyel és újraépíti a klasszikus felületet. A Fusion újraépítéséhez adjad hozzá aWATCH_FUSION=truekörnyezeti változót. - A
npm run dev-server(make dev) a webpack fejlesztői szerverét futtatja: a klasszikus felület a 9005-ös, a Fusion a 9006-os porton érhető el. - Ha a böngészőben az egyik vagy a másik felületet szeretnéd látni, add hozzá a
?webui=fusionvagy?webui=classicparamétert bármelyik oldal címéhez.
Tesztek és ellenőrzések
| Parancs | Hely | Mire szolgál |
|---|---|---|
make test-server | server/ | A szerver teszt-suite-je, a fejlesztői konténerekkel szemben. Ez sok időt vesz igénybe. |
make test-server-quick | server/ | Csak a rövid tesztek. |
go test ./channels/app/... -run TestName | server/ | Egy csomag vagy teszt, a konténerek futtatása mellett (make start-docker). |
make check-style | server/ | go vet, golangci-lint és a többi Go-ellenőrzés. |
make test | webapp/ | A webalkalmazás egységtesztjei (Jest), minden csomagban. |
npm run test -- <pattern> | webapp/fusion | A Fusion néhány tesztje. |
make check-style, make check-types | webapp/ | ESLint és TypeScript. |
make i18n-extract | server/ és webapp/ | Frissíti az angol szövegfájlokat, miután új szöveget adtál hozzá vagy meglévőket módosítottál (lásd: Fordítások). |
A server/ könyvtárban a make modules-tidy parancsot futtasd, ne a go mod tidy-t.
Kiadási archívumok
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
A make build parancs egyszerre fordítja le a webes felületeket és a Linux binárisokat. Az archívum tartalmazza a bin/antimatter, a bin/amctl fájlokat, az alapértelmezett config/config.json beállításfájlt (a beállítások módosításáról szóló README.md fájl kíséretében), mindkét webes felületet, a sablonokat, a betűtípusokat és a fordításokat. Egyéb platformok: make package-osx, make package-windows, make package-freebsd.
Beépített alkalmazások
A sima make package-linux parancs alkalmazások nélkül készíti el az archívumot. Ha az alkalmazásokat is be szeretnéd csomagolni, ahogyan a hivatalos kiadások is teszik, először szerezd be az aláírt alkalmazáscsomagokat, és add meg a mappájukat:
build/package/fetch-apps.sh "$HOME/release-apps" # needs gh, python3 and gpg
make package-linux PREPACKAGED_PLUGINS_DIR="$HOME/release-apps"
A fetch-apps.sh letölti az antimatter-docker plugins.json fájljában szereplő alkalmazások legújabb GitHub-kiadásait, az aláírásaikkal együtt, és ellenőrzi az aláírást az Antimatter plugin-kulcsa alapján. Alapértelmezetten a Whiteboard, a Voice channels, a Calls, az Agents, a Todo, a Polls, a Notes, a GIFs és a Memes alkalmazásokat veszi fel; a listát az AM_BUNDLED_APPS (szóközzel elválasztott repozitóriumnevek) változóval lehet módosítani. Azok az alkalmazások, amelyeknek nincs kiadása, vagy nincs aláírásuk, figyelmeztetéssel kerülnek kihagyásra. A csomagok az archívum prepackaged_plugins/ mappájába kerülnek.
.deb és .rpm csomagok
build/package/build-packages.sh <archive> <amd64|arm64> <version> <out-dir> converts a release archive into all-in-one .deb and .rpm packages, using nfpm. The admin guide describes what they install: see Install the .deb or .rpm package.
A kiadási munkafolyamat
A szervertárhely antimatter-release.yml munkafolyamata a GitHubon végzi el mindezt: egy v* címkénál amd64 és arm64 architektúrákhoz készíti az archívumokat és csomagokat, SHA256SUMS fájlokkal, és ezeket publikálja a címke GitHub kiadásaiként (ha a verziószám tartalmaz - jelet, előzetes kiadás lesz). Kézi futtatás esetén a build sorszáma 0.9.0-dev.<run> lesz, és a fájlokat munkafolyamat-artefaktumként őrzi meg. Minden alkalmazástárhelynek van egy release.yml munkafolyamata, amely ugyanígy publikálja az aláírt csomagot.
A Docker-kép
Az antimatter-docker repozitórium építi fel a közzétett képeket, a szerverrel és annak alkalmazásaival, teljesen a Dockeren belül:
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
Ehhez Docker buildx, Python 3, git és gpg szükséges, valamint kb. 16 GB RAM és 30 GB lemezterület. Az eredményt a ghcr.io/antimatterchat/antimatter:dev néven töltjük be; próbáld ki a ANTIMATTER_IMAGE=ghcr.io/antimatterchat/antimatter:dev docker compose -f compose.local.yml up -d paranccsal. A plugins.json fájl felsorolja az alkalmazásokat és a felépített verziókat, a repozitórium README fájlja pedig a változatokat ismerteti.
build-all.sh script az Antimatter aláírókulccsal aláírja a csomagolt alkalmazásokat, és a képből építés elutasítja az aláíratlan alkalmazásokat. Ha nincs meg a privát kulcs (amelyhez csak a karbantartók férnek hozzá), futtasd külön-külön az első lépéseket: scripts/fetch-sources.sh, scripts/build-plugins.sh (alkalmazáscsomagok a out/plugins/ könyvtárban) és scripts/build-server.sh (szerverarchívumok a out/server/ könyvtárban).Buildelés és memória
A webes felületek nagy webpack buildjei, és a memória kimerülése a leggyakoribb buildhiba.
- Az
npm run buildparancs a klasszikus felületet és a Fusiót egymás után építi, nem párhuzamosan, hogy a csúcsterhelés alacsonyabb maradjon. Ne futtasd párhuzamosan. - A minifier minden processzorra egy munkafolyamatot indít. Sokmagos, de kevés memóriájú gépen korlátozd a build által látható processzorok számát:
taskset -c 0-5 npm run build. - Ha a Node kimeríti a heapet, emeld meg a limitet:
NODE_OPTIONS=--max-old-space-size=6144. A Docker build ezt az értéket használja (BUILD_NODE_OPTIONSabuild.envfájlban). - Kerüld, hogy kis gépen egyszerre fusson a szerver teljes teszt-suite-ja, egy web build és egy Docker build.
Az alkalmazások
Minden alkalmazásnak (pluginnek) van saját repozitórium- és Makefile-ja; a make dist parancs építi a csomagját. Lásd: Buildelés, telepítés és hibakeresés.
Asztali alkalmazás
Az asztali alkalmazás egy Electron app. Node.js 24 vagy újabb verzióval:
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)
A fordítási idejű beállítások, például az előre konfigurálandó szerverek, a src/common/config/buildConfig.ts fájlban találhatók. Ha nincs Apple-tanúsítvány, állítsa be az AM_MAC_ADHOC_SIGN=true értéket, hogy ad hoc módon, notorizálás nélkül aláírja a macOS-alkalmazást: az Apple-siliconos Mac-ek nem fogadják el az aláíratlan kódot. A repository release.yml munkafolyamata v* címkénál aláíratlan csomagokat készít Linux, Windows és macOS rendszerek számára.
Mobilalkalmazás
A mobilalkalmazás egy React Native app; a README fájlban felsorolt parancsok (npm run ios, npm run android) segítségével fordítható. Saját példány készítéséhez saját aláíró kulcsokra, Android-értesítésekhez Firebase-projektre, iOS-hez APNs-kulcsra, valamint egy push proxy szerverre is szükség van, amelyben tárolja ezeket a hitelesítő adatokat. A repository release.yml munkafolyamata v* címkénál Android APK és AAB fájlt, valamint aláíratlan iOS .ipa fájlt készít, áruház-fiókok nélkül; a README fájlban felsorolt titkok az Android build aláírásához és a Firebase beállításához szolgálnak.