DockFlow is a self-hosted, distributed CI/CD platform that orchestrates build pipelines across remote agents. It features isolated Docker environments, real-time log streaming, and artifact management.
- Distributed Architecture: Backend orchestrates; lightweight Go Agents execute.
- Docker Isolation: Each step runs in a container with a shared workspace (Docker Volumes).
- Infinite Scale: Add more Agents to scale your build capacity horizontally.
- Real-Time Logs: Watch build logs stream instantly via WebSockets.
- Artifact Management: Automatically zip and store build outputs (JARs, Binaries).
- YAML Pipelines: Simple, declarative build configuration.
- Backend (Java/Spring Boot): The brain. Manages users, projects, and dispatches jobs.
- Agent (Golang): The worker. Connects to backend and executes Docker commands.
- Frontend (React): The interface. For managing pipelines and viewing status.
- Docker & Docker Compose (for Backend infrastructure).
- Java 17+ (to run Backend).
- Go 1.21+ (to replicate/build Agent).
- Node.js 18+ (to run Frontend).
docker compose up -dcd backend
mvn spring-boot:runServer runs on http://localhost:8080.
The Agent connects to the Backend to pick up jobs.
cd agent
export BACKEND_URL=ws://localhost:8080/api/ws/agents
go run cmd/agent/main.go
# OR build and run
# go build -o dockflow-agent cmd/agent/main.go && ./dockflow-agentYou should see "Connected to ws://..." in the logs.
cd frontend
npm install
npm run devAccess UI at http://localhost:5173.
Define your pipeline using YAML. You can configure steps and artifacts.
artifacts:
paths:
- "target/*.jar"
- "logs/*.log"
steps:
- name: Clone Repository
image: alpine/git
run: git clone https://github.com/my-org/my-repo.git .
- name: Build Application
image: maven:3.8-openjdk-17
run: mvn clean package -DskipTests
- name: Run Tests
image: maven:3.8-openjdk-17
run: mvn test- Shared Workspace: All steps share the
/workspacedirectory. Step 1 checkouts code there, Step 2 builds it. - Artifacts: After all steps succeed, the Agent zips files matching
target/*.jarand uploads them to the Backend. - Downloads: You can download these artifacts from the Execution Details page in the UI.