<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[CI/CD]]></title><description><![CDATA[<p dir="auto">Okay, so we would have 3 main things to do in our CI:</p>
<ol>
<li>Generate STEP files from FreeCAD</li>
<li>Generate PDF files from KiCad</li>
<li>Unittest (in the future) and generate binary/hex file</li>
</ol>
<p dir="auto">As from my point of view all of three sections should be separated in different repos and combined using <code>git submodules</code>, though there are few problems I see, mostly in <code>CAD</code>:</p>
<ol>
<li>CI/CD must know from which input files generate output files - as for now they are kind of mixed in main <code>CAD</code> folder, so my proposition is to create separate folder for:<br />
1.1 <code>3D_printed</code> parts, as these need to be converted from <code>*.FCStd</code> into <code>*.step</code><br />
1.2. <code>2D drawings</code> parts, like <code>Current Collector Drawing</code> or <code>Gasket Drawings</code> which needs to be translated from <code>*.FCStd</code> into <code>*.pdf</code><br />
1.3. Renders which would require rendering whole assemblies - those could be placed in <code>Assembly</code> folder</li>
</ol>
<p dir="auto">We would end up with structure of:</p>
<pre><code class="language-bash">.
├── 2D_drawings
├── 3D_print
└── Assembly
</code></pre>
<ol start="2">
<li>
<p dir="auto"><code>Electronics</code> is pretty simple, as there will be only KiCAD project, maybe the some kind of electronical/electrical calculations, though I think we are far from it now</p>
</li>
<li>
<p dir="auto">Similar with <code>Firmware</code>, there would be simply two folders: <code>src</code> and <code>tests</code>, but that is also a next step</p>
</li>
</ol>
<p dir="auto">I would love to hear other opinions, my idea is to create CI/CD as simple as possible, due to fact that I understand that many ppl who would like to contribute with CAD files might be not familiar with any CI/CD, and for that I came up with that folder idea</p>
]]></description><link>https://fbrc.nodebb.com/topic/9/ci-cd</link><generator>RSS for Node</generator><lastBuildDate>Tue, 08 Sep 2026 04:13:07 GMT</lastBuildDate><atom:link href="https://fbrc.nodebb.com/topic/9.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 05 Feb 2025 17:20:32 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to CI/CD on Fri, 14 Feb 2025 01:10:25 GMT]]></title><description><![CDATA[<p dir="auto">Stephen Hawes of Opulo has compiled some of their tools here:</p>
<p dir="auto"><a href="https://midscale.io/docs" rel="nofollow ugc">https://midscale.io/docs</a></p>
<p dir="auto">The AutoBOM one seems to be based on those workflows above and looks pretty interesting</p>
]]></description><link>https://fbrc.nodebb.com/post/46</link><guid isPermaLink="true">https://fbrc.nodebb.com/post/46</guid><dc:creator><![CDATA[kirk]]></dc:creator><pubDate>Fri, 14 Feb 2025 01:10:25 GMT</pubDate></item><item><title><![CDATA[Reply to CI/CD on Thu, 06 Feb 2025 16:34:01 GMT]]></title><description><![CDATA[<p dir="auto">Yes, I would like to use either Codeberg/Woodpecker CI or Forgejo Actions - I did not try the second one, so I am not sure yet</p>
<p dir="auto">Thanks for the examples, I will look at these!</p>
]]></description><link>https://fbrc.nodebb.com/post/39</link><guid isPermaLink="true">https://fbrc.nodebb.com/post/39</guid><dc:creator><![CDATA[H4K1]]></dc:creator><pubDate>Thu, 06 Feb 2025 16:34:01 GMT</pubDate></item><item><title><![CDATA[Reply to CI/CD on Wed, 05 Feb 2025 19:36:02 GMT]]></title><description><![CDATA[<p dir="auto">Oh, nice work! Would this be using the Woodpecker CI that Codeberg has? <a href="https://docs.codeberg.org/ci/" rel="nofollow ugc">https://docs.codeberg.org/ci/</a></p>
<p dir="auto">I also found where the LumenPNP developers have all their CI/CD workflows, for FreeCAD and KiCAD and such:</p>
<p dir="auto"><a href="https://github.com/opulo-inc/lumenpnp/tree/main/.github/workflows" rel="nofollow ugc">https://github.com/opulo-inc/lumenpnp/tree/main/.github/workflows</a></p>
<p dir="auto">Maybe these could be used with minimal modification?</p>
]]></description><link>https://fbrc.nodebb.com/post/32</link><guid isPermaLink="true">https://fbrc.nodebb.com/post/32</guid><dc:creator><![CDATA[kirk]]></dc:creator><pubDate>Wed, 05 Feb 2025 19:36:02 GMT</pubDate></item><item><title><![CDATA[Reply to CI/CD on Wed, 05 Feb 2025 19:10:06 GMT]]></title><description><![CDATA[<p dir="auto">Okay so for CAD, I created a simple tutorial, mostly for myself, as I wanna go to sleep soon, and might forget what to do <img src="https://fbrc.nodebb.com/assets/plugins/nodebb-plugin-emoji/emoji/android/1f61b.png?v=692720361f0" class="not-responsive emoji emoji-android emoji--stuck_out_tongue" style="height:23px;width:auto;vertical-align:middle" title=":P" alt="😛" /> This might be not optimal, or obsolete, I did not find another FreeCAD's docker image</p>
<p dir="auto">EDIT: I have found a newer <a href="https://hub.docker.com/r/linuxserver/freecad" rel="nofollow ugc">FreeCAD image</a>, though it cointain GUI as well, thus works really weird without X server <img src="https://fbrc.nodebb.com/assets/plugins/nodebb-plugin-emoji/emoji/android/1f61e.png?v=692720361f0" class="not-responsive emoji emoji-android emoji--disappointed" style="height:23px;width:auto;vertical-align:middle" title=":(" alt="😞" /></p>
<ol>
<li>
<p dir="auto">Pull FreeCAD's docker image (maybe we would need to create an new FreeCAD's image, as this one seems to be pretty old <a href="https://wiki.freecad.org/FreeCAD_Docker_CLI_mode" rel="nofollow ugc">FreeCAD wiki</a></p>
</li>
<li>
<p dir="auto">run it in <code>CAD</code> folder:</p>
</li>
</ol>
<pre><code class="language-bash">docker run --rm -it -v ${PWD}:/home/CAD  amrit3701/freecad-cli:latest python3.8
</code></pre>
<ol start="3">
<li>Now we are in docker's image Python interpreter</li>
</ol>
<p dir="auto">Let's assume that we do have this tree as I mentioned in previous post:</p>
<p dir="auto">We are choosing first one from <code>3D_printed</code> folder (ofc in the future we would iterate over files in given directory)</p>
<pre><code class="language-bash">&gt;&gt;&gt; doc = FreeCAD.open(os.path.join("3D_printed", os.listdir("3D_printed")[0]))
</code></pre>
<p dir="auto">We find <code>body</code> object which (I hope) will be on 1st place:</p>
<pre><code class="language-bash">&gt;&gt;&gt; doc.findObjects()[0].Shape.exportStep(f'{doc.Name}.step')
</code></pre>
<p dir="auto">Voila! We do have our STEP file</p>
]]></description><link>https://fbrc.nodebb.com/post/28</link><guid isPermaLink="true">https://fbrc.nodebb.com/post/28</guid><dc:creator><![CDATA[H4K1]]></dc:creator><pubDate>Wed, 05 Feb 2025 19:10:06 GMT</pubDate></item></channel></rss>