Kompilace ze zdrojového kódu

Tato stránka popisuje, jak Antimatter sestavit a spustit ze zdrojového kódu, ať už pro práci na něm nebo pro vlastní sestavení. Pokrývá server a webové rozhraní, které jsou v jednom repozitáři, a dále Docker obraz a aplikace.

Co budete potřebovat

  • Jít, ve verzi v server/go.mod (1.26.7 v době psaní).
  • Node.js a npm ve verzích uvedených v .nvmrc a webapp/package.json (Node 24.11.1 s npm 11.6.2). S nástrojem mise nainstaluje soubor mise.toml v repozitáři správnou verzi Node.
  • Docker s Compose: vývojové prostředí běží s PostgreSQL a dalšími službami v kontejnerech.
  • make, git a stroj s Linuxem nebo macOS.
  • Paměť: nejnáročnější částí je sestavování webových rozhraní. Počítejte s 16 GB RAM; viz Sestavování a paměť.
git clone https://github.com/AntimatterChat/antimatter.git
cd antimatter

Repozitář obsahuje server v server/, webové rozhraní v webapp/ (Fusion v webapp/fusion, klasické v webapp/channels, sdílené balíčky v webapp/platform) a end-to-end testy v e2e-tests/.

Spusťte vývojový server

cd server
make run

make run spustí vývojové kontejnery (PostgreSQL, Redis, nástroj pro chytání e-mailů a monitoring), propojí sestavení webové aplikace na správném místě, spustí server na pozadí pomocí go run a spustí hlídač (watcher) webové aplikace, který při editaci znovu sestaví klasické rozhraní. Otevřete http://localhost:8065 a vytvořte účet: první se stane administrátorem systému.

Příkaz (v server/)Co dělá
make run-server, make run-clientSpusťte pouze server nebo pouze hlídač webové aplikace.
make restart-serverRestartujte server po změně Go kódu.
make stopZastavte server, hlídač a kontejnery.
make debug-serverSpusťte server pod ladicím nástrojem Delve.
make run-cli ARGS="-version"Spusťte příkaz serveru.
make config-resetObnovte config/config.json na výchozí hodnoty.
make clean, make nukeOdstraňte soubory ze sestavení; nuke také smaže vývojová data.

Vývojová databáze je postgres://mmuser:mostest_password@localhost/mattermost_test, výchozí zdroj dat serveru. Které kontejnery se spustí, určíte pomocí ENABLED_DOCKER_SERVICES v souboru server/config.override.mk nebo ve vašem prostředí (viz server/config.mk).

Webová rozhraní

V webapp/:

npm install      # also builds the shared packages
npm run build    # the classic interface, then Fusion

Výstupy se ukládají do webapp/channels/dist (klasické) a webapp/fusion/dist (Fusion). Příkaz make client v server/ je propojí jako server/client a server/client-fusion, odkud je server distribuuje: klasické pod /static/, Fusion pod /static/fusion/.

  • npm run run (nebo make run v webapp/) sleduje změny a přebuduje klasické rozhraní. Přidejte WATCH_FUSION=true, aby se přebudovala i Fusion.
  • npm run dev-server (make dev) spustí vývojový server webpacku: klasické rozhraní na portu 9005, Fusion na portu 9006.
  • Pokud chcete v prohlížeči zobrazit jedno z rozhraní, přidejte k adrese libovolné stránky parametr ?webui=fusion nebo ?webui=classic.

Testy a kontroly

PříkazKdeCo dělá
make test-serverserver/Testovací sada serveru, běží proti vývojovým kontejnerům. Trvá dlouho.
make test-server-quickserver/Pouze krátké testy.
go test ./channels/app/... -run TestNameserver/Jeden balíček nebo test, s běžícími kontejnery (make start-docker).
make check-styleserver/go vet, golangci-lint a další Go kontroly.
make testwebapp/Unit testy webové aplikace (Jest) ve všech balíčcích.
npm run test -- <pattern>webapp/fusionNěkteré testy Fusion.
make check-style, make check-typeswebapp/ESLint a TypeScript.
make i18n-extractserver/ a webapp/Aktualizuje soubory s anglickými řetězci po přidání nebo změně textů (viz Překlady).

Místo go mod tidy v server/ spouštějte make modules-tidy.

Vydávací archivy

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 sestaví webové rozhraní a binární soubory pro Linux v jednom kroku. Archiv obsahuje bin/antimatter, bin/amctl, výchozí config/config.json s README.md popisujícím změny nastavení, obě webová rozhraní, šablony, písma a překlady. Ostatní platformy: make package-osx, make package-windows, make package-freebsd.

Integrované aplikace

Běžné make package-linux sestaví archiv bez aplikací. Pokud je chcete zahrnout, jako to dělají publikované verze, nejdříve staňte podepsané balíčky aplikací a předejte jejich složku:

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 stáhne nejnovější vydání z GitHubu pro každou aplikaci uvedenou v souboru plugins.json repozitáře antimatter-docker, včetně jejího podpisu, a ověří podpis pomocí klíče pluginů Antimatteru. Ve výchozím nastavení se stáhnou Tabule, Hlasové kanály, Hovory, AI chat (Agenti), Úkoly, Hlasování, Poznámky, GIFy a Memes. Seznam změníte pomocí proměnné AM_BUNDLED_APPS (názvy repozitářů oddělené mezerami). Aplikace bez vydání nebo bez podpisu jsou přeskočeny s upozorněním. Balíčky se uloží do složky prepackaged_plugins/ archivu.

Balíčky .deb a .rpm

build/package/build-packages.sh <archive> <amd64|arm64> <version> <out-dir> převede release archiv na kompletní balíčky .deb a .rpm pomocí nfpm. Administrátorský průvodce popisuje, co tyto balíčky nainstalují: viz Instalace balíčku .deb nebo .rpm.

Workflow pro vydání

Workflow antimatter-release.yml v repozitáři serveru vykoná na GitHubu všechny tyto kroky: při tagu v* sestaví archivy a balíčky pro amd64 a arm64, včetně SHA256SUMS, a zveřejní je jako GitHub release daného tagu (prerelease pro verzi s -). Při ručním spuštění označí build číslem 0.9.0-dev.<run> a soubory ponechá jako artefakty workflow. Každý repozitář aplikace má workflow release.yml, který zveřejní jeho podepsaný balíček stejným způsobem.

Docker obraz

Repozitář antimatter-docker sestavuje publikované obrazy, server včetně aplikací, celé uvnitř Dockeru:

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

Vyžaduje Docker s buildx, Python 3, git a gpg, přibližně 16 GB RAM a 30 GB disku. Výsledek se načte jako ghcr.io/antimatterchat/antimatter:dev; vyzkoušejte to pomocí ANTIMATTER_IMAGE=ghcr.io/antimatterchat/antimatter:dev docker compose -f compose.local.yml up -d. Soubor plugins.json obsahuje seznam aplikací a sestavených verzí, varianty popisuje README v repozitáři.

Skript build-all.sh podepisuje přibalené aplikace klíčem pro podepisování Antimatter a sestavení obrazu odmítá nepodepsané aplikace. Bez tohoto privátního klíče, který mají pouze správci projektu, spusťte jednotlivé kroky samostatně: scripts/fetch-sources.sh, scripts/build-plugins.sh (balíčky aplikací v out/plugins/) a scripts/build-server.sh (archivy serveru v out/server/).

Sestavení a paměť

Webové rozhraní jsou velké webpack sestavení a nedostatek paměti je nejčastější příčinou selhání.

  • Příkaz npm run build sestaví klasické rozhraní a Fusion po sobě, ne paralelně, aby se snížil špičkový nárok na paměť. Nesnažte se je spouštět paralelně sami.
  • Minifikátor spouští jeden worker na každý procesor. Na stroji s mnoha jádry a málo paměti omezte počet procesorů, které sestavení vidí: taskset -c 0-5 npm run build.
  • Pokud Node.js dojde na heap, zvýšte jeho limit: NODE_OPTIONS=--max-old-space-size=6144. Sestavení v Dockeru používá právě tuto hodnotu (BUILD_NODE_OPTIONS v build.env).
  • Na menším stroji se vyvarujte současného spuštění celé testovací sady serveru, sestavení webu a sestavení Dockeru.

Aplikace

Každá aplikace (plugin) má vlastní repozitář a Makefile; příkaz make dist sestaví její balíček. Více viz Sestavení, instalace a ladění.

Desktopová aplikace

Desktopová aplikace je Electron aplikace. S Node.js 24 nebo novějším:

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)

Nastavení pro čas sestavení, jako jsou předem nakonfigurované servery, se nacházejí v src/common/config/buildConfig.ts. Bez Apple certifikátu nastavte AM_MAC_ADHOC_SIGN=true pro ad hoc podpis aplikace pro macOS bez notariace: Macs s Apple siliconem odmítají nesignovaný kód. Workflow release.yml v repozitáři sestavuje nesignované balíčky pro Linux, Windows a macOS při značce v*.

Mobilní aplikace

Mobilní aplikace je aplikace React Native; její README obsahuje seznam příkazů (npm run ios, npm run android). Pro sestavení vlastní kopie budete také potřebovat vlastní podpisové klíče, projekt Firebase pro oznámení na Androidu, klíč APNs pro iOS a push proxy uchovávající tyto přihlašovací údaje. Workflow release.yml v repozitáři sestavuje Android APK a AAB a nesignovanou iOS .ipa při značce v*, bez účtů v obchodech; její README obsahuje seznam tajných hodnot, které signují Android build a nastavují Firebase.