Bygning fra kildekode
Denne side forklarer, hvordan du bygger og kører Antimatter fra dens kildekode, enten for at arbejde med det eller for at lave dine egne builds. Den dækker serveren og webgrænsefladerne, som befinder sig i ét repository, og derefter Docker-billedet og appsene.
Det du skal bruge
- Go i den version, der er angivet i
server/go.mod(1.26.7 ved skrivetidspunktet). - Node.js og npm i de versioner, der er angivet i
.nvmrcogwebapp/package.json(Node 24.11.1 med npm 11.6.2). Med mise installerer repositoryetsmise.tomlden rigtige Node-version. - Docker med Compose: Udviklingsopsætningen kører PostgreSQL og et par andre tjenester i containere.
- make, git og en Linux- eller macOS-maskine.
- Minde: Bygning af webgrænsefladerne er den tunge del. Planlæg for 16 GB RAM; se Builds og minde.
git clone https://github.com/AntimatterChat/antimatter.git
cd antimatter
Repositoryet indeholder serveren i server/, webgrænsefladerne i webapp/ (Fusion i webapp/fusion, den klassiske i webapp/channels, fælles pakker i webapp/platform) og end-to-end-tests i e2e-tests/.
Kør en udviklingsserver
cd server
make run
make run starter udviklingscontainerne (PostgreSQL, Redis, en mail catcher og overvågningsværktøjer), kobler webapp-builds på plads, starter serveren i baggrunden med go run og starter webappens watcher, som bygger den klassiske grænseflade om, mens du redigerer den. Åbn http://localhost:8065 og opret en konto: Den første bliver systemadministrator.
Kommando (i server/) | Hvad den gør |
|---|---|
make run-server, make run-client | Start kun serveren eller kun webappens watcher. |
make restart-server | Genstart serveren efter ændringer i Go-kode. |
make stop | Stop serveren, watcheren og containerne. |
make debug-server | Kør serveren under Delve-fejlfinderen. |
make run-cli ARGS="-version" | Kør en serverkommando. |
make config-reset | Nulstil config/config.json til standardværdierne. |
make clean, make nuke | Fjern buildfiler; nuke sletter også udviklingsdataene. |
Udviklingsdatabasen er postgres://mmuser:mostest_password@localhost/mattermost_test, serverens standard datakilde. Vælg, hvilke containere der skal startes, med ENABLED_DOCKER_SERVICES i en server/config.override.mk-fil eller i din miljøvariabel (se server/config.mk).
Webgrænsefladerne
I webapp/:
npm install # also builds the shared packages
npm run build # the classic interface, then Fusion
Bygningerne lander i webapp/channels/dist (klassisk) og webapp/fusion/dist (Fusion). make client i server/ linker dem som server/client og server/client-fusion, hvor serveren serverer dem: klassisk under /static/, Fusion under /static/fusion/.
npm run run(ellermake runiwebapp/) overvåger og genbygger det klassiske grænseflade. TilføjWATCH_FUSION=truefor også at genbygge Fusion.npm run dev-server(make dev) kører i stedet webpacks udviklingsserver: klassisk på port 9005, Fusion på port 9006.- For at se enten den ene eller den anden grænseflade i browseren, tilføj
?webui=fusioneller?webui=classictil enhver sides adresse.
Tests og kontroller
| Command | Hvor | Hvad den gør |
|---|---|---|
make test-server | server/ | Serverens testsuite, mod udviklingscontainere. Det tager lang tid. |
make test-server-quick | server/ | Kun de korte tests. |
go test ./channels/app/... -run TestName | server/ | Én pakke eller test, med containere i gang (make start-docker). |
make check-style | server/ | go vet, golangci-lint og de øvrige Go-kontroller. |
make test | webapp/ | Webappens enhedstests (Jest), i hver pakke. |
npm run test -- <pattern> | webapp/fusion | Nogle af Fusions tests. |
make check-style, make check-types | webapp/ | ESLint og TypeScript. |
make i18n-extract | server/ og webapp/ | Opdaterer de engelske strengfiler, efter at du har tilføjet eller ændret strenge (se Oversættelser). |
Kør make modules-tidy i stedet for go mod tidy i server/.
Udgavearkiver
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 bygger webgrænsefladerne og Linux-binærerne i ét trin. Arkivet indeholder bin/antimatter, bin/amctl, en standard config/config.json med en README.md om ændring af indstillinger, begge webgrænseflader, skabeloner, skrifttyper og oversættelser. Andre platforme: make package-osx, make package-windows, make package-freebsd.
Medfølgende apps
En almindelig make package-linux bygger et arkiv uden apps. For at inkludere dem, som de udgivne releases gør, henter du først de signerede app-bundles og angiver deres mappe:
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 downloader den seneste GitHub-udgivelse af hver app, der er angivet i antimatter-dockers plugins.json, sammen med dens signatur, og kontrollerer signaturen mod Antimatters plugin-nøgle. Som standard hentes Whiteboard, Lydkanaler, Opkald, AI-chat (Agenter), To-do, Afstemninger, Notater, GIFs og Memes; AM_BUNDLED_APPS (repositorienavne, adskilt af mellemrum) ændrer listen. Apps uden en udgivelse eller uden signatur springes over med en advarsel. Pakkerne placeres i arkivets prepackaged_plugins/.
.deb- og .rpm-pakker
build/package/build-packages.sh <archive> <amd64|arm64> <version> <out-dir> omdanner et udgivelsesarkiv til alt-i-ét .deb- og .rpm-pakker ved hjælp af nfpm. Administratorvejledningen beskriver, hvad de installerer: se Installer .deb- eller .rpm-pakken.
Udgivelsesworkflowet
Serverens repository’s antimatter-release.yml-workflow udfører alt dette på GitHub: ved et v*-tag bygger det arkiver og pakker til amd64 og arm64, med SHA256SUMS, og udgiver dem som GitHub-release for tagget (en forududgivelse for en version med -). Kører det manuelt, nummereres bygget 0.9.0-dev.<run>, og filerne opbevares som workflow-artefakter. Hvert app-repository har et release.yml-workflow, der udgiver dets signerede bundle på samme måde.
Docker-billedet
Repositoryet antimatter-docker bygger de udgivne billeder, serveren med dens apps, helt inde i 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
Det kræver Docker med buildx, Python 3, git og gpg, ca. 16 GB RAM og 30 GB disk. Resultatet indlæses som ghcr.io/antimatterchat/antimatter:dev; prøv det med ANTIMATTER_IMAGE=ghcr.io/antimatterchat/antimatter:dev docker compose -f compose.local.yml up -d. plugins.json angiver apps og de byggede versioner, og repositoryets README forklarer varianterne.
build-all.sh signer de medfølgende apps med Antimatters signeringsnøgle, og billedbygningen afviser apps uden signatur. Uden den private nøgle, som kun vedligeholderne har, kan du køre de første trin alene: scripts/fetch-sources.sh, scripts/build-plugins.sh (app-bundles i out/plugins/) og scripts/build-server.sh (serverarkiver i out/server/).Bygning og hukommelse
Webgrænsefladerne er store webpack-bygninger, og manglende hukommelse er den mest almindelige årsag til bygfejl.
npm run buildbygger den klassiske grænseflade og Fusion efter hinanden, ikke sammen, for at holde toppen lav. Kør dem ikke parallelt selv.- Minifieren starter én worker per procesor. På en maskine med mange kerner og lidt hukommelse, begræs de procesorer, bygningen kan se:
taskset -c 0-5 npm run build. - Hvis Node løber tør for heap, hæver du grænsen:
NODE_OPTIONS=--max-old-space-size=6144. Docker-bygningen bruger denne værdi (BUILD_NODE_OPTIONSibuild.env). - Undgå at køre serverens fulde testsuite, en webbygning og en Docker-bygning samtidigt på en lille maskine.
Appene
Hver app (plugin) har sit eget repository og Makefile; make dist bygger dens bundle. Se Byg, installer og fejlfind.
Desktop-app
Desktop-appen er en Electron-app. Med Node.js 24 eller nyere:
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)
Indstillinger, der gælder ved bygning, såsom servere, der skal forudkonfigureres, findes i src/common/config/buildConfig.ts. Uden et Apple-certifikat skal du sætte AM_MAC_ADHOC_SIGN=true for at signere macOS-appen ad hoc, uden notarisation: Macs med Apple-silicon afviser ukodet kode. Repositoryets release.yml-workflow bygger upakkerede pakker til Linux, Windows og macOS ved en v*-tag.
Mobilapp
Mobilappen er en React Native-app; dens README indeholder en liste over kommandoer (npm run ios, npm run android). For at bygge din egen kopi skal du også have dine egne signeringsnøgler, et Firebase-projekt til Android-notifikationer, en APNs-nøgle til iOS og en push-proxy, der indeholder disse legitimationsoplysninger. Repositoryets release.yml-workflow bygger Android-APK og AAB samt en upakket iOS .ipa ved en v*-tag, uden butikskonti; dens README indeholder en liste over hemmeligheder, der signerer Android-bygget og sætter Firebase op.