Kääntäminen lähdekoodista

Tämä sivu kertoo, miten Antimatter käännetään ja ajetaan lähdekoodista, joko sen kehitystä varten tai omien käännösten luomiseksi. Sivulla käsitellään palvelin ja verkkokäyttöliittymät, jotka sijaitsevat samassa varastossa, sekä Docker-kuvake ja sovellukset.

Mitä tarvitset

  • Siirry versioon, joka on määritetty tiedostossa server/go.mod (kirjoitushetkellä 1.26.7).
  • Node.js ja npm, versiot, jotka on määritelty tiedostoissa .nvmrc ja webapp/package.json (Node 24.11.1 ja npm 11.6.2). mise-työkalun avulla varaston mise.toml-tiedosto asenta oikean Node-version.
  • Docker Compose-työkalulla: kehitysympäristössä PostgreSQL ja muutamat muut palvelut ajetaan konteinereissa.
  • make, git sekä Linux- tai macOS-kone.
  • Muisti: verkkokäyttöliittymien kääntäminen on raskain vaihe. Varaa 16 Gt RAM-muistia; katso osio Käännökset ja muisti.
git clone https://github.com/AntimatterChat/antimatter.git
cd antimatter

Varastossa palvelin sijaitsee hakemistossa server/, verkkokäyttöliittymät hakemistossa webapp/ (Fusion hakemistossa webapp/fusion, klassinen hakemistossa webapp/channels ja yhteiset paketit hakemistossa webapp/platform) sekä päästä päähän -testit hakemistossa e2e-tests/.

Kehityspalvelimen käynnistys

cd server
make run

make run käynnistää kehityskontainerit (PostgreSQL, Redis, sähköpostinsäätäjän ja valvontatyökalut), asettaa verkkosovelluksen käännökset paikoilleen, käynnistää palvelimen taustalle komennolla go run ja käynnistää verkkosovelluksen seurantatyökalun, joka kääntää klassisen käyttöliittymän uudelleen, kun sitä muokataan. Avaa osoite http://localhost:8065 ja luo tili: ensimmäinen tili on järjestelmän ylläpitäjä.

Komento (hakemistossa server/)Toiminto
make run-server, make run-clientKäynnistä vain palvelin tai vain verkkosovelluksen seurantatyökalu.
make restart-serverKäynnitä palvelin uudelleen Go-koodin muuttamisen jälkeen.
make stopPysäytä palvelin, seurantatyökalu ja kontainerit.
make debug-serverAja palvelin Delve-vianetsintäohjelmalla.
make run-cli ARGS="-version"Aja palvelinkomento.
make config-resetPalauta config/config.json oletusasetuksiin.
make clean, make nukePoista käännöstiedostot; nuke poistaa myös kehitysdatan.

Kehitystietokanta on postgres://mmuser:mostest_password@localhost/mattermost_test, joka on palvelimen oletusdatasäiliö. Valitse, mitkä kontainerit käynnistetään, muuttujalla ENABLED_DOCKER_SERVICES tiedostossa server/config.override.mk tai ympäristömuuttujana (katso server/config.mk).

Verkkokäyttöliittymät

Hakemistossa webapp/:

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

Käännökset sijoittuvat hakemistoihin webapp/channels/dist (klassinen) ja webapp/fusion/dist (Fusion). make client -komento hakemistossa server/ linkkaa ne poluille server/client ja server/client-fusion, josta palvelin palvelee niitä: klassinen rajapinta polulla /static/ ja Fusion polulla /static/fusion/.

  • npm run run (tai make run hakemistossa webapp/) seuraa muutoksia ja kääntää klassisen rajapinnan uudelleen. Lisää WATCH_FUSION=true -muuttuja, jotta myös Fusion käännetään uudelleen.
  • npm run dev-server (make dev) ajaa webpackin kehityspalvelimen: klassinen rajapinta portissa 9005 ja Fusion portissa 9006.
  • Näet selaimessa toisen tai toisen rajapinnan lisäämällä osoitteen loppuun ?webui=fusion tai ?webui=classic.

Testit ja tarkistukset

KomentoMissäToiminto
make test-serverserver/Palvelimen testisarja, joka ajetaan kehityskontteja vasten. Se kestää kauan.
make test-server-quickserver/Vain lyhyet testit.
go test ./channels/app/... -run TestNameserver/Yksi paketti tai testi, kun kontit ovat käynnissä (make start-docker).
make check-styleserver/go vet, golangci-lint ja muut Go-tarkistukset.
make testwebapp/Web-sovelluksen yksikkötestit (Jest) kaikissa pakketeissa.
npm run test -- <pattern>webapp/fusionOsa Fusionin testeistä.
make check-style, make check-typeswebapp/ESLint ja TypeScript.
make i18n-extractserver/ ja webapp/Päivittää englanninkieliset merkkijonotiedostot, kun lisäät tai muutat merkkijonoja (ks. Käännökset).

Käytä make modules-tidy -komentoa hakemistossa server/ sen sijaan, että ajaisit go mod tidy.

Julkaisuarkistot

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 rakentaa web-käyttöliittymät ja Linux-binäärit yhdellä komennolla. Arkisto sisältää tiedostot bin/antimatter, bin/amctl, oletusasetustiedoston config/config.json, jossa on README.md asetusten muuttamisesta, molemmat web-käyttöliittymät, mallit, fontit ja käännökset. Muut alustat: make package-osx, make package-windows, make package-freebsd.

Sisällytetyt sovellukset

Pelkkä make package-linux luo arkiston ilman sovelluksia. Jos haluat sisällyttää ne, kuten julkaisut tekevät, hae ensin allekirjoitetut sovelluspaketit ja anna niiden kansio:

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 lataa antimatter-dockerin plugins.json-tiedostossa luetellun sovelluksen viimeisimmän GitHub-julkaisun ja sen allekirjoituksen, ja tarkistaa allekirjoituksen Antimatterin lisäavaimella. Oletuksena se noutaa Whiteboard-, Voice channels-, Calls-, AI chat (Agents)-, Todo-, Polls-, Notes-, GIFs- ja Memes-sovellukset; AM_BUNDLED_APPS (arkistojen nimet, välilyönnillä erotettuna) muuttaa listaa. Sovellukset, joilla ei ole julkaisua tai allekirjoitusta, ohitetaan varoituksella. Paketit sijoitetaan arkiston prepackaged_plugins/-kansioon.

.deb- ja .rpm-paketit

build/package/build-packages.sh <archive> <amd64|arm64> <version> <out-dir> muuttaa julkaisuarkiston kaiken yhteen .deb- ja .rpm-paketiksi käyttäen nfpm:ää. Ylläpito-oppaassa kuvataan, mitä ne asentavat: katso Asenna .deb- tai .rpm-paketti.

Julkaisutyönkulku

Palvelinarkiston antimatter-release.yml-työnkulku tekee kaiken tämän GitHubissa: v*-tunnisteella se rakentaa arkistot ja paketit arkkitehtuureille amd64 ja arm64 tiedoston SHA256SUMS kanssa ja julkaisee ne tunnisteen GitHub-julkaisuna (esijulkaisu, jos versiossa on -). Käsin ajettuna se numeroi koonnin 0.9.0-dev.<run> ja säilyttää tiedostot työnkulun artefakteina. Jokaisella sovellusarkistolla on release.yml-työnkulku, joka julkaisee sen allekirjoitetun paketin samalla tavalla.

Docker-kuvio

antimatter-docker-varastossa luodaan julkaistavat kiot, palvelin ja sen sovellukset, kokonaan Dockerin sisällä:

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

Tarvitaan Docker buildx-työkalulla, Python 3, git ja gpg, noin 16 Gt RAM-muistia ja 30 Gt levystiivistä. Tulos ladataan nimellä ghcr.io/antimatterchat/antimatter:dev; kokeile sitä komennolla ANTIMATTER_IMAGE=ghcr.io/antimatterchat/antimatter:dev docker compose -f compose.local.yml up -d. Tiedostossa plugins.json luetellaan sovellukset ja käännetyt versiot, ja varaston README-tiedosto selittää eri vaihtoehdot.

build-all.sh allekirjoittaa mukana toimitetut sovellukset Antimatterin allekirjoitustavalla, ja kuvan rakennus hylkää allekirjoittamattomat sovellukset. Ilman tätä yksityistä avainta, josta vain ylläpitäjillä on kopio, aja ensimmäiset vaiheet erikseen: scripts/fetch-sources.sh, scripts/build-plugins.sh (sovelluspaketit hakemistossa out/plugins/) ja scripts/build-server.sh (palvelimen arkistot hakemistossa out/server/).

Rakennus ja muisti

Verkkokeskkusien käyttöliittymät ovat suuria webpack-rakennuksia, ja muistin loppuminen on yleisin rakennusvirhe.

  • npm run build rakentaa klassisen käyttöliittymän ja Fusionin peräkkäin, ei samanaikaisesti, jotta huippukäyttö pysyy matalana. Älä aja niitä itse samanaikaisesti.
  • Pienentäjä käynnistää yhden työntekijän perä prosessori. Jos koneella on paljon ytimiä, mutta vähän muistia, rajaa rakennuksen näkemät prosessorit: taskset -c 0-5 npm run build.
  • Jos Node loppuu heap-muistista, nosta sen raja: NODE_OPTIONS=--max-old-space-size=6144. Docker-rakennus käyttää tätä arvoa (BUILD_NODE_OPTIONS -muuttuja build.env-tiedostossa).
  • Vältä palvelimen koko testisuiten, verkkorakennuksen ja Docker-rakennuksen ajamista samanaikaisesti pienellä koneella.

Sovellukset

Jokaisella sovelluksella (liitännäisellä) on oma varastonsa ja Makefile-ohjelmisto; make dist rakentaa sen paketin. Katso Rakennus, asennus ja vianetsintä.

Työpöytäsovellus

Työpöytäsovellus on Electron-sovellus. Node.js 24 tai uudempi vaaditaan:

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)

Käännösajankohdan asetukset, kuten esikonfiguroitavat palvelimet, ovat tiedostossa src/common/config/buildConfig.ts. Jos sinulla ei ole Apple-varmennetta, aseta AM_MAC_ADHOC_SIGN=true allekirjoittaaksesi macOS-sovelluksen ad hoc -menetelmällä ilman vahvistusta: Apple Silicon -Makit hylkäävät allekirjoittamattoman koodin. Tietovaraston release.yml-työnkulku luo allekirjoittamattomat paketit Linuxille, Windowsille ja macOS:lle v*-tagissa.

Mobiilisovellus

Mobiilisovellus on React Native -sovellus; sen README-tiedosto sisältää komennot (npm run ios, npm run android). Jotta voit kääntää oman kopiosi, tarvitset myös omat allekirjoitusavaimet, Firebase-projektin Android-ilmoituksia varten, APNs-avaimen iOS:lle ja push-välityspalvelimen, joka sisältää nämä kirjautumistiedot. Tietovaraston release.yml-työnkulku luo Android APK- ja AAB-tiedostot sekä allekirjoittamattoman iOS-tiedoston .ipa v*-tagissa ilman kauppakauppa-tiliä; sen README-tiedosto sisältää salaisuudet, jotka allekirjoittavat Android-käännöksen ja määrittävät Firebasen.