Architecture
Package architecture

System architecture
main package hierarchy
| package | meaning | imports | 
|---|---|---|
| cmd/** | parse command-line args & environment to stat server/cli/agent | all other | 
| agent/** | code only agent (remote worker) will need | pipeline,shared | 
| cli/** | code only cli tool does need | pipeline,shared,woodpecker-go | 
| server/** | code only server will need | pipeline,shared | 
| shared/** | code shared for all three main tools (go help utils) | only std and external libs | 
| woodpecker-go/** | go client for server rest api | std | 
Server
| package | meaning | imports | 
|---|---|---|
| server/api/** | handle web requests from server/router | pipeline,../badges,../ccmenu,../logging,../model,../pubsub,../queue,../forge,../shared,../store,shared, (TODO: mvserver/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 to | pipeline/rpc/**,../logging,../model,../pubsub,../queue,../forge,../pipeline,../store | 
| server/logging/** | logging lib for gPRC server to stream logs while running | std | 
| server/model/** | structs for store (db) and api (json) | std | 
| server/plugins/** | plugins for server | ../model,../forge | 
| server/pipeline/** | orchestrate pipelines | pipeline,../model,../pubsub,../queue,../forge,../store,../plugins | 
| server/pubsub/** | pubsub lib for server to push changes to the WebUI | std | 
| server/queue/** | queue lib for server where agents pull new pipelines from via gRPC | server/model | 
| server/forge/** | forge lib for server to connect and handle forge specific stuff | shared,server/model | 
| server/router/** | handle requests to REST API (and all middleware) and serve UI and WebUI config | shared,../api,../model,../forge,../store,../web | 
| server/store/** | handle database | server/model | 
| server/shared/** | TODO: move and split #974 | |
| server/web/** | server SPA | 
- ../=- server/
Agent
TODO
CLI
TODO