{"id":445,"date":"2025-01-09T00:06:12","date_gmt":"2025-01-09T08:06:12","guid":{"rendered":"https:\/\/kdcinfo.com\/blog\/?p=445"},"modified":"2025-01-09T01:06:59","modified_gmt":"2025-01-09T09:06:59","slug":"a-2025-flutter-ci-cd-flow-using-jenkins-docker-dind-and-fastlane-hosted-on-a-mac","status":"publish","type":"post","link":"https:\/\/kdcinfo.com\/blog\/2025\/01\/09\/a-2025-flutter-ci-cd-flow-using-jenkins-docker-dind-and-fastlane-hosted-on-a-mac\/","title":{"rendered":"A 2025 Flutter CI\/CD Flow using Jenkins, Docker (DinD), and fastlane Hosted on a Mac"},"content":{"rendered":"\n<h2 class=\"wp-block-heading\">And how to skip over 300 gotchas when building a CI\/CD flow.<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">I am providing all the files and settings used to successfully deploy my Flutter apps to both stores using the tech listed in the title. Although a bit limited in scope, I do this in the hopes it helps others in their CI\/CD adventures.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Due to the expected high rate of build failures inherent in learning such an intricate concept as CI\/CD, I opted out of paid (or restrictive-free) CI\/CD services like Codemagic or Bitrise during my training period. Instead, I opted to learn Jenkins (this post) and GitHub Actions (<a href=\"https:\/\/kdcinfo.com\/blog\/2024\/07\/21\/preliminary-adventures-in-ci-cd-with-flutter\/\" target=\"_blank\" rel=\"noreferrer noopener\">previous post<\/a>). And because I&#8217;m a solo developer running Jenkins privately on <code>localhost<\/code>, I also opted not to create an auto-trigger with GitHub, and instead, manually trigger the CD flow via a shell script once it has been decided that <code>main<\/code> is ready for deployment.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The aim here is to simply lay out an overview of the entire flow, and <a href=\"https:\/\/github.com\/KDCinfo\/flutter-jenkins-docker-ci-cd\">provide a starting point<\/a> covering all the files and structures referenced within the flow.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Simple Outline of CI\/CD Flow<\/h3>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"alignright size-full is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"442\" height=\"609\" src=\"https:\/\/kdcinfo.com\/blog\/wp-content\/uploads\/2025\/01\/flutter-ci-cd-docker-jenkins-flow-2.png\" alt=\"2025 Flutter Mac-based CI\/CD w\/ Jenkins + Docker + fastlane\" class=\"wp-image-535\" style=\"width:370px\" srcset=\"https:\/\/kdcinfo.com\/blog\/wp-content\/uploads\/2025\/01\/flutter-ci-cd-docker-jenkins-flow-2.png 442w, https:\/\/kdcinfo.com\/blog\/wp-content\/uploads\/2025\/01\/flutter-ci-cd-docker-jenkins-flow-2-218x300.png 218w\" sizes=\"auto, (max-width: 442px) 100vw, 442px\" \/><\/figure>\n<\/div>\n\n\n<ul class=\"wp-block-list\">\n<li>Update feature\/bug branch:\n<ul class=\"wp-block-list\">\n<li>Create PR to merge to `main`.<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li>When decision is made to release the app:\n<ul class=\"wp-block-list\">\n<li>Start up Docker Desktop (if not already).<\/li>\n\n\n\n<li>Start up Jenkins using a few scripts.<\/li>\n\n\n\n<li>Deploy the app using a script that will prompt for version updates and update relevant release notes.<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li>Open the Jenkins dashboard:\n<ul class=\"wp-block-list\">\n<li>Select the main Pipeline build project \u2192 Console output<\/li>\n\n\n\n<li>If successful, select the iOS Pipeline build project \u2192 Console output<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Getting Started<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">The quickest way to get started is to read the <a href=\"https:\/\/github.com\/KDCinfo\/flutter-jenkins-docker-ci-cd\">root README.md<\/a>. It provides crucial steps to get everything set up properly and where to go from there. And while there are dozens of steps that route through a handful of files, these starter files can potentially help to circumvent hundreds of detailed hurdles and challenges when it comes to setting everything up. Or at least that&#8217;s my hope that it save someone some time, somewhere.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Forest-level Flow<\/h3>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"alignright size-full is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"997\" height=\"957\" src=\"https:\/\/kdcinfo.com\/blog\/wp-content\/uploads\/2025\/01\/dataclumpflow.png\" alt=\"\" class=\"wp-image-532\" style=\"width:350px\" srcset=\"https:\/\/kdcinfo.com\/blog\/wp-content\/uploads\/2025\/01\/dataclumpflow.png 997w, https:\/\/kdcinfo.com\/blog\/wp-content\/uploads\/2025\/01\/dataclumpflow-300x288.png 300w, https:\/\/kdcinfo.com\/blog\/wp-content\/uploads\/2025\/01\/dataclumpflow-768x737.png 768w\" sizes=\"auto, (max-width: 997px) 100vw, 997px\" \/><\/figure>\n<\/div>\n\n\n<p class=\"wp-block-paragraph\">Within the <a href=\"https:\/\/github.com\/KDCinfo\/flutter-jenkins-docker-ci-cd\">GitHub repository<\/a>, there is a file provided in the <code>assets<\/code> folder called <code><a href=\"https:\/\/github.com\/KDCinfo\/flutter-jenkins-docker-ci-cd\/blob\/main\/assets\/dataclumps.json\">dataclumps.json<\/a><\/code>. That file can be imported into the <strong><a href=\"https:\/\/kdcinfo.com\/blog\/2024\/11\/15\/data-clump-flow-app\/\">Data Clump Flow Analysis Tool<\/a><\/strong> using the directions provided in the <a href=\"https:\/\/github.com\/KDCinfo\/flutter-jenkins-docker-ci-cd\/blob\/main\/assets\/dataclumpflow.txt\">dataclumpflow.txt<\/a> file.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Summary<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">While DevOps has been a driving force in my last few months, having successfully pushed one of my apps to both stores using this flow, I&#8217;m looking forward to getting back to building something special with Flutter and Dart. \ud83d\udc99<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Always open to feedback!<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>GitHub: <a href=\"https:\/\/github.com\/KDCinfo\/flutter-jenkins-docker-ci-cd\">https:\/\/github.com\/KDCinfo\/flutter-jenkins-docker-ci-cd<\/a><\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\"><em>Cheers!<\/em><br>Keith |&nbsp;<a href=\"https:\/\/keithdc.com\/\">https:\/\/keithdc.com<\/a><\/p>\n\n\n\n<hr class=\"wp-block-separator aligncenter has-text-color has-vivid-cyan-blue-color has-alpha-channel-opacity has-vivid-cyan-blue-background-color has-background is-style-wide\"\/>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Blog Comments Notification<\/strong>: As a general rule, comments with URLs will typically be discarded as spam, unless they&#8217;re verifiable and directly related to Flutter development. Thank you for sharing and keeping things on-topic.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>And how to skip over 300 gotchas when building a CI\/CD flow. I am providing all the files and settings used to successfully deploy my<\/p>\n","protected":false},"author":1,"featured_media":534,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[137,3],"tags":[139,142,164,110,163],"class_list":["post-445","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-ci-cd","category-flutter","tag-ci-cd","tag-docker","tag-fastlane","tag-flutter","tag-jenkins"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v28.8 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>A 2025 Flutter CI\/CD Flow using Jenkins, Docker (DinD), and fastlane Hosted on a Mac - App Development: Odds and Ends<\/title>\n<meta name=\"description\" content=\"A 2025 Flutter CI\/CD Flow using Docker (DinD), Jenkins, and fastlane Hosted on a Mac.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/kdcinfo.com\/blog\/2025\/01\/09\/a-2025-flutter-ci-cd-flow-using-jenkins-docker-dind-and-fastlane-hosted-on-a-mac\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"A 2025 Flutter CI\/CD Flow using Jenkins, Docker (DinD), and fastlane Hosted on a Mac - App Development: Odds and Ends\" \/>\n<meta property=\"og:description\" content=\"A 2025 Flutter CI\/CD Flow using Docker (DinD), Jenkins, and fastlane Hosted on a Mac.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/kdcinfo.com\/blog\/2025\/01\/09\/a-2025-flutter-ci-cd-flow-using-jenkins-docker-dind-and-fastlane-hosted-on-a-mac\/\" \/>\n<meta property=\"og:site_name\" content=\"App Development: Odds and Ends\" \/>\n<meta property=\"article:published_time\" content=\"2025-01-09T08:06:12+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-01-09T09:06:59+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/kdcinfo.com\/blog\/wp-content\/uploads\/2025\/01\/flutter-ci-cd-docker-jenkins-flow-cropped.png\" \/>\n\t<meta property=\"og:image:width\" content=\"431\" \/>\n\t<meta property=\"og:image:height\" content=\"245\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Keith D Commiskey\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Keith D Commiskey\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"3 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/kdcinfo.com\\\/blog\\\/2025\\\/01\\\/09\\\/a-2025-flutter-ci-cd-flow-using-jenkins-docker-dind-and-fastlane-hosted-on-a-mac\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/kdcinfo.com\\\/blog\\\/2025\\\/01\\\/09\\\/a-2025-flutter-ci-cd-flow-using-jenkins-docker-dind-and-fastlane-hosted-on-a-mac\\\/\"},\"author\":{\"name\":\"Keith D Commiskey\",\"@id\":\"https:\\\/\\\/kdcinfo.com\\\/blog\\\/#\\\/schema\\\/person\\\/87980b154db7bd0cd7c569ca09328bac\"},\"headline\":\"A 2025 Flutter CI\\\/CD Flow using Jenkins, Docker (DinD), and fastlane Hosted on a Mac\",\"datePublished\":\"2025-01-09T08:06:12+00:00\",\"dateModified\":\"2025-01-09T09:06:59+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/kdcinfo.com\\\/blog\\\/2025\\\/01\\\/09\\\/a-2025-flutter-ci-cd-flow-using-jenkins-docker-dind-and-fastlane-hosted-on-a-mac\\\/\"},\"wordCount\":477,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/kdcinfo.com\\\/blog\\\/#\\\/schema\\\/person\\\/87980b154db7bd0cd7c569ca09328bac\"},\"image\":{\"@id\":\"https:\\\/\\\/kdcinfo.com\\\/blog\\\/2025\\\/01\\\/09\\\/a-2025-flutter-ci-cd-flow-using-jenkins-docker-dind-and-fastlane-hosted-on-a-mac\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/kdcinfo.com\\\/blog\\\/wp-content\\\/uploads\\\/2025\\\/01\\\/flutter-ci-cd-docker-jenkins-flow-cropped.png\",\"keywords\":[\"CI\\\/CD\",\"Docker\",\"fastlane\",\"flutter\",\"jenkins\"],\"articleSection\":[\"CI\\\/CD\",\"flutter\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/kdcinfo.com\\\/blog\\\/2025\\\/01\\\/09\\\/a-2025-flutter-ci-cd-flow-using-jenkins-docker-dind-and-fastlane-hosted-on-a-mac\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/kdcinfo.com\\\/blog\\\/2025\\\/01\\\/09\\\/a-2025-flutter-ci-cd-flow-using-jenkins-docker-dind-and-fastlane-hosted-on-a-mac\\\/\",\"url\":\"https:\\\/\\\/kdcinfo.com\\\/blog\\\/2025\\\/01\\\/09\\\/a-2025-flutter-ci-cd-flow-using-jenkins-docker-dind-and-fastlane-hosted-on-a-mac\\\/\",\"name\":\"A 2025 Flutter CI\\\/CD Flow using Jenkins, Docker (DinD), and fastlane Hosted on a Mac - App Development: Odds and Ends\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/kdcinfo.com\\\/blog\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/kdcinfo.com\\\/blog\\\/2025\\\/01\\\/09\\\/a-2025-flutter-ci-cd-flow-using-jenkins-docker-dind-and-fastlane-hosted-on-a-mac\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/kdcinfo.com\\\/blog\\\/2025\\\/01\\\/09\\\/a-2025-flutter-ci-cd-flow-using-jenkins-docker-dind-and-fastlane-hosted-on-a-mac\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/kdcinfo.com\\\/blog\\\/wp-content\\\/uploads\\\/2025\\\/01\\\/flutter-ci-cd-docker-jenkins-flow-cropped.png\",\"datePublished\":\"2025-01-09T08:06:12+00:00\",\"dateModified\":\"2025-01-09T09:06:59+00:00\",\"description\":\"A 2025 Flutter CI\\\/CD Flow using Docker (DinD), Jenkins, and fastlane Hosted on a Mac.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/kdcinfo.com\\\/blog\\\/2025\\\/01\\\/09\\\/a-2025-flutter-ci-cd-flow-using-jenkins-docker-dind-and-fastlane-hosted-on-a-mac\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/kdcinfo.com\\\/blog\\\/2025\\\/01\\\/09\\\/a-2025-flutter-ci-cd-flow-using-jenkins-docker-dind-and-fastlane-hosted-on-a-mac\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/kdcinfo.com\\\/blog\\\/2025\\\/01\\\/09\\\/a-2025-flutter-ci-cd-flow-using-jenkins-docker-dind-and-fastlane-hosted-on-a-mac\\\/#primaryimage\",\"url\":\"https:\\\/\\\/kdcinfo.com\\\/blog\\\/wp-content\\\/uploads\\\/2025\\\/01\\\/flutter-ci-cd-docker-jenkins-flow-cropped.png\",\"contentUrl\":\"https:\\\/\\\/kdcinfo.com\\\/blog\\\/wp-content\\\/uploads\\\/2025\\\/01\\\/flutter-ci-cd-docker-jenkins-flow-cropped.png\",\"width\":431,\"height\":245,\"caption\":\"Banner - 2025 Flutter Mac-based CI\\\/CD w\\\/ Jenkins + Docker + fastlane\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/kdcinfo.com\\\/blog\\\/2025\\\/01\\\/09\\\/a-2025-flutter-ci-cd-flow-using-jenkins-docker-dind-and-fastlane-hosted-on-a-mac\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/kdcinfo.com\\\/blog\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"A 2025 Flutter CI\\\/CD Flow using Jenkins, Docker (DinD), and fastlane Hosted on a Mac\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/kdcinfo.com\\\/blog\\\/#website\",\"url\":\"https:\\\/\\\/kdcinfo.com\\\/blog\\\/\",\"name\":\"App Development: Odds and Ends\",\"description\":\"Providing insights into a career of apps and utilities that I&#039;ve conceptualized, designed, and developed; complemented with developmental journeys, findings, observations, and challenges encountered along the way.\",\"publisher\":{\"@id\":\"https:\\\/\\\/kdcinfo.com\\\/blog\\\/#\\\/schema\\\/person\\\/87980b154db7bd0cd7c569ca09328bac\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/kdcinfo.com\\\/blog\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\\\/\\\/kdcinfo.com\\\/blog\\\/#\\\/schema\\\/person\\\/87980b154db7bd0cd7c569ca09328bac\",\"name\":\"Keith D Commiskey\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/kdcinfo.com\\\/blog\\\/wp-content\\\/uploads\\\/2023\\\/08\\\/keith-sac-01.jpg\",\"url\":\"https:\\\/\\\/kdcinfo.com\\\/blog\\\/wp-content\\\/uploads\\\/2023\\\/08\\\/keith-sac-01.jpg\",\"contentUrl\":\"https:\\\/\\\/kdcinfo.com\\\/blog\\\/wp-content\\\/uploads\\\/2023\\\/08\\\/keith-sac-01.jpg\",\"width\":113,\"height\":117,\"caption\":\"Keith D Commiskey\"},\"logo\":{\"@id\":\"https:\\\/\\\/kdcinfo.com\\\/blog\\\/wp-content\\\/uploads\\\/2023\\\/08\\\/keith-sac-01.jpg\"},\"description\":\"Web App Creator; Former Flutter Developer; Former Front End Developer; Former Technical Graphics.\",\"sameAs\":[\"https:\\\/\\\/kdcinfo.com\\\/blog\",\"https:\\\/\\\/www.linkedin.com\\\/in\\\/commiskey\"],\"url\":\"https:\\\/\\\/kdcinfo.com\\\/blog\\\/author\\\/kdc4wp\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"A 2025 Flutter CI\/CD Flow using Jenkins, Docker (DinD), and fastlane Hosted on a Mac - App Development: Odds and Ends","description":"A 2025 Flutter CI\/CD Flow using Docker (DinD), Jenkins, and fastlane Hosted on a Mac.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/kdcinfo.com\/blog\/2025\/01\/09\/a-2025-flutter-ci-cd-flow-using-jenkins-docker-dind-and-fastlane-hosted-on-a-mac\/","og_locale":"en_US","og_type":"article","og_title":"A 2025 Flutter CI\/CD Flow using Jenkins, Docker (DinD), and fastlane Hosted on a Mac - App Development: Odds and Ends","og_description":"A 2025 Flutter CI\/CD Flow using Docker (DinD), Jenkins, and fastlane Hosted on a Mac.","og_url":"https:\/\/kdcinfo.com\/blog\/2025\/01\/09\/a-2025-flutter-ci-cd-flow-using-jenkins-docker-dind-and-fastlane-hosted-on-a-mac\/","og_site_name":"App Development: Odds and Ends","article_published_time":"2025-01-09T08:06:12+00:00","article_modified_time":"2025-01-09T09:06:59+00:00","og_image":[{"width":431,"height":245,"url":"https:\/\/kdcinfo.com\/blog\/wp-content\/uploads\/2025\/01\/flutter-ci-cd-docker-jenkins-flow-cropped.png","type":"image\/png"}],"author":"Keith D Commiskey","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Keith D Commiskey","Est. reading time":"3 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/kdcinfo.com\/blog\/2025\/01\/09\/a-2025-flutter-ci-cd-flow-using-jenkins-docker-dind-and-fastlane-hosted-on-a-mac\/#article","isPartOf":{"@id":"https:\/\/kdcinfo.com\/blog\/2025\/01\/09\/a-2025-flutter-ci-cd-flow-using-jenkins-docker-dind-and-fastlane-hosted-on-a-mac\/"},"author":{"name":"Keith D Commiskey","@id":"https:\/\/kdcinfo.com\/blog\/#\/schema\/person\/87980b154db7bd0cd7c569ca09328bac"},"headline":"A 2025 Flutter CI\/CD Flow using Jenkins, Docker (DinD), and fastlane Hosted on a Mac","datePublished":"2025-01-09T08:06:12+00:00","dateModified":"2025-01-09T09:06:59+00:00","mainEntityOfPage":{"@id":"https:\/\/kdcinfo.com\/blog\/2025\/01\/09\/a-2025-flutter-ci-cd-flow-using-jenkins-docker-dind-and-fastlane-hosted-on-a-mac\/"},"wordCount":477,"commentCount":0,"publisher":{"@id":"https:\/\/kdcinfo.com\/blog\/#\/schema\/person\/87980b154db7bd0cd7c569ca09328bac"},"image":{"@id":"https:\/\/kdcinfo.com\/blog\/2025\/01\/09\/a-2025-flutter-ci-cd-flow-using-jenkins-docker-dind-and-fastlane-hosted-on-a-mac\/#primaryimage"},"thumbnailUrl":"https:\/\/kdcinfo.com\/blog\/wp-content\/uploads\/2025\/01\/flutter-ci-cd-docker-jenkins-flow-cropped.png","keywords":["CI\/CD","Docker","fastlane","flutter","jenkins"],"articleSection":["CI\/CD","flutter"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/kdcinfo.com\/blog\/2025\/01\/09\/a-2025-flutter-ci-cd-flow-using-jenkins-docker-dind-and-fastlane-hosted-on-a-mac\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/kdcinfo.com\/blog\/2025\/01\/09\/a-2025-flutter-ci-cd-flow-using-jenkins-docker-dind-and-fastlane-hosted-on-a-mac\/","url":"https:\/\/kdcinfo.com\/blog\/2025\/01\/09\/a-2025-flutter-ci-cd-flow-using-jenkins-docker-dind-and-fastlane-hosted-on-a-mac\/","name":"A 2025 Flutter CI\/CD Flow using Jenkins, Docker (DinD), and fastlane Hosted on a Mac - App Development: Odds and Ends","isPartOf":{"@id":"https:\/\/kdcinfo.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/kdcinfo.com\/blog\/2025\/01\/09\/a-2025-flutter-ci-cd-flow-using-jenkins-docker-dind-and-fastlane-hosted-on-a-mac\/#primaryimage"},"image":{"@id":"https:\/\/kdcinfo.com\/blog\/2025\/01\/09\/a-2025-flutter-ci-cd-flow-using-jenkins-docker-dind-and-fastlane-hosted-on-a-mac\/#primaryimage"},"thumbnailUrl":"https:\/\/kdcinfo.com\/blog\/wp-content\/uploads\/2025\/01\/flutter-ci-cd-docker-jenkins-flow-cropped.png","datePublished":"2025-01-09T08:06:12+00:00","dateModified":"2025-01-09T09:06:59+00:00","description":"A 2025 Flutter CI\/CD Flow using Docker (DinD), Jenkins, and fastlane Hosted on a Mac.","breadcrumb":{"@id":"https:\/\/kdcinfo.com\/blog\/2025\/01\/09\/a-2025-flutter-ci-cd-flow-using-jenkins-docker-dind-and-fastlane-hosted-on-a-mac\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/kdcinfo.com\/blog\/2025\/01\/09\/a-2025-flutter-ci-cd-flow-using-jenkins-docker-dind-and-fastlane-hosted-on-a-mac\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/kdcinfo.com\/blog\/2025\/01\/09\/a-2025-flutter-ci-cd-flow-using-jenkins-docker-dind-and-fastlane-hosted-on-a-mac\/#primaryimage","url":"https:\/\/kdcinfo.com\/blog\/wp-content\/uploads\/2025\/01\/flutter-ci-cd-docker-jenkins-flow-cropped.png","contentUrl":"https:\/\/kdcinfo.com\/blog\/wp-content\/uploads\/2025\/01\/flutter-ci-cd-docker-jenkins-flow-cropped.png","width":431,"height":245,"caption":"Banner - 2025 Flutter Mac-based CI\/CD w\/ Jenkins + Docker + fastlane"},{"@type":"BreadcrumbList","@id":"https:\/\/kdcinfo.com\/blog\/2025\/01\/09\/a-2025-flutter-ci-cd-flow-using-jenkins-docker-dind-and-fastlane-hosted-on-a-mac\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/kdcinfo.com\/blog\/"},{"@type":"ListItem","position":2,"name":"A 2025 Flutter CI\/CD Flow using Jenkins, Docker (DinD), and fastlane Hosted on a Mac"}]},{"@type":"WebSite","@id":"https:\/\/kdcinfo.com\/blog\/#website","url":"https:\/\/kdcinfo.com\/blog\/","name":"App Development: Odds and Ends","description":"Providing insights into a career of apps and utilities that I&#039;ve conceptualized, designed, and developed; complemented with developmental journeys, findings, observations, and challenges encountered along the way.","publisher":{"@id":"https:\/\/kdcinfo.com\/blog\/#\/schema\/person\/87980b154db7bd0cd7c569ca09328bac"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/kdcinfo.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":["Person","Organization"],"@id":"https:\/\/kdcinfo.com\/blog\/#\/schema\/person\/87980b154db7bd0cd7c569ca09328bac","name":"Keith D Commiskey","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/kdcinfo.com\/blog\/wp-content\/uploads\/2023\/08\/keith-sac-01.jpg","url":"https:\/\/kdcinfo.com\/blog\/wp-content\/uploads\/2023\/08\/keith-sac-01.jpg","contentUrl":"https:\/\/kdcinfo.com\/blog\/wp-content\/uploads\/2023\/08\/keith-sac-01.jpg","width":113,"height":117,"caption":"Keith D Commiskey"},"logo":{"@id":"https:\/\/kdcinfo.com\/blog\/wp-content\/uploads\/2023\/08\/keith-sac-01.jpg"},"description":"Web App Creator; Former Flutter Developer; Former Front End Developer; Former Technical Graphics.","sameAs":["https:\/\/kdcinfo.com\/blog","https:\/\/www.linkedin.com\/in\/commiskey"],"url":"https:\/\/kdcinfo.com\/blog\/author\/kdc4wp\/"}]}},"_links":{"self":[{"href":"https:\/\/kdcinfo.com\/blog\/wp-json\/wp\/v2\/posts\/445","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/kdcinfo.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/kdcinfo.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/kdcinfo.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/kdcinfo.com\/blog\/wp-json\/wp\/v2\/comments?post=445"}],"version-history":[{"count":8,"href":"https:\/\/kdcinfo.com\/blog\/wp-json\/wp\/v2\/posts\/445\/revisions"}],"predecessor-version":[{"id":540,"href":"https:\/\/kdcinfo.com\/blog\/wp-json\/wp\/v2\/posts\/445\/revisions\/540"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/kdcinfo.com\/blog\/wp-json\/wp\/v2\/media\/534"}],"wp:attachment":[{"href":"https:\/\/kdcinfo.com\/blog\/wp-json\/wp\/v2\/media?parent=445"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/kdcinfo.com\/blog\/wp-json\/wp\/v2\/categories?post=445"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/kdcinfo.com\/blog\/wp-json\/wp\/v2\/tags?post=445"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}