Kaynaktan derleme
Bu sayfa, Antimatter'ı kaynak kodundan nasıl derleyip çalıştıracağınızı, üzerinde çalışmak veya kendi derlemelerinizi oluşturmak için açıklar. Tek bir depoda barınan sunucu ve web arayüzlerini, ardından Docker imajını ve uygulamaları kapsar.
Gerekli olanlar
- Go,
server/go.modiçindeki sürüm (yazım sırasında 1.26.7). - Node.js ve npm,
.nvmrcvewebapp/package.jsoniçindeki sürümler (npm 11.6.2 ile Node 24.11.1). mise ile, depodakimise.tomldoğru Node sürümünü yükler. - Docker ve Compose: geliştirme ortamı, PostgreSQL ve birkaç diğer hizmeti konteynerlerde çalıştırır.
- make, git ve bir Linux veya macOS makinesi.
- Bellek: web arayüzlerini derlemek en ağır kısımdır. 16 GB RAM planlayın; bkz. Derlemeler ve bellek.
git clone https://github.com/AntimatterChat/antimatter.git
cd antimatter
Depo, sunucuyu server/ içinde, web arayüzlerini webapp/ içinde (Fusion webapp/fusion içinde, klasik webapp/channels içinde, ortak paketler webapp/platform içinde) ve uçtan uca testleri e2e-tests/ içinde barındırır.
Geliştirme sunucusu çalıştırma
cd server
make run
make run, geliştirme konteynerlerini (PostgreSQL, Redis, bir e-posta yakalayıcı ve izleme araçları) başlatır, web uygulaması derlemelerini yerine bağlar, sunucuyu arka planda go run ile başlatır ve web uygulamasının izleyicisini (watcher) başlatır; bu izleyici, düzenledikçe klasik arayüzü yeniden derler. http://localhost:8065 adresini açın ve bir hesap oluşturun: ilk hesap sistem yöneticisi olur.
Komut (server/ içinde) | Ne işe yarar |
|---|---|
make run-server, make run-client | Yalnızca sunucuyu veya yalnızca web uygulaması izleyicisini başlatın. |
make restart-server | Go kodunu değiştirdikten sonra sunucuyu yeniden başlatın. |
make stop | Sunucuyu, izleyiciyi ve konteynerleri durdurun. |
make debug-server | Sunucuyu Delve hata ayıklayıcısı altında çalıştırın. |
make run-cli ARGS="-version" | Bir sunucu komutu çalıştırın. |
make config-reset | config/config.json dosyasını varsayılanlara sıfırlayın. |
make clean, make nuke | Derleme dosyalarını silin; nuke ayrıca geliştirme verilerini de siler. |
Geliştirme veritabanı postgres://mmuser:mostest_password@localhost/mattermost_test olup sunucunun varsayılan veri kaynağıdır. Hangi konteynerlerin başlayacağını ENABLED_DOCKER_SERVICES ile seçin; bunu bir server/config.override.mk dosyasında veya ortamınızda yapın (bkz. server/config.mk).
Web arayüzleri
webapp/ içinde:
npm install # also builds the shared packages
npm run build # the classic interface, then Fusion
Derlemeler webapp/channels/dist (klasik) ve webapp/fusion/dist (Fusion) dizinlerine yerleştirilir. server/ dizininde çalıştırılan make client komutu, bu dosyaları sırasıyla server/client ve server/client-fusion olarak bağlar; sunucu da bunları klasik arayüz için /static/, Fusion için /static/fusion/ altında sunar.
npm run run(veyawebapp/dizinindemake run) klasik arayüzü izleyerek yeniden derler. Fusion'ı da yeniden derlemek içinWATCH_FUSION=trueekleyin.npm run dev-server(make dev) bunun yerine webpack'in geliştirme sunucusunu çalıştırır: klasik arayüz 9005, Fusion 9006 portunda.- Tarayıcıda bir arayüzü diğerinden ayrı görmek için herhangi bir sayfanın adresine
?webui=fusionveya?webui=classicekleyin.
Testler ve denetimler
| Komut | Nerede | Ne işe yarar |
|---|---|---|
make test-server | server/ | Geliştirme konteynerlerine karşı sunucu test paketi. Uzun sürer. |
make test-server-quick | server/ | Yalnızca kısa testler. |
go test ./channels/app/... -run TestName | server/ | Konteynerler çalışırken (make start-docker) tek bir paket veya test. |
make check-style | server/ | go vet, golangci-lint ve diğer Go denetimleri. |
make test | webapp/ | Her pakette web uygulamasının birim testleri (Jest). |
npm run test -- <pattern> | webapp/fusion | Fusion'ın bazı testleri. |
make check-style, make check-types | webapp/ | ESLint ve TypeScript. |
make i18n-extract | server/ ve webapp/ | Dizeler eklediğinizde veya değiştirdiğinizde İngilizce dize dosyalarını günceller (bkz. Çeviriler). |
server/ dizininde go mod tidy yerine make modules-tidy çalıştırın.
Sürüm arşivleri
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 komutu, web arayüzlerini ve Linux ikili dosyalarını tek seferde derler. Arşiv, bin/antimatter, bin/amctl, ayarları değiştirme konusunda bir README.md içeren varsayılan config/config.json, her iki web arayüzü, şablonlar, yazı tipleri ve çevirileri barındırır. Diğer platformlar: make package-osx, make package-windows, make package-freebsd.
Paketlenmiş uygulamalar
Sadece make package-linux komutu, uygulamalar olmadan bir arşiv oluşturur. Yayınlanan sürümlerde yapıldığı gibi uygulamaları paketlemek için, önce imzalı uygulama paketlerini indirin ve klasörlerini iletin:
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, antimatter-docker'ın plugins.json dosyasında listelenen her uygulamanın en son GitHub sürümünü, imzasıyla birlikte indirir ve imzayı Antimatter'ın eklenti anahtarıyla karşılaştırır. Varsayılan olarak Whiteboard, Voice channels, Calls, Agents, Todo, Polls, Notes, GIFs ve Memes'ı alır; AM_BUNDLED_APPS (boşluklarla ayrılmış depo adları) bu listeyi değiştirir. Sürümü veya imzası olmayan uygulamalar, bir uyarıyla atlanır. Paketler, arşivin prepackaged_plugins/ klasörüne yerleştirilir.
.deb ve .rpm paketleri
build/package/build-packages.sh <archive> <amd64|arm64> <version> <out-dir> komutu, nfpm aracılığıyla bir sürüm arşivini, her şeyi içeren .deb ve .rpm paketlerine dönüştürür. Yönetici kılavuzu, bu paketlerin neleri yüklediğini açıklar: bkz. .deb veya .rpm paketini yükleyin.
Sürüm iş akışı
Sunucu deposunun antimatter-release.yml iş akışı, tüm bunları GitHub üzerinde yapar: v* etiketiyle amd64 ve arm64 için arşivleri ve paketleri, SHA256SUMS ile birlikte oluşturur ve bunları etiketin GitHub sürümü olarak yayınlar (- içeren bir sürüm için ön sürüm). Manuel olarak çalıştırıldığında, derlemeyi 0.9.0-dev.<run> olarak numaralandırır ve dosyaları iş akışı artefaktları olarak saklar. Her uygulama deposu, imzalı paketini aynı şekilde yayınlayan bir release.yml iş akışına sahiptir.
Docker imajı
antimatter-docker deposu, sunucuyu ve uygulamalarını tamamen Docker içinde derleyerek yayımlanan imajları oluşturur:
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
Docker (buildx ile), Python 3, git ve gpg gerektirir; yaklaşık 16 GB RAM ve 30 GB disk alanı gerekir. Sonuç, ghcr.io/antimatterchat/antimatter:dev olarak yüklenir; ANTIMATTER_IMAGE=ghcr.io/antimatterchat/antimatter:dev docker compose -f compose.local.yml up -d komutuyla deneyebilirsiniz. plugins.json dosyası derlenen uygulamaları ve sürümlerini listeler, depoyun README dosyası ise varyantları açıklar.
build-all.sh, paketlenmiş uygulamaları Antimatter imzalama anahtarıyla imzalar ve görüntü derlemesi imzasız uygulamaları reddeder. Yalnızca bakımcıların sahip olduğu bu özel anahtar olmadan yalnızca ilk adımları çalıştırın: scripts/fetch-sources.sh, scripts/build-plugins.sh (uygulama paketleri out/plugins/ içinde) ve scripts/build-server.sh (sunucu arşivleri out/server/ içinde).Derleme ve bellek
Web arayüzleri büyük webpack derlemeleridir ve bellek yetersizliği en yaygın derleme hatasıdır.
npm run build, tepe bellek kullanımını düşük tutmak için klasik arayüzü ve Fusion'u sırayla, birlikte değil derler. Bunları kendiniz paralel olarak çalıştırmayın.- Sıkıştırıcı, işlemci başına bir işçi başlatır. Çekirdeği çok ama belleği az olan bir makinede, derlemenin gördüğü işlemci sayısını sınırlayın:
taskset -c 0-5 npm run build. - Node yığın (heap) belleği dolarsa, sınırını artırın:
NODE_OPTIONS=--max-old-space-size=6144. Docker derlemesi bu değeri kullanır (build.enviçindekiBUILD_NODE_OPTIONS). - Küçük bir makinede sunucunun tam test paketi, bir web derlemesi ve bir Docker derlemesini aynı anda çalıştırmaktan kaçının.
Uygulamalar
Her uygulamanın (eklentinin) kendi deposu ve Makefile'ı vardır; make dist paketini derler. Derleme, kurulum ve hata ayıklama bölümüne bakın.
Masaüstü uygulaması
Masaüstü uygulaması bir Electron uygulamasıdır. Node.js 24 veya üstü ile:
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)
Sunucuları önceden yapılandırmak gibi derleme zamanı ayarları src/common/config/buildConfig.ts dosyasında bulunur. Apple sertifikası yoksa, macOS uygulamasını onaylama (notarisation) işlemi olmadan ad hoc olarak imzalamak için AM_MAC_ADHOC_SIGN=true değerini ayarlayın: Apple silikonlu Mac'ler imzasız kodu reddeder. Deponun release.yml iş akışı, v* etiketiyle Linux, Windows ve macOS için imzasız paketleri oluşturur.
Mobil uygulama
Mobil uygulama bir React Native uygulamasıdır; README'si komutları (npm run ios, npm run android) listeler. Kendi kopyanızı oluşturmak için ayrıca kendi imzalama anahtarlarınıza, Android bildirimleri için bir Firebase projesine, iOS için bir APNs anahtarına ve bu kimlik bilgilerini barındıran bir push proxy'ye de ihtiyacınız vardır. Deponun release.yml iş akışı, mağaza hesapları olmadan v* etiketiyle Android APK ve AAB dosyalarını ile imzasız iOS .ipa dosyasını oluşturur; README'si Android derlemesini imzalayan ve Firebase'i yapılandıran gizli bilgileri listeler.