vault backup: 2023-06-07 17:36:13

This commit is contained in:
Janik von Rotz committed 2023-06-07 17:36:13 +02:00
1 parent 48cc4641fb
commit 2e00e28881
7 files changed
+264 -6

No files matched your search

+4
View File
@@ -31,3 +31,7 @@ Die Odoo-Module sind in einem Git-Repository eingecheckt.
* Lädt eine leere Datenbank mit Demodaten
* Es werden Tests ausgeführt
* E-Mails werden nicht versendet
## Serverumgebung
![[Serverumgebung.canvas|Serverumgebung]]
+32
View File
@@ -0,0 +1,32 @@
{
"nodes":[
{"type":"group","id":"1132a63cdeab6d88","x":60,"y":-280,"width":560,"height":340,"label":"Odoo Environment"},
{"type":"group","id":"dc8435c18e2747e3","x":-180,"y":-280,"width":180,"height":260,"label":"Drone"},
{"type":"group","id":"bfce7c81ebdd06a6","x":-440,"y":-280,"width":180,"height":260,"label":"GitHub Repo"},
{"type":"text","text":"odoo01","id":"37875053b83406f6","x":80,"y":-260,"width":140,"height":60},
{"type":"text","text":"main branch","id":"d49954f100392182","x":-420,"y":-260,"width":140,"height":60},
{"type":"text","text":"int branch","id":"36fa923450ae6d97","x":-420,"y":-180,"width":140,"height":60},
{"type":"text","text":"dev branch","id":"3c7f4aecfa9902cb","x":-420,"y":-100,"width":140,"height":60},
{"type":"text","text":"main pipeline","id":"067586fab30ab8eb","x":-160,"y":-260,"width":140,"height":60},
{"type":"text","text":"int pipeline","id":"6e1aafd32d9ca51f","x":-160,"y":-180,"width":140,"height":60},
{"type":"text","text":"dev pipeline","id":"509910fff8fc18ab","x":-160,"y":-100,"width":140,"height":60},
{"type":"text","text":"odoo02","id":"0a8ff69caa999d26","x":80,"y":-180,"width":140,"height":60},
{"type":"text","text":"odoo03","id":"c38f8a144a2ed122","x":80,"y":-100,"width":140,"height":60},
{"type":"text","text":"mailhog01","id":"e74e3fd9c0461407","x":80,"y":-20,"width":140,"height":60},
{"type":"text","text":"nginx01\n- odoo.example.com\n- int.example.com\n- dev.example.com\n- mail.example.com\n- drone.example.com","id":"7efd437e442a5fb1","x":360,"y":-200,"width":220,"height":180}
],
"edges":[
{"id":"7ca5bd1efc1a1e49","fromNode":"d49954f100392182","fromSide":"right","toNode":"067586fab30ab8eb","toSide":"left"},
{"id":"a1e6383149b0cd66","fromNode":"36fa923450ae6d97","fromSide":"right","toNode":"6e1aafd32d9ca51f","toSide":"left"},
{"id":"e1346014f1ed3340","fromNode":"3c7f4aecfa9902cb","fromSide":"right","toNode":"509910fff8fc18ab","toSide":"left"},
{"id":"00c5877677d651af","fromNode":"7efd437e442a5fb1","fromSide":"left","toNode":"37875053b83406f6","toSide":"right"},
{"id":"822bc1fa15f70d60","fromNode":"7efd437e442a5fb1","fromSide":"left","toNode":"0a8ff69caa999d26","toSide":"right"},
{"id":"987a25c93d7fe1ae","fromNode":"7efd437e442a5fb1","fromSide":"left","toNode":"c38f8a144a2ed122","toSide":"right"},
{"id":"3bd25001e2127eed","fromNode":"7efd437e442a5fb1","fromSide":"left","toNode":"e74e3fd9c0461407","toSide":"right"},
{"id":"75b56cfb2252ffa2","fromNode":"509910fff8fc18ab","fromSide":"top","toNode":"6e1aafd32d9ca51f","toSide":"bottom"},
{"id":"f68a4e25d9a5ceff","fromNode":"6e1aafd32d9ca51f","fromSide":"top","toNode":"067586fab30ab8eb","toSide":"bottom"},
{"id":"94e3f8fb4ad01ae1","fromNode":"067586fab30ab8eb","fromSide":"right","toNode":"37875053b83406f6","toSide":"left"},
{"id":"71e8e9832981551e","fromNode":"6e1aafd32d9ca51f","fromSide":"right","toNode":"0a8ff69caa999d26","toSide":"left"},
{"id":"e02dffeb998d3136","fromNode":"509910fff8fc18ab","fromSide":"right","toNode":"c38f8a144a2ed122","toSide":"left"}
]
}
+17 -6
View File
@@ -77,7 +77,7 @@ function mapColor(color) {
}
function renderNode(node) {
const strockWidth = 7
const strockWidth = 4
const fontWeight = 'bold'
let textOffsetX = 15
@@ -86,6 +86,17 @@ function renderNode(node) {
let text = node['text']
let fontSize = 18
// Process multiline text
if (text && text.split('\n').length > 1) {
let spans = ''
for (const line of text.split('\n')) {
spans += `<tspan x="${node['x'] + textOffsetX}" dy="${fontSize + 3}">${line}</tspan>`
}
text = spans
textOffsetY = 10
}
// Link markdown file
if (node['file'] && node['file'].endsWith('.md')) {
@@ -114,7 +125,7 @@ function renderNode(node) {
}
function renderGroup(group) {
const strockWidth = 7
const strockWidth = 4
const fontWeight = 'bold'
let textOffsetX = 15
@@ -124,17 +135,17 @@ function renderGroup(group) {
let fontSize = 24
return `
<rect x="${group['x']}" y="${group['y']}" width="${group['width']}" height="${group['height']}" rx="15" stroke="${mapColor(group['color'])}" stroke-width="${strockWidth}" fill="none"/>
<rect x="${group['x']}" y="${group['y']}" width="${group['width']}" height="${group['height']}" rx="30" stroke="${mapColor(group['color'])}" stroke-width="${strockWidth}" fill="none"/>
<text x="${group['x'] + textOffsetX}" y="${group['y'] + textOffsetY}" font-family="Arial" font-size="${fontSize}" font-weight="${fontWeight}" fill="${fontColor}">${text}</text>
`
}
function renderEdge(edge) {
const strockWidth = 7
const strockWidth = 5
const color = mapColor(edge['color'])
return `
<marker xmlns="http://www.w3.org/2000/svg" id="triangle-${color}" viewBox="0 0 10 10" refX="0" refY="5" fill="${color}" markerUnits="strokeWidth" markerWidth="4" markerHeight="3" orient="auto">
<marker xmlns="http://www.w3.org/2000/svg" id="triangle-${color}" viewBox="0 0 10 10" refX="1" refY="5" fill="${color}" markerUnits="strokeWidth" markerWidth="3" markerHeight="3" orient="auto">
<path d="M 0 0 L 10 5 L 0 10 z"/>
</marker>
<line x1="${edge['fromX']}" y1="${edge['fromY']}" x2="${edge['toX']}" y2="${edge['toY']}" stroke="${color}" stroke-width="${strockWidth}" marker-end="url(#triangle-${color})" />
@@ -200,7 +211,7 @@ function convertCanvasToSVG(content) {
for (const edge of edges) {
const fromOffset = 3
const toOffset = 20
const toOffset = 15
// Get start and target nodes
+23
View File
@@ -0,0 +1,23 @@
<?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">
<svg viewBox="-250 -250 790 460" xmlns="http://www.w3.org/2000/svg">
<marker xmlns="http://www.w3.org/2000/svg" id="triangle-#7e7e7e" viewBox="0 0 10 10" refX="1" refY="5" fill="#7e7e7e" markerUnits="strokeWidth" markerWidth="3" markerHeight="3" orient="auto">
<path d="M 0 0 L 10 5 L 0 10 z"/>
</marker>
<line x1="-25" y1="-137" x2="-25" y2="-95" stroke="#7e7e7e" stroke-width="5" marker-end="url(#triangle-#7e7e7e)" />
<marker xmlns="http://www.w3.org/2000/svg" id="triangle-#7e7e7e" viewBox="0 0 10 10" refX="1" refY="5" fill="#7e7e7e" markerUnits="strokeWidth" markerWidth="3" markerHeight="3" orient="auto">
<path d="M 0 0 L 10 5 L 0 10 z"/>
</marker>
<line x1="153" y1="40" x2="225" y2="40" stroke="#7e7e7e" stroke-width="5" marker-end="url(#triangle-#7e7e7e)" />
<rect x="-150" y="-200" width="250" height="60" rx="15" stroke="#aa363d" stroke-width="4" fill="none"/>
<text x="-135" y="-170" font-family="Arial" font-size="18" font-weight="bold" fill="#2c2d2c">Create canvas in Obsidian</text>
<rect x="-200" y="-80" width="350" height="240" rx="15" stroke="#803dd1" stroke-width="4" fill="none"/>
<text x="-170" y="-35" font-family="Arial" font-size="28" font-weight="bold" fill="#9a7fee"><a href="/obsidian.html">Obsidian</a></text>
<rect x="240" y="10" width="250" height="60" rx="15" stroke="#249391" stroke-width="4" fill="none"/>
<text x="255" y="40" font-family="Arial" font-size="18" font-weight="bold" fill="#2c2d2c">Export as SVG</text>
</svg>

After

Width:  |  Height:  |  Size: 1.7 KiB

+31
View File
@@ -0,0 +1,31 @@
<?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">
<svg viewBox="-230 -310 390 400" xmlns="http://www.w3.org/2000/svg">
<marker xmlns="http://www.w3.org/2000/svg" id="triangle-#7e7e7e" viewBox="0 0 10 10" refX="1" refY="5" fill="#7e7e7e" markerUnits="strokeWidth" markerWidth="3" markerHeight="3" orient="auto">
<path d="M 0 0 L 10 5 L 0 10 z"/>
</marker>
<line x1="-35" y1="-43" x2="-35" y2="-65" stroke="#7e7e7e" stroke-width="5" marker-end="url(#triangle-#7e7e7e)" />
<marker xmlns="http://www.w3.org/2000/svg" id="triangle-#7e7e7e" viewBox="0 0 10 10" refX="1" refY="5" fill="#7e7e7e" markerUnits="strokeWidth" markerWidth="3" markerHeight="3" orient="auto">
<path d="M 0 0 L 10 5 L 0 10 z"/>
</marker>
<line x1="-35" y1="-43" x2="-35" y2="-65" stroke="#7e7e7e" stroke-width="5" marker-end="url(#triangle-#7e7e7e)" />
<marker xmlns="http://www.w3.org/2000/svg" id="triangle-#7e7e7e" viewBox="0 0 10 10" refX="1" refY="5" fill="#7e7e7e" markerUnits="strokeWidth" markerWidth="3" markerHeight="3" orient="auto">
<path d="M 0 0 L 10 5 L 0 10 z"/>
</marker>
<line x1="-35" y1="-143" x2="-35" y2="-165" stroke="#7e7e7e" stroke-width="5" marker-end="url(#triangle-#7e7e7e)" />
<rect x="-160" y="-240" width="250" height="60" rx="15" stroke="#7e7e7e" stroke-width="4" fill="none"/>
<text x="-145" y="-210" font-family="Arial" font-size="18" font-weight="bold" fill="#2c2d2c">Production (main)</text>
<rect x="-160" y="-140" width="250" height="60" rx="15" stroke="#7e7e7e" stroke-width="4" fill="none"/>
<text x="-145" y="-110" font-family="Arial" font-size="18" font-weight="bold" fill="#2c2d2c">Staging (int)</text>
<rect x="-160" y="-40" width="250" height="60" rx="15" stroke="#7e7e7e" stroke-width="4" fill="none"/>
<text x="-145" y="-10" font-family="Arial" font-size="18" font-weight="bold" fill="#2c2d2c">Development (dev)</text>
<rect x="-180" y="-260" width="290" height="300" rx="30" stroke="#7e7e7e" stroke-width="4" fill="none"/>
<text x="-165" y="-275" font-family="Arial" font-size="24" font-weight="bold" fill="#2c2d2c">Server Environment</text>
</svg>

After

Width:  |  Height:  |  Size: 2.2 KiB

+51
View File
@@ -0,0 +1,51 @@
<?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">
<svg viewBox="-1250 -850 1460 884" xmlns="http://www.w3.org/2000/svg">
<marker xmlns="http://www.w3.org/2000/svg" id="triangle-#7e7e7e" viewBox="0 0 10 10" refX="1" refY="5" fill="#7e7e7e" markerUnits="strokeWidth" markerWidth="3" markerHeight="3" orient="auto">
<path d="M 0 0 L 10 5 L 0 10 z"/>
</marker>
<line x1="-277" y1="-505" x2="-155" y2="-505" stroke="#7e7e7e" stroke-width="5" marker-end="url(#triangle-#7e7e7e)" />
<marker xmlns="http://www.w3.org/2000/svg" id="triangle-#7e7e7e" viewBox="0 0 10 10" refX="1" refY="5" fill="#7e7e7e" markerUnits="strokeWidth" markerWidth="3" markerHeight="3" orient="auto">
<path d="M 0 0 L 10 5 L 0 10 z"/>
</marker>
<line x1="-360" y1="-272" x2="-260" y2="-115" stroke="#7e7e7e" stroke-width="5" marker-end="url(#triangle-#7e7e7e)" />
<marker xmlns="http://www.w3.org/2000/svg" id="triangle-#7e7e7e" viewBox="0 0 10 10" refX="1" refY="5" fill="#7e7e7e" markerUnits="strokeWidth" markerWidth="3" markerHeight="3" orient="auto">
<path d="M 0 0 L 10 5 L 0 10 z"/>
</marker>
<line x1="-624" y1="-340" x2="-790.5" y2="-159" stroke="#7e7e7e" stroke-width="5" marker-end="url(#triangle-#7e7e7e)" />
<marker xmlns="http://www.w3.org/2000/svg" id="triangle-#aba960" viewBox="0 0 10 10" refX="1" refY="5" fill="#aba960" markerUnits="strokeWidth" markerWidth="3" markerHeight="3" orient="auto">
<path d="M 0 0 L 10 5 L 0 10 z"/>
</marker>
<line x1="-624" y1="-505" x2="-805" y2="-535.5" stroke="#aba960" stroke-width="5" marker-end="url(#triangle-#aba960)" />
<rect x="-621" y="-405" width="160" height="130" rx="15" stroke="#795fac" stroke-width="4" fill="none"/>
<text x="-606" y="-375" font-family="Arial" font-size="18" font-weight="bold" fill="#2c2d2c">Aerodoo</text>
<rect x="-621" y="-570" width="160" height="130" rx="15" stroke="#7e7e7e" stroke-width="4" fill="none"/>
<text x="-606" y="-540" font-family="Arial" font-size="18" font-weight="bold" fill="#2c2d2c">Caluma</text>
<rect x="-440" y="-405" width="160" height="130" rx="15" stroke="#6e1151" stroke-width="4" fill="none"/>
<text x="-425" y="-375" font-family="Arial" font-size="18" font-weight="bold" fill="#2c2d2c">Odoo</text>
<rect x="-941" y="-144" width="301" height="86" rx="15" stroke="#7e7e7e" stroke-width="4" fill="none"/>
<text x="-911" y="-99" font-family="Arial" font-size="28" font-weight="bold" fill="#9a7fee"><a href="/aerodoo.html">Aerodoo</a></text>
<rect x="-440" y="-570" width="160" height="130" rx="15" stroke="#249391" stroke-width="4" fill="none"/>
<text x="-425" y="-540" font-family="Arial" font-size="18" font-weight="bold" fill="#2c2d2c">Infrastruktur</text>
<rect x="-640" y="-800" width="400" height="143" rx="15" stroke="#7e7e7e" stroke-width="4" fill="none"/>
<image href="https://github.com/Mint-System/Knowledge/blob/master/assets/subscription banner.jpg?raw=true" x="-640" y="-800" width="400" height="143" clip-path="inset(0% round 15px)" />
<rect x="-140" y="-557" width="300" height="104" rx="15" stroke="#7e7e7e" stroke-width="4" fill="none"/>
<text x="-110" y="-512" font-family="Arial" font-size="28" font-weight="bold" fill="#9a7fee"><a href="/infrastruktur.html">Infrastruktur</a></text>
<rect x="-380" y="-100" width="240" height="84" rx="15" stroke="#7e7e7e" stroke-width="4" fill="none"/>
<text x="-350" y="-55" font-family="Arial" font-size="28" font-weight="bold" fill="#9a7fee"><a href="/odoo.html">Odoo</a></text>
<rect x="-1200" y="-618" width="380" height="165" rx="15" stroke="#7e7e7e" stroke-width="4" fill="none"/>
<text x="-1170" y="-573" font-family="Arial" font-size="28" font-weight="bold" fill="#9a7fee"><a href="/caluma.html">Caluma</a></text>
</svg>

After

Width:  |  Height:  |  Size: 3.9 KiB

+106
View File
@@ -0,0 +1,106 @@
<?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">
<svg viewBox="-490 -330 1160 440" xmlns="http://www.w3.org/2000/svg">
<marker xmlns="http://www.w3.org/2000/svg" id="triangle-#7e7e7e" viewBox="0 0 10 10" refX="1" refY="5" fill="#7e7e7e" markerUnits="strokeWidth" markerWidth="3" markerHeight="3" orient="auto">
<path d="M 0 0 L 10 5 L 0 10 z"/>
</marker>
<line x1="-277" y1="-230" x2="-175" y2="-230" stroke="#7e7e7e" stroke-width="5" marker-end="url(#triangle-#7e7e7e)" />
<marker xmlns="http://www.w3.org/2000/svg" id="triangle-#7e7e7e" viewBox="0 0 10 10" refX="1" refY="5" fill="#7e7e7e" markerUnits="strokeWidth" markerWidth="3" markerHeight="3" orient="auto">
<path d="M 0 0 L 10 5 L 0 10 z"/>
</marker>
<line x1="-277" y1="-150" x2="-175" y2="-150" stroke="#7e7e7e" stroke-width="5" marker-end="url(#triangle-#7e7e7e)" />
<marker xmlns="http://www.w3.org/2000/svg" id="triangle-#7e7e7e" viewBox="0 0 10 10" refX="1" refY="5" fill="#7e7e7e" markerUnits="strokeWidth" markerWidth="3" markerHeight="3" orient="auto">
<path d="M 0 0 L 10 5 L 0 10 z"/>
</marker>
<line x1="-277" y1="-70" x2="-175" y2="-70" stroke="#7e7e7e" stroke-width="5" marker-end="url(#triangle-#7e7e7e)" />
<marker xmlns="http://www.w3.org/2000/svg" id="triangle-#7e7e7e" viewBox="0 0 10 10" refX="1" refY="5" fill="#7e7e7e" markerUnits="strokeWidth" markerWidth="3" markerHeight="3" orient="auto">
<path d="M 0 0 L 10 5 L 0 10 z"/>
</marker>
<line x1="357" y1="-110" x2="235" y2="-230" stroke="#7e7e7e" stroke-width="5" marker-end="url(#triangle-#7e7e7e)" />
<marker xmlns="http://www.w3.org/2000/svg" id="triangle-#7e7e7e" viewBox="0 0 10 10" refX="1" refY="5" fill="#7e7e7e" markerUnits="strokeWidth" markerWidth="3" markerHeight="3" orient="auto">
<path d="M 0 0 L 10 5 L 0 10 z"/>
</marker>
<line x1="357" y1="-110" x2="235" y2="-150" stroke="#7e7e7e" stroke-width="5" marker-end="url(#triangle-#7e7e7e)" />
<marker xmlns="http://www.w3.org/2000/svg" id="triangle-#7e7e7e" viewBox="0 0 10 10" refX="1" refY="5" fill="#7e7e7e" markerUnits="strokeWidth" markerWidth="3" markerHeight="3" orient="auto">
<path d="M 0 0 L 10 5 L 0 10 z"/>
</marker>
<line x1="357" y1="-110" x2="235" y2="-70" stroke="#7e7e7e" stroke-width="5" marker-end="url(#triangle-#7e7e7e)" />
<marker xmlns="http://www.w3.org/2000/svg" id="triangle-#7e7e7e" viewBox="0 0 10 10" refX="1" refY="5" fill="#7e7e7e" markerUnits="strokeWidth" markerWidth="3" markerHeight="3" orient="auto">
<path d="M 0 0 L 10 5 L 0 10 z"/>
</marker>
<line x1="357" y1="-110" x2="235" y2="10" stroke="#7e7e7e" stroke-width="5" marker-end="url(#triangle-#7e7e7e)" />
<marker xmlns="http://www.w3.org/2000/svg" id="triangle-#7e7e7e" viewBox="0 0 10 10" refX="1" refY="5" fill="#7e7e7e" markerUnits="strokeWidth" markerWidth="3" markerHeight="3" orient="auto">
<path d="M 0 0 L 10 5 L 0 10 z"/>
</marker>
<line x1="-90" y1="-103" x2="-90" y2="-105" stroke="#7e7e7e" stroke-width="5" marker-end="url(#triangle-#7e7e7e)" />
<marker xmlns="http://www.w3.org/2000/svg" id="triangle-#7e7e7e" viewBox="0 0 10 10" refX="1" refY="5" fill="#7e7e7e" markerUnits="strokeWidth" markerWidth="3" markerHeight="3" orient="auto">
<path d="M 0 0 L 10 5 L 0 10 z"/>
</marker>
<line x1="-90" y1="-183" x2="-90" y2="-185" stroke="#7e7e7e" stroke-width="5" marker-end="url(#triangle-#7e7e7e)" />
<marker xmlns="http://www.w3.org/2000/svg" id="triangle-#7e7e7e" viewBox="0 0 10 10" refX="1" refY="5" fill="#7e7e7e" markerUnits="strokeWidth" markerWidth="3" markerHeight="3" orient="auto">
<path d="M 0 0 L 10 5 L 0 10 z"/>
</marker>
<line x1="-17" y1="-230" x2="65" y2="-230" stroke="#7e7e7e" stroke-width="5" marker-end="url(#triangle-#7e7e7e)" />
<marker xmlns="http://www.w3.org/2000/svg" id="triangle-#7e7e7e" viewBox="0 0 10 10" refX="1" refY="5" fill="#7e7e7e" markerUnits="strokeWidth" markerWidth="3" markerHeight="3" orient="auto">
<path d="M 0 0 L 10 5 L 0 10 z"/>
</marker>
<line x1="-17" y1="-150" x2="65" y2="-150" stroke="#7e7e7e" stroke-width="5" marker-end="url(#triangle-#7e7e7e)" />
<marker xmlns="http://www.w3.org/2000/svg" id="triangle-#7e7e7e" viewBox="0 0 10 10" refX="1" refY="5" fill="#7e7e7e" markerUnits="strokeWidth" markerWidth="3" markerHeight="3" orient="auto">
<path d="M 0 0 L 10 5 L 0 10 z"/>
</marker>
<line x1="-17" y1="-70" x2="65" y2="-70" stroke="#7e7e7e" stroke-width="5" marker-end="url(#triangle-#7e7e7e)" />
<rect x="80" y="-260" width="140" height="60" rx="15" stroke="#7e7e7e" stroke-width="4" fill="none"/>
<text x="95" y="-230" font-family="Arial" font-size="18" font-weight="bold" fill="#2c2d2c">odoo01</text>
<rect x="80" y="-180" width="140" height="60" rx="15" stroke="#7e7e7e" stroke-width="4" fill="none"/>
<text x="95" y="-150" font-family="Arial" font-size="18" font-weight="bold" fill="#2c2d2c">odoo02</text>
<rect x="80" y="-100" width="140" height="60" rx="15" stroke="#7e7e7e" stroke-width="4" fill="none"/>
<text x="95" y="-70" font-family="Arial" font-size="18" font-weight="bold" fill="#2c2d2c">odoo03</text>
<rect x="80" y="-20" width="140" height="60" rx="15" stroke="#7e7e7e" stroke-width="4" fill="none"/>
<text x="95" y="10" font-family="Arial" font-size="18" font-weight="bold" fill="#2c2d2c">mailhog01</text>
<rect x="-420" y="-260" width="140" height="60" rx="15" stroke="#7e7e7e" stroke-width="4" fill="none"/>
<text x="-405" y="-230" font-family="Arial" font-size="18" font-weight="bold" fill="#2c2d2c">main branch</text>
<rect x="-420" y="-180" width="140" height="60" rx="15" stroke="#7e7e7e" stroke-width="4" fill="none"/>
<text x="-405" y="-150" font-family="Arial" font-size="18" font-weight="bold" fill="#2c2d2c">int branch</text>
<rect x="-420" y="-100" width="140" height="60" rx="15" stroke="#7e7e7e" stroke-width="4" fill="none"/>
<text x="-405" y="-70" font-family="Arial" font-size="18" font-weight="bold" fill="#2c2d2c">dev branch</text>
<rect x="-160" y="-260" width="140" height="60" rx="15" stroke="#7e7e7e" stroke-width="4" fill="none"/>
<text x="-145" y="-230" font-family="Arial" font-size="18" font-weight="bold" fill="#2c2d2c">main pipeline</text>
<rect x="-160" y="-180" width="140" height="60" rx="15" stroke="#7e7e7e" stroke-width="4" fill="none"/>
<text x="-145" y="-150" font-family="Arial" font-size="18" font-weight="bold" fill="#2c2d2c">int pipeline</text>
<rect x="-160" y="-100" width="140" height="60" rx="15" stroke="#7e7e7e" stroke-width="4" fill="none"/>
<text x="-145" y="-70" font-family="Arial" font-size="18" font-weight="bold" fill="#2c2d2c">dev pipeline</text>
<rect x="360" y="-200" width="220" height="180" rx="15" stroke="#7e7e7e" stroke-width="4" fill="none"/>
<text x="375" y="-190" font-family="Arial" font-size="18" font-weight="bold" fill="#2c2d2c"><tspan x="375" dy="21">nginx01</tspan><tspan x="375" dy="21">- odoo.example.com</tspan><tspan x="375" dy="21">- int.example.com</tspan><tspan x="375" dy="21">- dev.example.com</tspan><tspan x="375" dy="21">- mail.example.com</tspan><tspan x="375" dy="21">- cd.example.com</tspan></text>
<rect x="60" y="-280" width="560" height="340" rx="30" stroke="#7e7e7e" stroke-width="4" fill="none"/>
<text x="75" y="-295" font-family="Arial" font-size="24" font-weight="bold" fill="#2c2d2c">Odoo Environment</text>
<rect x="-180" y="-280" width="180" height="260" rx="30" stroke="#7e7e7e" stroke-width="4" fill="none"/>
<text x="-165" y="-295" font-family="Arial" font-size="24" font-weight="bold" fill="#2c2d2c">Drone</text>
<rect x="-440" y="-280" width="180" height="260" rx="30" stroke="#7e7e7e" stroke-width="4" fill="none"/>
<text x="-425" y="-295" font-family="Arial" font-size="24" font-weight="bold" fill="#2c2d2c">GitHub Repo</text>
</svg>

After

Width:  |  Height:  |  Size: 8.0 KiB