Skip to main content
Version: Next

Architecture

Package architectureโ€‹

Woodpecker architecture

System architectureโ€‹

main package hierarchyโ€‹

packagemeaningimports
cmd/**parse command-line args & environment to stat server/cli/agentall other
agent/**code only agent (remote worker) will needpipeline, shared
cli/**code only cli tool does needpipeline, shared, woodpecker-go
server/**code only server will needpipeline, shared
shared/**code shared for all three main tools (go help utils)only std and external libs
woodpecker-go/**go client for server rest apistd

Serverโ€‹

packagemeaningimports
server/api/**handle web requests from server/routerpipeline, ../badges, ../ccmenue, ../logging, ../model, ../pubsub, ../queue, ../forge, ../shared, ../store, shared, (TODO: mv server/router/middleware/session)
server/badges/**generate svg badges for pipelines../model
server/ccmenu/**generate xml ccmenu for pipelines../model
server/grpc/**gRPC server agents can connect topipeline/rpc/**, ../logging, ../model, ../pubsub, ../queue, ../forge, ../pipeline, ../store
server/logging/**logging lib for gPRC server to stream logs while runningstd
server/model/**structs for store (db) and api (json)std
server/plugins/**plugins for server../model, ../forge
server/pipeline/**orchestrate pipelinespipeline, ../model, ../pubsub, ../queue, ../forge, ../store, ../plugins
server/pubsub/**pubsub lib for server to push changes to the WebUIstd
server/queue/**queue lib for server where agents pull new pipelines from via gRPCserver/model
server/forge/**forge lib for server to connect and handle forge specific stuffshared, server/model
server/router/**handle requests to REST API (and all middleware) and serve UI and WebUI configshared, ../api, ../model, ../forge, ../store, ../web
server/store/**handle databaseserver/model
server/shared/**TODO: move and split #974
server/web/**server SPA
  • ../ = server/

Agentโ€‹

TODO

CLIโ€‹

TODO