Releases และการรัน release
cMind ถูกส่งมอบเป็น GitHub Releases ที่กำหนดเวอร์ชัน แต่ละ release จะเผยแพร่สิ่งต่อไปนี้สำหรับหนึ่ง SemVer tag:
- อิมเมจคอนเทนเนอร์ บน GHCR —
ghcr.io/amusleh-spotware-com/cmind-{web,mcp,node-agent,copy-agent,tests}ติดแท็กด้วยเวอร์ชัน (เช่น1.0.0-alpha.1) และsha-<commit>ลงลายเซ็น (cosign keyless) พร้อมการรับรองแหล่งที่มาของบิลด์ และ SBOM แบบ SPDX - Helm chart — ผลักไปยัง
oci://ghcr.io/amusleh-spotware-com/cmind/charts/cmindและแนบกับ release ในชื่อcmind-<version>.tgz - ไบนารี CtraderCliNode — ZIP แบบ self-contained ต่อแพลตฟอร์ม (
linux-x64,linux-arm64,win-x64,osx-arm64) สำหรับรัน node agent ระยะไกลโดยไม่ต้องมี .NET SDK SHA256SUMS.txtครอบคลุมทุกอาร์ติแฟกต์ที่แนบมา
Alpha ในตอนนี้ทุก release เป็น pre-release (
-alpha.N) คาดว่าจะมีการเปลี่ยนแปลงที่ทำให้เข้ากันไม่ได้ระหว่าง alpha ยังไม่มีการรับประกันการอัปเกรด/การย้ายข้อมูล ให้ปักหมุดเวอร์ชันที่แน่นอน — อย่าใช้latest
การกำหนดเวอร์ชัน
SemVer 2.0.0 รูปแบบแท็ก vX.Y.Z[-suffix] ส่วนต่อท้าย (-alpha.N, -beta.N, -rc.N) จะเผยแพร่ pre-release ของ
GitHub; แท็กอิมเมจและเวอร์ชันของ Helm chart ทั้งคู่เท่ากับเวอร์ชันโดยไม่มี v นำหน้า แอปที่กำลังทำงานจะแสดงค่านี้ที่
GET /version และในส่วนท้ายของ UI (Core.VersionInfo)
เลือก release
เรียกดู Releases และคัดลอกแท็กที่ต้องการ (เช่น
v1.0.0-alpha.1) ตรวจสอบอิมเมจก่อนรัน:
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
รัน — Kubernetes (Helm, แนะนำ)
appVersion ของ chart ปักหมุดแท็กอิมเมจที่ตรงกันไว้แล้ว ดังนั้นคุณส่งเพียงเวอร์ชันของ chart เท่านั้น
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='<secret ของคลัสเตอร์ 32+ อักขระ>'
แพ็กเกจ GHCR แบบส่วนตัวต้องใช้ image pull secret — สร้างหนึ่งอันแล้วส่งเข้าไป:
kubectl create secret docker-registry ghcr --namespace cmind \
--docker-server=ghcr.io --docker-username=<gh-user> --docker-password=<PAT-ที่มี-read:packages>
helm upgrade cmind ... --set image.pullSecrets='{ghcr}'
ตัวเลือก chart ทั้งหมด, ingress, Postgres ภายนอก และการปรับขนาด: ดู การปรับใช้ Kubernetes และ การปรับขนาด ตรวจสอบ:
kubectl -n cmind get pods
kubectl -n cmind port-forward svc/cmind-web 8080:8080
# → http://localhost:8080 ; GET /version คืนค่าเวอร์ชันของ release
รัน — Docker (โฮสต์เดียว, ดูอย่างรวดเร็ว)
รันโฮสต์ Web โดยตรงจากอิมเมจ release ของมัน ต้องใช้ Postgres และ Docker socket (โฮสต์ Web สร้าง/รัน cBot ผ่าน 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
เปิด http://localhost:8080 เพิ่มเซิร์ฟเวอร์ MCP (cmind-mcp) และ node agent ด้วยวิธีเดียวกัน; สำหรับโทโพโลยีแบบหลาย
บริการเต็มรูปแบบให้ใช้ Helm chart ดู การพัฒนาในเครื่อง สำหรับเส้นทาง Aspire dotnet run เมื่อทำงานจาก
ซอร์สโค้ดแทนที่จะเป็น release
รัน node agent ระยะไกลจากไบนารี
โฮสต์ระยะไกลที่ให้ความจุสำหรับการรัน/backtest สามารถรัน CtraderCliNode ได้โดยไม่ต้องติดตั้ง .NET ดาวน์โหลด ZIP ของ
แพลตฟอร์มจาก release แตกไฟล์ และรัน — มันจะลงทะเบียนตัวเองกับโฮสต์ Web และส่ง heartbeat
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://<โฮสต์-web-ของคุณ>' \
NodeAgent__DiscoveryJoinToken='<secret ของคลัสเตอร์ 32+ อักขระ อันเดียวกัน>' \
./CtraderCliNode
โฮสต์ต้องรัน Docker (agent เรียกใช้อิมเมจคอนโซล cTrader ผ่าน Docker CLI) ดู การปรับใช้ Kubernetes สำหรับการรัน node agent เป็น pod แบบ privileged
การสร้าง release (ผู้ดูแล)
Release ถูกสร้างโดย .github/workflows/release.yml เมื่อมีการ push แท็ก v* ใด ๆ — กระบวนการอยู่ใน
RELEASING.md ที่รากของ repo