<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Ci on Website of SauceWu</title><link>https://saucewu.github.io/tags/ci/</link><description>Recent content in Ci on Website of SauceWu</description><generator>Hugo -- gohugo.io</generator><language>zh</language><lastBuildDate>Fri, 24 Apr 2026 12:00:00 +0900</lastBuildDate><atom:link href="https://saucewu.github.io/tags/ci/index.xml" rel="self" type="application/rss+xml"/><item><title>Mac Mini 作为 GitLab Runner：iOS 和 Flutter 打包节点配置指南</title><link>https://saucewu.github.io/posts/mac-mini-%E4%BD%9C%E4%B8%BA-gitlab-runnerios-%E5%92%8C-flutter-%E6%89%93%E5%8C%85%E8%8A%82%E7%82%B9%E9%85%8D%E7%BD%AE%E6%8C%87%E5%8D%97/</link><pubDate>Fri, 24 Apr 2026 12:00:00 +0900</pubDate><guid>https://saucewu.github.io/posts/mac-mini-%E4%BD%9C%E4%B8%BA-gitlab-runnerios-%E5%92%8C-flutter-%E6%89%93%E5%8C%85%E8%8A%82%E7%82%B9%E9%85%8D%E7%BD%AE%E6%8C%87%E5%8D%97/</guid><description>&lt;h1 id="mac-mini-作为-gitlab-runnerios-和-flutter-打包节点配置指南"&gt;Mac Mini 作为 GitLab Runner：iOS 和 Flutter 打包节点配置指南&lt;/h1&gt;
&lt;p&gt;iOS 和 Flutter 项目的 CI 有一个绕不开的限制：&lt;strong&gt;必须在 macOS 上构建&lt;/strong&gt;。云端 macOS 实例贵，自建 Mac Mini 作为 GitLab Runner 是最常见的低成本方案。&lt;/p&gt;
&lt;p&gt;这篇文章记录从零把一台 Mac Mini 配置成 GitLab CI 打包节点的完整过程，覆盖环境安装、Runner 注册、&lt;code&gt;.gitlab-ci.yml&lt;/code&gt; 配置、常见坑和维护建议。&lt;/p&gt;</description></item><item><title>flutter-patrol-pilot：让 AI Agent 自主跑通 Flutter iOS 测试</title><link>https://saucewu.github.io/posts/flutter-patrol-pilot%E8%AE%A9-ai-agent-%E8%87%AA%E4%B8%BB%E8%B7%91%E9%80%9A-flutter-ios-%E6%B5%8B%E8%AF%95/</link><pubDate>Thu, 23 Apr 2026 16:00:00 +0900</pubDate><guid>https://saucewu.github.io/posts/flutter-patrol-pilot%E8%AE%A9-ai-agent-%E8%87%AA%E4%B8%BB%E8%B7%91%E9%80%9A-flutter-ios-%E6%B5%8B%E8%AF%95/</guid><description>&lt;h1 id="flutter-patrol-pilot让-ai-agent-自主跑通-flutter-ios-测试"&gt;flutter-patrol-pilot：让 AI Agent 自主跑通 Flutter iOS 测试&lt;/h1&gt;
&lt;p&gt;Flutter iOS 的集成测试一直是个麻烦事：Xcode 环境脆、xcresult 日志难读、Patrol 框架有自己的坑、失败原因五花八门。让人类来修还好，让 AI Agent 来修——很容易陷入死循环。&lt;/p&gt;
&lt;p&gt;&lt;a href="https://github.com/sauce-wu/flutter-patrol-pilot"&gt;flutter-patrol-pilot&lt;/a&gt;（简称 fpp）是一个专门解决这个问题的 Claude Code Agent Skill：它接管整个 Flutter iOS 测试生命周期，从编译到运行，从失败诊断到代码修复，带着硬性规则和停止条件，不进死循环。&lt;/p&gt;</description></item><item><title>Flutter FFI 插件的 GitHub CI 实践：以 ceres-wallet-core 为例</title><link>https://saucewu.github.io/posts/flutter-ffi-%E6%8F%92%E4%BB%B6%E7%9A%84-github-ci-%E5%AE%9E%E8%B7%B5%E4%BB%A5-ceres-wallet-core-%E4%B8%BA%E4%BE%8B/</link><pubDate>Fri, 17 Apr 2026 18:00:00 +0000</pubDate><guid>https://saucewu.github.io/posts/flutter-ffi-%E6%8F%92%E4%BB%B6%E7%9A%84-github-ci-%E5%AE%9E%E8%B7%B5%E4%BB%A5-ceres-wallet-core-%E4%B8%BA%E4%BE%8B/</guid><description>&lt;h1 id="flutter-ffi-插件的-github-ci-实践以-ceres-wallet-core-为例"&gt;Flutter FFI 插件的 GitHub CI 实践：以 ceres-wallet-core 为例&lt;/h1&gt;
&lt;h2 id="背景"&gt;背景&lt;/h2&gt;
&lt;p&gt;普通 Flutter 插件的 CI 很简单：跑一下 &lt;code&gt;flutter test&lt;/code&gt; 就够了。但 Flutter FFI 插件夹着 C++/Rust native 库，问题就复杂得多——&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;native 库需要在 macOS 上编译 iOS，在 Linux 上编译 Android，不能混&lt;/li&gt;
&lt;li&gt;编译一次要十几分钟，开发者 &lt;code&gt;pub get&lt;/code&gt; 的时候不能让他们自己编&lt;/li&gt;
&lt;li&gt;Trust Wallet Core 有几十万行 C++ 代码，子模块更新需要自动化&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;ceres-wallet-core 的解法是两条 workflow：&lt;/p&gt;</description></item></channel></rss>