Built for build automation
From a solo developer's packaging script to continuous integration inside the enterprise network — one tool covers it all
Parallel DAG scheduling
Declare dependencies with needs to form a DAG. Jobs run in parallel, failed dependencies skip downstream jobs, and the run page renders a Blue Ocean-style graph.
Distributed Agents
Agents dial out to the Master over a gRPC bidirectional stream: pull-based job claiming, heartbeat leases, auto-reconnect, and orphaned-job requeue — no inbound ports needed on build machines.
Real-time everywhere
Every page holds its own SignalR connection and updates live. A heartbeat watchdog retries with exponential backoff — the whole app has no manual refresh button.
xterm.js color logs
Per-line timestamps, JSONL resume cursors, full ANSI color, per-step log downloads, and timeout kills of the entire process tree.
Config as Git repos
Each job's YAML config is its own Git repository: saving in the web editor commits automatically, giving you history, rollback, and git clone for free.
Many ways to trigger
Manual runs with parameters, Git push webhooks (HMAC verification + branch globs), PR/MR triggers, and cron schedules — with commit status written back to GitHub/GitLab.
Five notification channels
WeCom, DingTalk, Slack, generic webhooks, and SMTP email — filterable per channel, with color-coded success/failure cards.
Enterprise-grade access
Three-tier RBAC, per-project visibility, personal API tokens, and LDAP domain login with group mapping.
Fully open source under MIT
Use, modify, and distribute freely — including commercial use. Your CI, your rules.
Up and running in 3 minutes
No database to install, no plugin ecosystem to babysit — two commands and you're live
:: 启动 Server(Web :5000) scripts\start-server.cmd :: 在打包机上启动 Agent scripts\start-agent.cmd \ --Agent:EnrollToken=<令牌> \ --Agent:AgentName=build-1 # 默认账号 admin / admin · 首次启动自动创建
name: UnityCIGame2 jobs: prepare: runs_on: agent steps: - name: prepare command: python CI/platform/windows/prepare.py build: needs: [prepare] steps: - name: build command: python CI/platform/windows/build.py deploy: needs: [build] steps: - name: deploy command: python CI/platform/windows/deploy.py
Born for Unity builds
Not a single line of Unity-specific code inside the CI — build knowledge lives in your game repo, the engine only orchestrates
prepare.pyAgent self-check: prints build environment variables to confirm UNITY_PATH and working directory
build.pyLaunches the Unity 6 command line (-batchmode -executeMethod), streaming logs to the web terminal line by line
deploy.pyArchives artifacts, pushes a WeCom notification, and writes build status back to the commit
The project stays where it is — CI comes to it: bind a task directly to a local Unity project directory, no need to push gigabytes into Git. From first script to a Windows build: one hour, measured.
Hand your packaging to Infinity CI
Deploy as a single EXE or in Docker. SQLite single-file storage — backing up is copying one directory