Update Module Interaction Diagram (#6019)

Co-authored-by: qwerty287 <80460567+qwerty287@users.noreply.github.com>
This commit is contained in:
6543
2026-02-03 13:39:37 +01:00
committed by GitHub
parent 894ba77d94
commit 56c9d96f3d
5 changed files with 522 additions and 2 deletions

View File

@@ -1,8 +1,16 @@
# Architecture # Architecture
## Package architecture ## Module Interactions
![Woodpecker architecture](./woodpecker-architecture.png) ![Woodpecker architecture](./woodpecker-architecture.svg)
<!--
To update the graph, first look at a simple svg of all module imports:
`go run github.com/loov/goda@latest graph 'go.woodpecker-ci.org/woodpecker/v3/...' | dot -Tsvg -o graph.svg`
generate a new svg of the graph using:
`dot -Tsvg woodpecker-architecture.dot -o woodpecker-architecture.svg`
-->
## System architecture ## System architecture

View File

@@ -0,0 +1,157 @@
digraph WoodpeckerArchitecture {
graph [
rankdir=TB,
splines=ortho,
nodesep=0.5,
ranksep=0.8,
fontname="Helvetica"
]
node [
shape=box,
style="rounded,filled",
fillcolor="#2b2b2b",
fontcolor="white",
fontname="Helvetica"
]
edge [
color="#bdbdbd",
arrowsize=0.7
]
/* ===================== UI ===================== */
subgraph cluster_ui {
label="UI"
fillcolor="#c7efe9"
fontcolor="black"
style="rounded,filled"
ui_web [label="web/"]
}
/* ===================== SDK ===================== */
subgraph cluster_sdk {
label="SDK (woodpecker-go)"
fillcolor="#e8f5e9"
fontcolor="black"
style="rounded,filled"
sdk [label="woodpecker-go"]
}
/* ===================== CLI ===================== */
subgraph cluster_cli {
label="woodpecker-cli"
fillcolor="#bfe9e0"
fontcolor="black"
style="rounded,filled"
cli_cmd [label="cmd/cli/"]
cli_core [label="cli/"]
}
/* ===================== Agent ===================== */
subgraph cluster_agent {
label="woodpecker-agent"
fillcolor="#ffe0c7"
fontcolor="black"
style="rounded,filled"
agent_cmd [label="cmd/agent/"]
agent_core [label="agent/"]
}
/* ===================== Pipelines ===================== */
subgraph cluster_pipelines {
label="Pipelines"
fillcolor="#ffe8d6"
fontcolor="black"
style="rounded,filled"
pipe_core [label="pipeline/"]
pipe_frontend [label="pipeline/frontend/\n(yaml)"]
pipe_backend [label="pipeline/backend/\n(exec engines)"]
}
/* ===================== Server ===================== */
subgraph cluster_server {
label="woodpecker-server"
fillcolor="#dbe9ff"
fontcolor="black"
style="rounded,filled"
srv_cmd [label="cmd/server/"]
srv_router [label="server/router/"]
srv_api [label="server/api/"]
srv_grpc [label="server/rpc/"]
srv_queue [label="server/queue/"]
srv_pubsub [label="server/pubsub/"]
srv_store [label="server/store/"]
srv_model [label="server/model/"]
srv_forge [label="server/forge/"]
}
/* ===================== Shared Libs ===================== */
subgraph cluster_shared {
label="Shared Libs"
fillcolor="#eeeeee"
fontcolor="black"
style="rounded,filled"
shared_util [label="shared/util/"]
shared_token [label="shared/token/"]
shared_http [label="shared/httputil/"]
shared_log [label="shared/logger/"]
}
/* ===================== External ===================== */
subgraph cluster_external {
label="External Systems"
style="rounded,dashed"
fontcolor="white"
ext_scm [label="SCM Providers", shape=cloud]
ext_db [label="Database", shape=cylinder]
}
/* ===================== Runtime Interactions ===================== */
/* UI */
ui_web -> srv_router [xlabel="HTTP"]
ui_web -> srv_api [xlabel="REST API"]
/* CLI */
cli_cmd -> cli_core
cli_core -> sdk
sdk -> srv_api [xlabel="REST API"]
/* Agent */
agent_cmd -> agent_core
agent_core -> srv_grpc [xlabel="gRPC connect"]
agent_core -> srv_queue [xlabel="poll work"]
agent_core -> pipe_backend [xlabel="execute steps"]
/* Pipelines */
pipe_frontend -> pipe_core
pipe_core -> pipe_backend
/* Server internal flow */
srv_cmd -> srv_router
srv_router -> srv_api
srv_api -> srv_store
srv_api -> srv_pubsub
srv_api -> srv_queue
srv_grpc -> srv_queue
srv_store -> srv_model
/* External integrations */
srv_forge -> ext_scm [xlabel="SCM API"]
srv_store -> ext_db [xlabel="SQL"]
/* Shared libs usage (consumer -> library) */
srv_router -> shared_token
srv_api -> shared_http
srv_grpc -> shared_log
pipe_core -> shared_util
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 61 KiB

View File

@@ -0,0 +1,352 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<!-- Generated by graphviz version 12.2.1 (0)
-->
<!-- Title: WoodpeckerArchitecture Pages: 1 -->
<svg width="1112pt" height="577pt"
viewBox="0.00 0.00 1112.00 576.75" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 572.75)">
<title>WoodpeckerArchitecture</title>
<polygon fill="white" stroke="none" points="-4,4 -4,-572.75 1108,-572.75 1108,4 -4,4"/>
<g id="clust1" class="cluster">
<title>cluster_ui</title>
<path fill="#c7efe9" stroke="black" d="M411,-389.25C411,-389.25 457,-389.25 457,-389.25 463,-389.25 469,-395.25 469,-401.25 469,-401.25 469,-453 469,-453 469,-459 463,-465 457,-465 457,-465 411,-465 411,-465 405,-465 399,-459 399,-453 399,-453 399,-401.25 399,-401.25 399,-395.25 405,-389.25 411,-389.25"/>
<text text-anchor="middle" x="434" y="-447.7" font-family="Helvetica,sans-Serif" font-size="14.00">UI</text>
</g>
<g id="clust2" class="cluster">
<title>cluster_sdk</title>
<path fill="#e8f5e9" stroke="black" d="M411,-293.5C411,-293.5 535,-293.5 535,-293.5 541,-293.5 547,-299.5 547,-305.5 547,-305.5 547,-357.25 547,-357.25 547,-363.25 541,-369.25 535,-369.25 535,-369.25 411,-369.25 411,-369.25 405,-369.25 399,-363.25 399,-357.25 399,-357.25 399,-305.5 399,-305.5 399,-299.5 405,-293.5 411,-293.5"/>
<text text-anchor="middle" x="473" y="-351.95" font-family="Helvetica,sans-Serif" font-size="14.00">SDK (woodpecker&#45;go)</text>
</g>
<g id="clust3" class="cluster">
<title>cluster_cli</title>
<path fill="#bfe9e0" stroke="black" d="M493,-389.25C493,-389.25 575,-389.25 575,-389.25 581,-389.25 587,-395.25 587,-401.25 587,-401.25 587,-548.75 587,-548.75 587,-554.75 581,-560.75 575,-560.75 575,-560.75 493,-560.75 493,-560.75 487,-560.75 481,-554.75 481,-548.75 481,-548.75 481,-401.25 481,-401.25 481,-395.25 487,-389.25 493,-389.25"/>
<text text-anchor="middle" x="534" y="-543.45" font-family="Helvetica,sans-Serif" font-size="14.00">woodpecker&#45;cli</text>
</g>
<g id="clust4" class="cluster">
<title>cluster_agent</title>
<path fill="#ffe0c7" stroke="black" d="M636,-293.5C636,-293.5 739,-293.5 739,-293.5 745,-293.5 751,-299.5 751,-305.5 751,-305.5 751,-453 751,-453 751,-459 745,-465 739,-465 739,-465 636,-465 636,-465 630,-465 624,-459 624,-453 624,-453 624,-305.5 624,-305.5 624,-299.5 630,-293.5 636,-293.5"/>
<text text-anchor="middle" x="687.5" y="-447.7" font-family="Helvetica,sans-Serif" font-size="14.00">woodpecker&#45;agent</text>
</g>
<g id="clust5" class="cluster">
<title>cluster_pipelines</title>
<path fill="#ffe8d6" stroke="black" d="M816,-196C816,-196 930,-196 930,-196 936,-196 942,-202 942,-208 942,-208 942,-454.75 942,-454.75 942,-460.75 936,-466.75 930,-466.75 930,-466.75 816,-466.75 816,-466.75 810,-466.75 804,-460.75 804,-454.75 804,-454.75 804,-208 804,-208 804,-202 810,-196 816,-196"/>
<text text-anchor="middle" x="873" y="-449.45" font-family="Helvetica,sans-Serif" font-size="14.00">Pipelines</text>
</g>
<g id="clust6" class="cluster">
<title>cluster_server</title>
<path fill="#dbe9ff" stroke="black" d="M20,-8C20,-8 379,-8 379,-8 385,-8 391,-14 391,-20 391,-20 391,-453 391,-453 391,-459 385,-465 379,-465 379,-465 20,-465 20,-465 14,-465 8,-459 8,-453 8,-453 8,-20 8,-20 8,-14 14,-8 20,-8"/>
<text text-anchor="middle" x="199.5" y="-447.7" font-family="Helvetica,sans-Serif" font-size="14.00">woodpecker&#45;server</text>
</g>
<g id="clust7" class="cluster">
<title>cluster_shared</title>
<path fill="#eeeeee" stroke="black" d="M598,-102C598,-102 1084,-102 1084,-102 1090,-102 1096,-108 1096,-114 1096,-114 1096,-165.75 1096,-165.75 1096,-171.75 1090,-177.75 1084,-177.75 1084,-177.75 598,-177.75 598,-177.75 592,-177.75 586,-171.75 586,-165.75 586,-165.75 586,-114 586,-114 586,-108 592,-102 598,-102"/>
<text text-anchor="middle" x="841" y="-160.45" font-family="Helvetica,sans-Serif" font-size="14.00">Shared Libs</text>
</g>
<g id="clust8" class="cluster">
<title>cluster_external</title>
<path fill="none" stroke="black" stroke-dasharray="5,2" d="M411,-8C411,-8 621,-8 621,-8 627,-8 633,-14 633,-20 633,-20 633,-71.75 633,-71.75 633,-77.75 627,-83.75 621,-83.75 621,-83.75 411,-83.75 411,-83.75 405,-83.75 399,-77.75 399,-71.75 399,-71.75 399,-20 399,-20 399,-14 405,-8 411,-8"/>
<text text-anchor="middle" x="516" y="-66.45" font-family="Helvetica,sans-Serif" font-size="14.00" fill="white">External Systems</text>
</g>
<!-- ui_web -->
<g id="node1" class="node">
<title>ui_web</title>
<path fill="#2b2b2b" stroke="black" d="M449,-433.25C449,-433.25 419,-433.25 419,-433.25 413,-433.25 407,-427.25 407,-421.25 407,-421.25 407,-409.25 407,-409.25 407,-403.25 413,-397.25 419,-397.25 419,-397.25 449,-397.25 449,-397.25 455,-397.25 461,-403.25 461,-409.25 461,-409.25 461,-421.25 461,-421.25 461,-427.25 455,-433.25 449,-433.25"/>
<text text-anchor="middle" x="434" y="-409.82" font-family="Helvetica,sans-Serif" font-size="14.00" fill="white">web/</text>
</g>
<!-- srv_router -->
<g id="node11" class="node">
<title>srv_router</title>
<path fill="#2b2b2b" stroke="black" d="M269.12,-337.5C269.12,-337.5 196.88,-337.5 196.88,-337.5 190.88,-337.5 184.88,-331.5 184.88,-325.5 184.88,-325.5 184.88,-313.5 184.88,-313.5 184.88,-307.5 190.88,-301.5 196.88,-301.5 196.88,-301.5 269.12,-301.5 269.12,-301.5 275.12,-301.5 281.12,-307.5 281.12,-313.5 281.12,-313.5 281.12,-325.5 281.12,-325.5 281.12,-331.5 275.12,-337.5 269.12,-337.5"/>
<text text-anchor="middle" x="233" y="-314.07" font-family="Helvetica,sans-Serif" font-size="14.00" fill="white">server/router/</text>
</g>
<!-- ui_web&#45;&gt;srv_router -->
<g id="edge1" class="edge">
<title>ui_web&#45;&gt;srv_router</title>
<path fill="none" stroke="#bdbdbd" d="M406.58,-415C400.15,-415 395.12,-415 395.12,-415 395.12,-415 395.12,-326 395.12,-326 395.12,-326 289.72,-326 289.72,-326"/>
<polygon fill="#bdbdbd" stroke="#bdbdbd" points="289.72,-323.55 282.72,-326 289.72,-328.45 289.72,-323.55"/>
<text text-anchor="middle" x="375.77" y="-329.2" font-family="Times,serif" font-size="14.00">HTTP</text>
</g>
<!-- srv_api -->
<g id="node12" class="node">
<title>srv_api</title>
<path fill="#2b2b2b" stroke="black" d="M255.5,-241.75C255.5,-241.75 200.5,-241.75 200.5,-241.75 194.5,-241.75 188.5,-235.75 188.5,-229.75 188.5,-229.75 188.5,-217.75 188.5,-217.75 188.5,-211.75 194.5,-205.75 200.5,-205.75 200.5,-205.75 255.5,-205.75 255.5,-205.75 261.5,-205.75 267.5,-211.75 267.5,-217.75 267.5,-217.75 267.5,-229.75 267.5,-229.75 267.5,-235.75 261.5,-241.75 255.5,-241.75"/>
<text text-anchor="middle" x="228" y="-218.32" font-family="Helvetica,sans-Serif" font-size="14.00" fill="white">server/api/</text>
</g>
<!-- ui_web&#45;&gt;srv_api -->
<g id="edge2" class="edge">
<title>ui_web&#45;&gt;srv_api</title>
<path fill="none" stroke="#bdbdbd" d="M434.94,-396.82C434.94,-379.75 434.94,-357 434.94,-357 434.94,-357 290.88,-357 290.88,-357 290.88,-357 290.88,-230 290.88,-230 290.88,-230 276.33,-230 276.33,-230"/>
<polygon fill="#bdbdbd" stroke="#bdbdbd" points="276.33,-227.55 269.33,-230 276.33,-232.45 276.33,-227.55"/>
<text text-anchor="middle" x="283.17" y="-360.2" font-family="Times,serif" font-size="14.00">REST API</text>
</g>
<!-- sdk -->
<g id="node2" class="node">
<title>sdk</title>
<path fill="#2b2b2b" stroke="black" d="M505.12,-337.5C505.12,-337.5 420.88,-337.5 420.88,-337.5 414.88,-337.5 408.88,-331.5 408.88,-325.5 408.88,-325.5 408.88,-313.5 408.88,-313.5 408.88,-307.5 414.88,-301.5 420.88,-301.5 420.88,-301.5 505.12,-301.5 505.12,-301.5 511.12,-301.5 517.12,-307.5 517.12,-313.5 517.12,-313.5 517.12,-325.5 517.12,-325.5 517.12,-331.5 511.12,-337.5 505.12,-337.5"/>
<text text-anchor="middle" x="463" y="-314.07" font-family="Helvetica,sans-Serif" font-size="14.00" fill="white">woodpecker&#45;go</text>
</g>
<!-- sdk&#45;&gt;srv_api -->
<g id="edge5" class="edge">
<title>sdk&#45;&gt;srv_api</title>
<path fill="none" stroke="#bdbdbd" d="M408.65,-314C360.23,-314 297,-314 297,-314 297,-314 297,-218 297,-218 297,-218 276.25,-218 276.25,-218"/>
<polygon fill="#bdbdbd" stroke="#bdbdbd" points="276.25,-215.55 269.25,-218 276.25,-220.45 276.25,-215.55"/>
<text text-anchor="middle" x="325.88" y="-314.65" font-family="Times,serif" font-size="14.00">REST API</text>
</g>
<!-- cli_cmd -->
<g id="node3" class="node">
<title>cli_cmd</title>
<path fill="#2b2b2b" stroke="black" d="M543.25,-529C543.25,-529 504.75,-529 504.75,-529 498.75,-529 492.75,-523 492.75,-517 492.75,-517 492.75,-505 492.75,-505 492.75,-499 498.75,-493 504.75,-493 504.75,-493 543.25,-493 543.25,-493 549.25,-493 555.25,-499 555.25,-505 555.25,-505 555.25,-517 555.25,-517 555.25,-523 549.25,-529 543.25,-529"/>
<text text-anchor="middle" x="524" y="-505.57" font-family="Helvetica,sans-Serif" font-size="14.00" fill="white">cmd/cli/</text>
</g>
<!-- cli_core -->
<g id="node4" class="node">
<title>cli_core</title>
<path fill="#2b2b2b" stroke="black" d="M539,-433.25C539,-433.25 509,-433.25 509,-433.25 503,-433.25 497,-427.25 497,-421.25 497,-421.25 497,-409.25 497,-409.25 497,-403.25 503,-397.25 509,-397.25 509,-397.25 539,-397.25 539,-397.25 545,-397.25 551,-403.25 551,-409.25 551,-409.25 551,-421.25 551,-421.25 551,-427.25 545,-433.25 539,-433.25"/>
<text text-anchor="middle" x="524" y="-409.82" font-family="Helvetica,sans-Serif" font-size="14.00" fill="white">cli/</text>
</g>
<!-- cli_cmd&#45;&gt;cli_core -->
<g id="edge3" class="edge">
<title>cli_cmd&#45;&gt;cli_core</title>
<path fill="none" stroke="#bdbdbd" d="M524,-492.54C524,-492.54 524,-442.17 524,-442.17"/>
<polygon fill="#bdbdbd" stroke="#bdbdbd" points="526.45,-442.17 524,-435.17 521.55,-442.17 526.45,-442.17"/>
</g>
<!-- cli_core&#45;&gt;sdk -->
<g id="edge4" class="edge">
<title>cli_core&#45;&gt;sdk</title>
<path fill="none" stroke="#bdbdbd" d="M507.06,-396.79C507.06,-396.79 507.06,-346.42 507.06,-346.42"/>
<polygon fill="#bdbdbd" stroke="#bdbdbd" points="509.51,-346.42 507.06,-339.42 504.61,-346.42 509.51,-346.42"/>
</g>
<!-- agent_cmd -->
<g id="node5" class="node">
<title>agent_cmd</title>
<path fill="#2b2b2b" stroke="black" d="M716.75,-433.25C716.75,-433.25 657.25,-433.25 657.25,-433.25 651.25,-433.25 645.25,-427.25 645.25,-421.25 645.25,-421.25 645.25,-409.25 645.25,-409.25 645.25,-403.25 651.25,-397.25 657.25,-397.25 657.25,-397.25 716.75,-397.25 716.75,-397.25 722.75,-397.25 728.75,-403.25 728.75,-409.25 728.75,-409.25 728.75,-421.25 728.75,-421.25 728.75,-427.25 722.75,-433.25 716.75,-433.25"/>
<text text-anchor="middle" x="687" y="-409.82" font-family="Helvetica,sans-Serif" font-size="14.00" fill="white">cmd/agent/</text>
</g>
<!-- agent_core -->
<g id="node6" class="node">
<title>agent_core</title>
<path fill="#2b2b2b" stroke="black" d="M702,-337.5C702,-337.5 672,-337.5 672,-337.5 666,-337.5 660,-331.5 660,-325.5 660,-325.5 660,-313.5 660,-313.5 660,-307.5 666,-301.5 672,-301.5 672,-301.5 702,-301.5 702,-301.5 708,-301.5 714,-307.5 714,-313.5 714,-313.5 714,-325.5 714,-325.5 714,-331.5 708,-337.5 702,-337.5"/>
<text text-anchor="middle" x="687" y="-314.07" font-family="Helvetica,sans-Serif" font-size="14.00" fill="white">agent/</text>
</g>
<!-- agent_cmd&#45;&gt;agent_core -->
<g id="edge6" class="edge">
<title>agent_cmd&#45;&gt;agent_core</title>
<path fill="none" stroke="#bdbdbd" d="M687,-396.79C687,-396.79 687,-346.42 687,-346.42"/>
<polygon fill="#bdbdbd" stroke="#bdbdbd" points="689.45,-346.42 687,-339.42 684.55,-346.42 689.45,-346.42"/>
</g>
<!-- pipe_backend -->
<g id="node9" class="node">
<title>pipe_backend</title>
<path fill="#2b2b2b" stroke="black" d="M921.5,-243.5C921.5,-243.5 824.5,-243.5 824.5,-243.5 818.5,-243.5 812.5,-237.5 812.5,-231.5 812.5,-231.5 812.5,-216 812.5,-216 812.5,-210 818.5,-204 824.5,-204 824.5,-204 921.5,-204 921.5,-204 927.5,-204 933.5,-210 933.5,-216 933.5,-216 933.5,-231.5 933.5,-231.5 933.5,-237.5 927.5,-243.5 921.5,-243.5"/>
<text text-anchor="middle" x="873" y="-226.2" font-family="Helvetica,sans-Serif" font-size="14.00" fill="white">pipeline/backend/</text>
<text text-anchor="middle" x="873" y="-210.45" font-family="Helvetica,sans-Serif" font-size="14.00" fill="white">(exec engines)</text>
</g>
<!-- agent_core&#45;&gt;pipe_backend -->
<g id="edge9" class="edge">
<title>agent_core&#45;&gt;pipe_backend</title>
<path fill="none" stroke="#bdbdbd" d="M706.12,-301.09C706.12,-273.34 706.12,-224 706.12,-224 706.12,-224 803.77,-224 803.77,-224"/>
<polygon fill="#bdbdbd" stroke="#bdbdbd" points="803.77,-226.45 810.77,-224 803.77,-221.55 803.77,-226.45"/>
<text text-anchor="middle" x="680.4" y="-227.2" font-family="Times,serif" font-size="14.00">execute steps</text>
</g>
<!-- srv_grpc -->
<g id="node13" class="node">
<title>srv_grpc</title>
<path fill="#2b2b2b" stroke="black" d="M370.88,-241.75C370.88,-241.75 315.12,-241.75 315.12,-241.75 309.12,-241.75 303.12,-235.75 303.12,-229.75 303.12,-229.75 303.12,-217.75 303.12,-217.75 303.12,-211.75 309.12,-205.75 315.12,-205.75 315.12,-205.75 370.88,-205.75 370.88,-205.75 376.88,-205.75 382.88,-211.75 382.88,-217.75 382.88,-217.75 382.88,-229.75 382.88,-229.75 382.88,-235.75 376.88,-241.75 370.88,-241.75"/>
<text text-anchor="middle" x="343" y="-218.32" font-family="Helvetica,sans-Serif" font-size="14.00" fill="white">server/rpc/</text>
</g>
<!-- agent_core&#45;&gt;srv_grpc -->
<g id="edge7" class="edge">
<title>agent_core&#45;&gt;srv_grpc</title>
<path fill="none" stroke="#bdbdbd" d="M679.12,-301.16C679.12,-275.76 679.12,-233 679.12,-233 679.12,-233 391.72,-233 391.72,-233"/>
<polygon fill="#bdbdbd" stroke="#bdbdbd" points="391.72,-230.55 384.72,-233 391.72,-235.45 391.72,-230.55"/>
<text text-anchor="middle" x="530.5" y="-236.2" font-family="Times,serif" font-size="14.00">gRPC connect</text>
</g>
<!-- srv_queue -->
<g id="node14" class="node">
<title>srv_queue</title>
<path fill="#2b2b2b" stroke="black" d="M371.25,-146C371.25,-146 296.75,-146 296.75,-146 290.75,-146 284.75,-140 284.75,-134 284.75,-134 284.75,-122 284.75,-122 284.75,-116 290.75,-110 296.75,-110 296.75,-110 371.25,-110 371.25,-110 377.25,-110 383.25,-116 383.25,-122 383.25,-122 383.25,-134 383.25,-134 383.25,-140 377.25,-146 371.25,-146"/>
<text text-anchor="middle" x="334" y="-122.58" font-family="Helvetica,sans-Serif" font-size="14.00" fill="white">server/queue/</text>
</g>
<!-- agent_core&#45;&gt;srv_queue -->
<g id="edge8" class="edge">
<title>agent_core&#45;&gt;srv_queue</title>
<path fill="none" stroke="#bdbdbd" d="M659.65,-320C617.06,-320 539.75,-320 539.75,-320 539.75,-320 539.75,-128 539.75,-128 539.75,-128 392.06,-128 392.06,-128"/>
<polygon fill="#bdbdbd" stroke="#bdbdbd" points="392.06,-125.55 385.06,-128 392.06,-130.45 392.06,-125.55"/>
<text text-anchor="middle" x="513.5" y="-213.3" font-family="Times,serif" font-size="14.00">poll work</text>
</g>
<!-- pipe_core -->
<g id="node7" class="node">
<title>pipe_core</title>
<path fill="#2b2b2b" stroke="black" d="M894.12,-337.5C894.12,-337.5 851.88,-337.5 851.88,-337.5 845.88,-337.5 839.88,-331.5 839.88,-325.5 839.88,-325.5 839.88,-313.5 839.88,-313.5 839.88,-307.5 845.88,-301.5 851.88,-301.5 851.88,-301.5 894.12,-301.5 894.12,-301.5 900.12,-301.5 906.12,-307.5 906.12,-313.5 906.12,-313.5 906.12,-325.5 906.12,-325.5 906.12,-331.5 900.12,-337.5 894.12,-337.5"/>
<text text-anchor="middle" x="873" y="-314.07" font-family="Helvetica,sans-Serif" font-size="14.00" fill="white">pipeline/</text>
</g>
<!-- pipe_core&#45;&gt;pipe_backend -->
<g id="edge11" class="edge">
<title>pipe_core&#45;&gt;pipe_backend</title>
<path fill="none" stroke="#bdbdbd" d="M873,-301.04C873,-301.04 873,-252.32 873,-252.32"/>
<polygon fill="#bdbdbd" stroke="#bdbdbd" points="875.45,-252.32 873,-245.32 870.55,-252.32 875.45,-252.32"/>
</g>
<!-- shared_util -->
<g id="node19" class="node">
<title>shared_util</title>
<path fill="#2b2b2b" stroke="black" d="M1076,-146C1076,-146 1018,-146 1018,-146 1012,-146 1006,-140 1006,-134 1006,-134 1006,-122 1006,-122 1006,-116 1012,-110 1018,-110 1018,-110 1076,-110 1076,-110 1082,-110 1088,-116 1088,-122 1088,-122 1088,-134 1088,-134 1088,-140 1082,-146 1076,-146"/>
<text text-anchor="middle" x="1047" y="-122.58" font-family="Helvetica,sans-Serif" font-size="14.00" fill="white">shared/util/</text>
</g>
<!-- pipe_core&#45;&gt;shared_util -->
<g id="edge24" class="edge">
<title>pipe_core&#45;&gt;shared_util</title>
<path fill="none" stroke="#bdbdbd" d="M906.55,-320C957.11,-320 1047,-320 1047,-320 1047,-320 1047,-154.92 1047,-154.92"/>
<polygon fill="#bdbdbd" stroke="#bdbdbd" points="1049.45,-154.92 1047,-147.92 1044.55,-154.92 1049.45,-154.92"/>
</g>
<!-- pipe_frontend -->
<g id="node8" class="node">
<title>pipe_frontend</title>
<path fill="#2b2b2b" stroke="black" d="M920.75,-435C920.75,-435 825.25,-435 825.25,-435 819.25,-435 813.25,-429 813.25,-423 813.25,-423 813.25,-407.5 813.25,-407.5 813.25,-401.5 819.25,-395.5 825.25,-395.5 825.25,-395.5 920.75,-395.5 920.75,-395.5 926.75,-395.5 932.75,-401.5 932.75,-407.5 932.75,-407.5 932.75,-423 932.75,-423 932.75,-429 926.75,-435 920.75,-435"/>
<text text-anchor="middle" x="873" y="-417.7" font-family="Helvetica,sans-Serif" font-size="14.00" fill="white">pipeline/frontend/</text>
<text text-anchor="middle" x="873" y="-401.95" font-family="Helvetica,sans-Serif" font-size="14.00" fill="white">(yaml)</text>
</g>
<!-- pipe_frontend&#45;&gt;pipe_core -->
<g id="edge10" class="edge">
<title>pipe_frontend&#45;&gt;pipe_core</title>
<path fill="none" stroke="#bdbdbd" d="M873,-395.41C873,-395.41 873,-346.21 873,-346.21"/>
<polygon fill="#bdbdbd" stroke="#bdbdbd" points="875.45,-346.21 873,-339.21 870.55,-346.21 875.45,-346.21"/>
</g>
<!-- srv_cmd -->
<g id="node10" class="node">
<title>srv_cmd</title>
<path fill="#2b2b2b" stroke="black" d="M230.62,-433.25C230.62,-433.25 167.38,-433.25 167.38,-433.25 161.38,-433.25 155.38,-427.25 155.38,-421.25 155.38,-421.25 155.38,-409.25 155.38,-409.25 155.38,-403.25 161.38,-397.25 167.38,-397.25 167.38,-397.25 230.62,-397.25 230.62,-397.25 236.62,-397.25 242.62,-403.25 242.62,-409.25 242.62,-409.25 242.62,-421.25 242.62,-421.25 242.62,-427.25 236.62,-433.25 230.62,-433.25"/>
<text text-anchor="middle" x="199" y="-409.82" font-family="Helvetica,sans-Serif" font-size="14.00" fill="white">cmd/server/</text>
</g>
<!-- srv_cmd&#45;&gt;srv_router -->
<g id="edge12" class="edge">
<title>srv_cmd&#45;&gt;srv_router</title>
<path fill="none" stroke="#bdbdbd" d="M213.75,-396.79C213.75,-396.79 213.75,-346.42 213.75,-346.42"/>
<polygon fill="#bdbdbd" stroke="#bdbdbd" points="216.2,-346.42 213.75,-339.42 211.3,-346.42 216.2,-346.42"/>
</g>
<!-- srv_router&#45;&gt;srv_api -->
<g id="edge13" class="edge">
<title>srv_router&#45;&gt;srv_api</title>
<path fill="none" stroke="#bdbdbd" d="M228,-301.04C228,-301.04 228,-250.67 228,-250.67"/>
<polygon fill="#bdbdbd" stroke="#bdbdbd" points="230.45,-250.67 228,-243.67 225.55,-250.67 230.45,-250.67"/>
</g>
<!-- shared_token -->
<g id="node20" class="node">
<title>shared_token</title>
<path fill="#2b2b2b" stroke="black" d="M957.88,-146C957.88,-146 884.12,-146 884.12,-146 878.12,-146 872.12,-140 872.12,-134 872.12,-134 872.12,-122 872.12,-122 872.12,-116 878.12,-110 884.12,-110 884.12,-110 957.88,-110 957.88,-110 963.88,-110 969.88,-116 969.88,-122 969.88,-122 969.88,-134 969.88,-134 969.88,-140 963.88,-146 957.88,-146"/>
<text text-anchor="middle" x="921" y="-122.58" font-family="Helvetica,sans-Serif" font-size="14.00" fill="white">shared/token/</text>
</g>
<!-- srv_router&#45;&gt;shared_token -->
<g id="edge21" class="edge">
<title>srv_router&#45;&gt;shared_token</title>
<path fill="none" stroke="#bdbdbd" d="M274.31,-301.08C274.31,-264.24 274.31,-185 274.31,-185 274.31,-185 902.81,-185 902.81,-185 902.81,-185 902.81,-154.86 902.81,-154.86"/>
<polygon fill="#bdbdbd" stroke="#bdbdbd" points="905.26,-154.86 902.81,-147.86 900.36,-154.86 905.26,-154.86"/>
</g>
<!-- srv_api&#45;&gt;srv_queue -->
<g id="edge16" class="edge">
<title>srv_api&#45;&gt;srv_queue</title>
<path fill="none" stroke="#bdbdbd" d="M259.88,-205.59C259.88,-179.36 259.88,-134 259.88,-134 259.88,-134 276.04,-134 276.04,-134"/>
<polygon fill="#bdbdbd" stroke="#bdbdbd" points="276.04,-136.45 283.04,-134 276.04,-131.55 276.04,-136.45"/>
</g>
<!-- srv_pubsub -->
<g id="node15" class="node">
<title>srv_pubsub</title>
<path fill="#2b2b2b" stroke="black" d="M109.62,-146C109.62,-146 28.38,-146 28.38,-146 22.38,-146 16.38,-140 16.38,-134 16.38,-134 16.38,-122 16.38,-122 16.38,-116 22.38,-110 28.38,-110 28.38,-110 109.62,-110 109.62,-110 115.62,-110 121.62,-116 121.62,-122 121.62,-122 121.62,-134 121.62,-134 121.62,-140 115.62,-146 109.62,-146"/>
<text text-anchor="middle" x="69" y="-122.58" font-family="Helvetica,sans-Serif" font-size="14.00" fill="white">server/pubsub/</text>
</g>
<!-- srv_api&#45;&gt;srv_pubsub -->
<g id="edge15" class="edge">
<title>srv_api&#45;&gt;srv_pubsub</title>
<path fill="none" stroke="#bdbdbd" d="M188.29,-224C141.19,-224 69,-224 69,-224 69,-224 69,-154.57 69,-154.57"/>
<polygon fill="#bdbdbd" stroke="#bdbdbd" points="71.45,-154.57 69,-147.57 66.55,-154.57 71.45,-154.57"/>
</g>
<!-- srv_store -->
<g id="node16" class="node">
<title>srv_store</title>
<path fill="#2b2b2b" stroke="black" d="M236.5,-146C236.5,-146 169.5,-146 169.5,-146 163.5,-146 157.5,-140 157.5,-134 157.5,-134 157.5,-122 157.5,-122 157.5,-116 163.5,-110 169.5,-110 169.5,-110 236.5,-110 236.5,-110 242.5,-110 248.5,-116 248.5,-122 248.5,-122 248.5,-134 248.5,-134 248.5,-140 242.5,-146 236.5,-146"/>
<text text-anchor="middle" x="203" y="-122.58" font-family="Helvetica,sans-Serif" font-size="14.00" fill="white">server/store/</text>
</g>
<!-- srv_api&#45;&gt;srv_store -->
<g id="edge14" class="edge">
<title>srv_api&#45;&gt;srv_store</title>
<path fill="none" stroke="#bdbdbd" d="M218.5,-205.29C218.5,-205.29 218.5,-154.92 218.5,-154.92"/>
<polygon fill="#bdbdbd" stroke="#bdbdbd" points="220.95,-154.92 218.5,-147.92 216.05,-154.92 220.95,-154.92"/>
</g>
<!-- shared_http -->
<g id="node21" class="node">
<title>shared_http</title>
<path fill="#2b2b2b" stroke="black" d="M686.25,-146C686.25,-146 605.75,-146 605.75,-146 599.75,-146 593.75,-140 593.75,-134 593.75,-134 593.75,-122 593.75,-122 593.75,-116 599.75,-110 605.75,-110 605.75,-110 686.25,-110 686.25,-110 692.25,-110 698.25,-116 698.25,-122 698.25,-122 698.25,-134 698.25,-134 698.25,-140 692.25,-146 686.25,-146"/>
<text text-anchor="middle" x="646" y="-122.58" font-family="Helvetica,sans-Serif" font-size="14.00" fill="white">shared/httputil/</text>
</g>
<!-- srv_api&#45;&gt;shared_http -->
<g id="edge22" class="edge">
<title>srv_api&#45;&gt;shared_http</title>
<path fill="none" stroke="#bdbdbd" d="M263.69,-205.48C263.69,-188.24 263.69,-165 263.69,-165 263.69,-165 619.5,-165 619.5,-165 619.5,-165 619.5,-155.01 619.5,-155.01"/>
<polygon fill="#bdbdbd" stroke="#bdbdbd" points="621.95,-155.01 619.5,-148.01 617.05,-155.01 621.95,-155.01"/>
</g>
<!-- srv_grpc&#45;&gt;srv_queue -->
<g id="edge17" class="edge">
<title>srv_grpc&#45;&gt;srv_queue</title>
<path fill="none" stroke="#bdbdbd" d="M343,-205.29C343,-205.29 343,-154.92 343,-154.92"/>
<polygon fill="#bdbdbd" stroke="#bdbdbd" points="345.45,-154.92 343,-147.92 340.55,-154.92 345.45,-154.92"/>
</g>
<!-- shared_log -->
<g id="node22" class="node">
<title>shared_log</title>
<path fill="#2b2b2b" stroke="black" d="M824.12,-146C824.12,-146 745.88,-146 745.88,-146 739.88,-146 733.88,-140 733.88,-134 733.88,-134 733.88,-122 733.88,-122 733.88,-116 739.88,-110 745.88,-110 745.88,-110 824.12,-110 824.12,-110 830.12,-110 836.12,-116 836.12,-122 836.12,-122 836.12,-134 836.12,-134 836.12,-140 830.12,-146 824.12,-146"/>
<text text-anchor="middle" x="785" y="-122.58" font-family="Helvetica,sans-Serif" font-size="14.00" fill="white">shared/logger/</text>
</g>
<!-- srv_grpc&#45;&gt;shared_log -->
<g id="edge23" class="edge">
<title>srv_grpc&#45;&gt;shared_log</title>
<path fill="none" stroke="#bdbdbd" d="M383.08,-215C489.88,-215 773.19,-215 773.19,-215 773.19,-215 773.19,-154.96 773.19,-154.96"/>
<polygon fill="#bdbdbd" stroke="#bdbdbd" points="775.64,-154.96 773.19,-147.96 770.74,-154.96 775.64,-154.96"/>
</g>
<!-- srv_model -->
<g id="node17" class="node">
<title>srv_model</title>
<path fill="#2b2b2b" stroke="black" d="M240.25,-52C240.25,-52 165.75,-52 165.75,-52 159.75,-52 153.75,-46 153.75,-40 153.75,-40 153.75,-28 153.75,-28 153.75,-22 159.75,-16 165.75,-16 165.75,-16 240.25,-16 240.25,-16 246.25,-16 252.25,-22 252.25,-28 252.25,-28 252.25,-40 252.25,-40 252.25,-46 246.25,-52 240.25,-52"/>
<text text-anchor="middle" x="203" y="-28.57" font-family="Helvetica,sans-Serif" font-size="14.00" fill="white">server/model/</text>
</g>
<!-- srv_store&#45;&gt;srv_model -->
<g id="edge18" class="edge">
<title>srv_store&#45;&gt;srv_model</title>
<path fill="none" stroke="#bdbdbd" d="M203,-109.88C203,-109.88 203,-60.9 203,-60.9"/>
<polygon fill="#bdbdbd" stroke="#bdbdbd" points="205.45,-60.9 203,-53.9 200.55,-60.9 205.45,-60.9"/>
</g>
<!-- ext_db -->
<g id="node24" class="node">
<title>ext_db</title>
<path fill="#2b2b2b" stroke="black" d="M480.88,-48.73C480.88,-50.53 464.35,-52 444,-52 423.65,-52 407.12,-50.53 407.12,-48.73 407.12,-48.73 407.12,-19.27 407.12,-19.27 407.12,-17.47 423.65,-16 444,-16 464.35,-16 480.88,-17.47 480.88,-19.27 480.88,-19.27 480.88,-48.73 480.88,-48.73"/>
<path fill="none" stroke="black" d="M480.88,-48.73C480.88,-46.92 464.35,-45.45 444,-45.45 423.65,-45.45 407.12,-46.92 407.12,-48.73"/>
<text text-anchor="middle" x="444" y="-28.57" font-family="Helvetica,sans-Serif" font-size="14.00" fill="white">Database</text>
</g>
<!-- srv_store&#45;&gt;ext_db -->
<g id="edge20" class="edge">
<title>srv_store&#45;&gt;ext_db</title>
<path fill="none" stroke="#bdbdbd" d="M248.68,-122C253.15,-122 256.06,-122 256.06,-122 256.06,-122 256.06,-34 256.06,-34 256.06,-34 398.36,-34 398.36,-34"/>
<polygon fill="#bdbdbd" stroke="#bdbdbd" points="398.36,-36.45 405.36,-34 398.36,-31.55 398.36,-36.45"/>
<text text-anchor="middle" x="266.77" y="-37.2" font-family="Times,serif" font-size="14.00">SQL</text>
</g>
<!-- srv_forge -->
<g id="node18" class="node">
<title>srv_forge</title>
<path fill="#2b2b2b" stroke="black" d="M358.88,-433.25C358.88,-433.25 291.12,-433.25 291.12,-433.25 285.12,-433.25 279.12,-427.25 279.12,-421.25 279.12,-421.25 279.12,-409.25 279.12,-409.25 279.12,-403.25 285.12,-397.25 291.12,-397.25 291.12,-397.25 358.88,-397.25 358.88,-397.25 364.88,-397.25 370.88,-403.25 370.88,-409.25 370.88,-409.25 370.88,-421.25 370.88,-421.25 370.88,-427.25 364.88,-433.25 358.88,-433.25"/>
<text text-anchor="middle" x="325" y="-409.82" font-family="Helvetica,sans-Serif" font-size="14.00" fill="white">server/forge/</text>
</g>
<!-- ext_scm -->
<g id="node23" class="node">
<title>ext_scm</title>
<path fill="#2b2b2b" stroke="black" d="M612.75,-52C612.75,-52 529.25,-52 529.25,-52 523.25,-52 517.25,-46 517.25,-40 517.25,-40 517.25,-28 517.25,-28 517.25,-22 523.25,-16 529.25,-16 529.25,-16 612.75,-16 612.75,-16 618.75,-16 624.75,-22 624.75,-28 624.75,-28 624.75,-40 624.75,-40 624.75,-46 618.75,-52 612.75,-52"/>
<text text-anchor="middle" x="571" y="-28.57" font-family="Helvetica,sans-Serif" font-size="14.00" fill="white">SCM Providers</text>
</g>
<!-- srv_forge&#45;&gt;ext_scm -->
<g id="edge19" class="edge">
<title>srv_forge&#45;&gt;ext_scm</title>
<path fill="none" stroke="#bdbdbd" d="M337,-397C337,-386.75 337,-376 337,-376 337,-376 528.5,-376 528.5,-376 528.5,-376 528.5,-60.9 528.5,-60.9"/>
<polygon fill="#bdbdbd" stroke="#bdbdbd" points="530.95,-60.9 528.5,-53.9 526.05,-60.9 530.95,-60.9"/>
<text text-anchor="middle" x="555.5" y="-327.9" font-family="Times,serif" font-size="14.00">SCM API</text>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 27 KiB

View File

@@ -45,6 +45,9 @@
protoc-gen-go protoc-gen-go
protoc-gen-go-grpc protoc-gen-go-grpc
gcc gcc
# docs
graphviz
]; ];
CFLAGS = "-I${pkgs.glibc.dev}/include"; CFLAGS = "-I${pkgs.glibc.dev}/include";
LDFLAGS = "-L${pkgs.glibc}/lib"; LDFLAGS = "-L${pkgs.glibc}/lib";