<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Drone on Mohammad Jashem — Senior Full-Stack Mobile Engineer</title><link>https://mjashem.com/tags/drone/</link><description>Recent content in Drone on Mohammad Jashem — Senior Full-Stack Mobile Engineer</description><generator>Hugo -- gohugo.io</generator><language>en</language><managingEditor>mjashem@hotmail.com (Mohammad Jashem)</managingEditor><webMaster>mjashem@hotmail.com (Mohammad Jashem)</webMaster><lastBuildDate>Sun, 19 Jul 2026 00:00:00 +0600</lastBuildDate><atom:link href="https://mjashem.com/tags/drone/index.xml" rel="self" type="application/rss+xml"/><item><title>Self-Hosted Hugo CI/CD: Drone + Cloudflare Tunnel</title><link>https://mjashem.com/insights/hugo-cicd-self-hosted-drone/</link><pubDate>Sun, 19 Jul 2026 00:00:00 +0600</pubDate><author>mjashem@hotmail.com (Mohammad Jashem)</author><guid>https://mjashem.com/insights/hugo-cicd-self-hosted-drone/</guid><description>&lt;p&gt;Push to &lt;code&gt;main&lt;/code&gt;. Hugo rebuilds in CI, the built site ships to the server over SCP, the container force-recreates, and the new content is live in well under a minute, in practice. No port ever opens on the server. That last part is the whole point — and once you&amp;rsquo;ve run a static site this way, the idea of exposing a box to the internet to serve HTML feels archaic.&lt;/p&gt;</description></item><item><title>Mobile CI/CD &amp; Release Automation — The Complete Stack</title><link>https://mjashem.com/insights/mobile-ci-cd-release-automation/</link><pubDate>Wed, 08 Jul 2026 00:00:00 +0600</pubDate><author>mjashem@hotmail.com (Mohammad Jashem)</author><guid>https://mjashem.com/insights/mobile-ci-cd-release-automation/</guid><description>&lt;p&gt;I&amp;rsquo;m Mohammad Jashem — a Senior Mobile Architect shipping Flutter, React Native, and Expo to production for 7+ years. I maintain the &lt;a
href="https://mjashem.com/projects/ncc-mobile-app/"&gt;NCC App&lt;/a&gt; across Google Play, the App Store, and Amazon Appstore, and I haven&amp;rsquo;t cut a release by hand in years. Three stores, three review processes, three device matrices — all on a pipeline I built once and have kept shippable since.&lt;/p&gt;</description></item><item><title>Why I Switched from Woodpecker to Drone for Flutter CI/CD</title><link>https://mjashem.com/blog/why-i-switched-from-woodpecker-to-drone/</link><pubDate>Mon, 03 Nov 2025 00:00:00 +0600</pubDate><author>mjashem@hotmail.com (Mohammad Jashem)</author><guid>https://mjashem.com/blog/why-i-switched-from-woodpecker-to-drone/</guid><description>&lt;h1 class="relative group"&gt;Why I Switched from Woodpecker to Drone for Flutter CI/CD
&lt;div id="why-i-switched-from-woodpecker-to-drone-for-flutter-cicd" class="anchor"&gt;&lt;/div&gt;
&lt;span
class="absolute top-0 w-6 transition-opacity opacity-0 ltr:-left-6 rtl:-right-6 not-prose group-hover:opacity-100"&gt;
&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700 !no-underline" href="#why-i-switched-from-woodpecker-to-drone-for-flutter-cicd" aria-label="Anchor"&gt;#&lt;/a&gt;
&lt;/span&gt;
&lt;/h1&gt;
&lt;p&gt;As a mobile developer managing multiple Flutter apps, I invested heavily in building a self-hosted CI/CD pipeline to automate deployments to Google Play Store, Apple App Store, and Amazon Appstore. The goal was simple: automate my nightly builds so I could sleep better while my apps get deployed automatically. What started as a promising setup with Woodpecker CI eventually became a source of constant frustration and sleepless nights, leading me to migrate to Drone CI. This is the technical story of that migration and the countless hours I lost troubleshooting issues that were supposed to save me time.&lt;/p&gt;</description><media:content xmlns:media="http://search.yahoo.com/mrss/" url="https://mjashem.com/blog/why-i-switched-from-woodpecker-to-drone/feature.jpg"/></item></channel></rss>