Wydania i uruchamianie wydania
cMind jest dostarczany jako wersjonowane Wydania GitHub. Każde wydanie publikuje dla jednego tagu SemVer:
- Obrazy kontenerów w GHCR —
ghcr.io/amusleh-spotware-com/cmind-{web,mcp,node-agent,copy-agent,tests}, oznaczone wersją (np.1.0.0-alpha.1) orazsha-<commit>. Podpisane (cosign keyless) z poświadczeniami pochodzenia kompilacji i SBOM w formacie SPDX. - Chart Helm — wypchnięty do
oci://ghcr.io/amusleh-spotware-com/cmind/charts/cmindi dołączony do wydania jakocmind-<version>.tgz. - Pliki binarne CtraderCliNode — samodzielne archiwa ZIP dla każdej platformy (
linux-x64,linux-arm64,win-x64,osx-arm64) do uruchomienia zdalnego agenta węzła bez .NET SDK. SHA256SUMS.txtobejmujący każdy dołączony artefakt.
Alfa. Na razie każde wydanie jest wydaniem wstępnym (
-alpha.N). Między alfami spodziewaj się zmian łamiących zgodność; nie ma jeszcze gwarancji aktualizacji/migracji. Przypnij dokładną wersję — nigdylatest.
Wersjonowanie
SemVer 2.0.0. Forma tagu vX.Y.Z[-suffix]. Sufiks (-alpha.N, -beta.N, -rc.N) publikuje wydanie
wstępne GitHub; tag obrazu i wersja chartu Helm są równe wersji bez wiodącego v. Działająca aplikacja
udostępnia ją pod GET /version oraz w stopce UI (Core.VersionInfo).
Wybór wydania
Przejrzyj Wydania i skopiuj żądany tag (np.
v1.0.0-alpha.1). Zweryfikuj obraz przed uruchomieniem:
VERSION=1.0.0-alpha.1
cosign verify ghcr.io/amusleh-spotware-com/cmind-web:$VERSION \
--certificate-identity-regexp 'https://github.com/amusleh-spotware-com/cmind/.github/workflows/release.yml@.*' \
--certificate-oidc-issuer https://token.actions.githubusercontent.com
Uruchamianie — Kubernetes (Helm, zalecane)
appVersion chartu przypina już odpowiedni tag obrazu, więc przekazujesz tylko wersję chartu.
VERSION=1.0.0-alpha.1
helm install cmind oci://ghcr.io/amusleh-spotware-com/cmind/charts/cmind \
--version $VERSION \
--namespace cmind --create-namespace \
--set secrets.pgPassword='<strong>' \
--set secrets.ownerEmail='owner@example.com' \
--set secrets.ownerPassword='<Strong-Pass!>' \
--set secrets.discoveryJoinToken='<sekret klastra min. 32 znaki>'
Prywatne pakiety GHCR wymagają sekretu pobierania obrazu — utwórz go i przekaż:
kubectl create secret docker-registry ghcr --namespace cmind \
--docker-server=ghcr.io --docker-username=<gh-user> --docker-password=<PAT-z-read:packages>
helm upgrade cmind ... --set image.pullSecrets='{ghcr}'
Pełne opcje chartu, ingress, zewnętrzny Postgres i skalowanie: zobacz Wdrożenie Kubernetes i Skalowanie. Weryfikacja:
kubectl -n cmind get pods
kubectl -n cmind port-forward svc/cmind-web 8080:8080
# → http://localhost:8080 ; GET /version zwraca wersję wydania
Uruchamianie — Docker (pojedynczy host, szybki podgląd)
Uruchom host Web bezpośrednio z jego obrazu wydania. Potrzebuje Postgresa i gniazda Docker (host Web buduje/uruchamia cBoty przez lokalne Docker CLI).
VERSION=1.0.0-alpha.1
docker network create cmind
docker run -d --name cmind-pg --network cmind \
-e POSTGRES_PASSWORD=change-me -e POSTGRES_DB=cmind postgres:17
docker run -d --name cmind-web --network cmind -p 8080:8080 \
-v /var/run/docker.sock:/var/run/docker.sock \
-e ConnectionStrings__Default='Host=cmind-pg;Database=cmind;Username=postgres;Password=change-me' \
-e App__Owner__Email='owner@example.com' \
-e App__Owner__Password='Change-Me-Str0ng!' \
ghcr.io/amusleh-spotware-com/cmind-web:$VERSION
Otwórz http://localhost:8080. Dodaj serwer MCP (cmind-mcp) i agentów węzłów w ten sam sposób; dla pełnej
topologii wielousługowej użyj chartu Helm. Zobacz Programowanie lokalne dla ścieżki Aspire
dotnet run przy pracy ze źródeł zamiast z wydania.
Uruchamianie zdalnego agenta węzła z pliku binarnego
Zdalne hosty zapewniające moc uruchamiania/backtestów mogą uruchomić CtraderCliNode bez zainstalowanego
.NET. Pobierz ZIP platformy z wydania, rozpakuj i uruchom — sam rejestruje się w hoście Web i wysyła
heartbeaty.
VERSION=1.0.0-alpha.1
curl -LO https://github.com/amusleh-spotware-com/cmind/releases/download/v$VERSION/ctrader-cli-node-$VERSION-linux-x64.zip
sha256sum -c ctrader-cli-node-$VERSION-linux-x64.zip.sha256
unzip ctrader-cli-node-$VERSION-linux-x64.zip -d cmind-node && cd cmind-node
NodeAgent__MainBaseUrl='https://<twój-host-web>' \
NodeAgent__DiscoveryJoinToken='<ten sam sekret klastra min. 32 znaki>' \
./CtraderCliNode
Host musi mieć uruchomiony Docker (agent uruchamia obraz konsoli cTrader przez Docker CLI). Zobacz Wdrożenie Kubernetes, aby uruchamiać agentów węzłów jako uprzywilejowane pody.
Tworzenie wydania (opiekunowie)
Wydania są tworzone przez .github/workflows/release.yml przy każdym wypchniętym tagu v* — proces opisano
w RELEASING.md w katalogu głównym
repozytorium.