Bygging fra kildekode
Denne siden forklarer hvordan du bygger og kjører Antimatter fra kildekoden, enten for å jobbe med den eller for å lage dine egne bygg. Den dekker serveren og webgrensesnittene, som ligger i ett repository, og deretter Docker-bildet og appene.
Det du trenger
- Gå, i versjonen i
server/go.mod(1.26.7 ved skrivetid). - Node.js og npm, i versjonene som står i
.nvmrcogwebapp/package.json(Node 24.11.1 med npm 11.6.2). Med mise installerer repositoryetsmise.tomlriktig Node. - Docker med Compose: utviklingsoppsettet kjører PostgreSQL og noen andre tjenester i containere.
- make, git og en maskin med Linux eller macOS.
- Minne: bygging av webgrensesnittene er den tunge delen. Planlegg for 16 GB RAM; se Bygg og minne.
git clone https://github.com/AntimatterChat/antimatter.git
cd antimatter
Repositoryet inneholder serveren i server/, webgrensesnittene i webapp/ (Fusion i webapp/fusion, klassisk i webapp/channels, felles pakker i webapp/platform) og end-to-end-tester i e2e-tests/.
Kjør en utviklingsserver
cd server
make run
make run starter utviklingscontainerne (PostgreSQL, Redis, en e-postfangst og overvåkningsverktøy), kobler webapp-byggene på plass, starter serveren i bakgrunnen med go run og starter webappens vakt, som bygger om det klassiske grensesnittet når du redigerer det. Åpne http://localhost:8065 og opprett en konto: den første blir systemadministrator.
Kommando (i server/) | Hva det gjør |
|---|---|
make run-server, make run-client | Start bare serveren, eller bare webappens vakt. |
make restart-server | Start serveren på nytt etter endringer i Go-koden. |
make stop | Stopp serveren, vakten og containerne. |
make debug-server | Kjør serveren under Delve-feilsøkeren. |
make run-cli ARGS="-version" | Kjør en serverkommando. |
make config-reset | Tilbakestill config/config.json til standardverdiene. |
make clean, make nuke | Fjern byggfiler; nuke sletter også utviklingsdataene. |
Utviklingsdatabasen er postgres://mmuser:mostest_password@localhost/mattermost_test, serverens standard datakilde. Velg hvilke containere som skal startes med ENABLED_DOCKER_SERVICES, i en server/config.override.mk-fil eller i miljøet ditt (se server/config.mk).
Webgrensesnittene
I webapp/:
npm install # also builds the shared packages
npm run build # the classic interface, then Fusion
Byggene lagres i webapp/channels/dist (klassisk) og webapp/fusion/dist (Fusion). make client i server/ kobler dem som server/client og server/client-fusion, der serveren leverer dem: klassisk under /static/, Fusion under /static/fusion/.
npm run run(ellermake runiwebapp/) overvåker og bygger om den klassiske grensesnittet. Legg tilWATCH_FUSION=truefor å bygge om Fusion også.npm run dev-server(make dev) kjører webpacks utviklingsserver i stedet: klassisk på port 9005, Fusion på port 9006.- For å se ett av grensesnittene i nettleseren, legg til
?webui=fusioneller?webui=classictil adressen til en hvilken som helst side.
Tester og sjekker
| Kommando | Hvor | Hva det gjør |
|---|---|---|
make test-server | server/ | Serverens testsuite, mot utviklingscontainerne. Det tar lang tid. |
make test-server-quick | server/ | Kun de korte testene. |
go test ./channels/app/... -run TestName | server/ | Én pakke eller test, med containerne i gang (make start-docker). |
make check-style | server/ | go vet, golangci-lint og de andre Go-sjekkene. |
make test | webapp/ | Webappens enhetstester (Jest), i alle pakker. |
npm run test -- <pattern> | webapp/fusion | Noen av Fusion-testene. |
make check-style, make check-types | webapp/ | ESLint og TypeScript. |
make i18n-extract | server/ og webapp/ | Oppdaterer de engelske strengfilene etter at du har lagt til eller endret strenger (se Oversettelser). |
Kjør make modules-tidy i stedet for go mod tidy i server/.
Utgavearkiver
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 webgrensesnittene og Linux-binærfilene i ett steg. Arkivet inneholder bin/antimatter, bin/amctl, en standard config/config.json med en README.md om endring av innstillinger, begge webgrensesnitt, malene, fontene og oversettelsene. Andre plattformer: make package-osx, make package-windows, make package-freebsd.
Bundlete apper
En vanlig make package-linux bygger et arkiv uten apper. For å inkludere dem, slik de offentliggjorte utgavene gjør, henter du først de signerte appbundlene og overfører mappen deres:
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 laster ned den nyeste GitHub-utgaven av hver app som er oppført i plugins.json i antimatter-docker, med signatur, og sjekker signaturen mot Antimatters plugin-nøkkel. Som standard henter den Whiteboard, Voice channels, Calls, Agents, Todo, Polls, Notes, GIFs og Memes; AM_BUNDLED_APPS (navn på repositorier, adskilt med mellomrom) endrer listen. Apper uten utgave, eller uten signatur, hoppes over med en advarsel. Bundlene plasseres i prepackaged_plugins/ i arkivet.
.deb- og .rpm-pakker
build/package/build-packages.sh <archive> <amd64|arm64> <version> <out-dir> omdanner et utgavearkiv til alle-i-én .deb- og .rpm-pakker, ved hjelp av nfpm. Administratørguiden beskriver hva de installerer: se Installer .deb- eller .rpm-pakken.
Utgavearbeidsflyten
Serverens repositorie antimatter-release.yml arbeidsflyt gjør alt dette på GitHub: ved en v*-merke bygger den arkivene og pakkene for amd64 og arm64, med SHA256SUMS, og publiserer dem som GitHub-utgaven for merket (en forhåndsutgave for en versjon med -). Kjørt manuelt, nummererer den bygget 0.9.0-dev.<run> og beholder filene som arbeidsflyt-artefakter. Hvert app-repositorie har en release.yml-arbeidsflyt som publiserer det signerte bundlet på samme måte.
Docker-bildet
Lageret antimatter-docker bygger de utgitte bildene, serveren med appene sine, helt inne 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 krever Docker med buildx, Python 3, git og gpg, omtrent 16 GB RAM og 30 GB disk. Resultatet lastes 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 lister appene og versjonene som er bygget, og lagerets README forklarer variantene.
build-all.sh signer de medfølgende appene med Antimatters signeringsnøkkel, og bildebbygget avviser apper som ikke er signerte. Uten den private nøkkelen, som bare vedlikeholderne har, kjører du de første stegene alene: scripts/fetch-sources.sh, scripts/build-plugins.sh (appbundler i out/plugins/) og scripts/build-server.sh (serverarkiver i out/server/).Bygging og minne
Webgrensesnittene er store webpack-bygg, og å løpe tom for minne er den vanligste årsaken til at bygget feiler.
npm run buildbygger det klassiske grensesnittet og Fusion etter hverandre, ikke samtidig, for å holde toppen lavere. Ikke kjør dem parallelt selv.- Minifiseren starter én worker per prosessor. På en maskin med mange kjerner og lite minne, begrens prosessorene bygget ser:
taskset -c 0-5 npm run build. - Hvis Node løper tom for heap, øk grensen:
NODE_OPTIONS=--max-old-space-size=6144. Docker-bygget bruker denne verdien (BUILD_NODE_OPTIONSibuild.env). - Unngå å kjøre serverens komplette testsuite, et webbygg og et Docker-bygg samtidig på en liten maskin.
Appene
Hver app (plugin) har sitt eget repository og Makefile; make dist bygger bundlen. Se Bygg, installer og feilsøk.
Skrivebordsapp
Skrivebordsappen 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)
Byggtidsinnstillinger, for eksempel servere som skal forhåndssettes, finnes i src/common/config/buildConfig.ts. Uten et Apple-sertifikat, sett AM_MAC_ADHOC_SIGN=true for å signere macOS-appen ad hoc, uten notariseringsprosess: Macs med Apple-silikon nekter å kjøre usignert kode. Repositoryets release.yml-workflow bygger usignerte pakker for Linux, Windows og macOS ved en v*-tag.
Mobilapp
Mobilappen er en React Native-app; README-en inneholder en liste over kommandoer (npm run ios, npm run android). For å bygge din egen kopi trenger du også dine egne signeringsnøkler, et Firebase-prosjekt for Android-varsler, en APNs-nøkkel for iOS, og en push-proxy som lagrer disse legitimasjonene. Repositoryets release.yml-workflow bygger Android-APK og AAB, samt en usignert iOS-.ipa, ved en v*-tag, uten butikk-kontoer; README-en inneholder en liste over hemmeligheter som signerer Android-bygget og setter opp Firebase.