CocoaPods发布工作流程Skill cocoapods-publishing-workflow

这个技能提供了发布CocoaPods库到官方CocoaPods Trunk的完整指南,涵盖注册、验证、版本管理和最佳实践,适用于iOS和macOS开发者进行库分发,关键词包括CocoaPods、发布、工作流程、移动开发、iOS开发。

移动开发 0 次安装 0 次浏览 更新于 3/25/2026

名称: cocoapods-publishing-workflow 用户可调用: false 描述: 用于将CocoaPods库发布到CocoaPods Trunk。涵盖pod trunk注册、podspec验证、版本管理和发布最佳实践,以实现成功的库分发。 允许工具:

  • 读取
  • 写入
  • 编辑
  • Bash
  • Grep
  • Glob

CocoaPods - 发布工作流程

发布你的CocoaPods库到官方CocoaPods Trunk的完整指南。

发布概述

流程步骤

  1. 注册CocoaPods Trunk(一次性)
  2. 准备你的podspec
  3. 本地验证 (pod lib lint)
  4. 发布验证 (pod spec lint)
  5. 在git中标记版本
  6. 推送到Trunk (pod trunk push)

Trunk注册

注册邮箱(一次性)

# 注册你的邮箱
pod trunk register email@example.com '你的名字'

# 验证邮箱(检查收件箱中的验证链接)
# 点击邮件中的链接激活账户

检查注册

# 验证注册
pod trunk me

# 示例输出:
# - 名字:     你的名字
# - 邮箱:     email@example.com
# - 自从:     2024年1月1日
# - Pods:     无

Podspec准备

版本管理

Pod::Spec.new do |spec|
  # 语义版本控制: MAJOR.MINOR.PATCH
  spec.version = '1.0.0'

  # 必须匹配git标签
  spec.source = {
    :git => 'https://github.com/username/MyLibrary.git',
    :tag => spec.version.to_s
  }
end

必填元数据

Pod::Spec.new do |spec|
  # 身份(必填)
  spec.name         = 'MyLibrary'
  spec.version      = '1.0.0'

  # 描述(必填)
  spec.summary      = '简短的一行描述'
  spec.description  = '更长的描述,详细说明库的功能'

  # 链接(必填)
  spec.homepage     = 'https://github.com/username/MyLibrary'
  spec.source       = { :git => 'https://github.com/username/MyLibrary.git', :tag => spec.version.to_s }

  # 许可证(必填)
  spec.license      = { :type => 'MIT', :file => 'LICENSE' }

  # 作者(必填)
  spec.authors      = { '你的名字' => 'email@example.com' }

  # 平台(必填)
  spec.ios.deployment_target = '13.0'
end

本地验证

快速验证

# 快速验证(跳过构建)
pod lib lint --quick

# 检查常见问题,无需完整构建

完整验证

# 带构建的完整验证
pod lib lint

# 指定Swift版本
pod lib lint --swift-version=5.9

# 详细输出
pod lib lint --verbose

处理警告

# 允许警告(不推荐用于新pod)
pod lib lint --allow-warnings

# 更好:修复警告
pod lib lint
# 逐个解决每个警告

发布验证

Spec Lint

# 验证podspec以准备发布
pod spec lint

# 针对远程仓库验证
# 模拟真实世界安装

发布前检查清单

  • [ ] 所有测试通过
  • [ ] 没有lint警告
  • [ ] 包含隐私清单(iOS 17+)
  • [ ] README完整
  • [ ] LICENSE文件存在
  • [ ] CHANGELOG已更新
  • [ ] 版本号正确
  • [ ] Git仓库干净

Git标签

创建标签

# 暂存所有更改
git add .

# 提交更改
git commit -m "发布版本 1.0.0"

# 创建匹配podspec版本的标签
git tag 1.0.0

# 推送到远程并包含标签
git push origin main --tags

标签格式

# 语义版本控制
git tag 1.0.0      # MAJOR.MINOR.PATCH
git tag 1.0.0-beta.1  # 预发布
git tag 1.0.0-rc.1    # 发布候选

# 必须匹配podspec中的spec.version

发布到Trunk

推送Pod

# 推送到CocoaPods Trunk
pod trunk push MyLibrary.podspec

# 指定Swift版本
pod trunk push MyLibrary.podspec --swift-version=5.9

# 允许警告(不推荐)
pod trunk push MyLibrary.podspec --allow-warnings

成功发布输出

验证podspec
 -> MyLibrary (1.0.0)

更新spec仓库 `trunk`
 -> MyLibrary (1.0.0)

--------------------------------------------------------------------------------
 🎉  恭喜

 🚀  MyLibrary (1.0.0) 成功发布
 📅  2024年1月1日
 🌎  https://cocoapods.org/pods/MyLibrary
 👍  告诉你的朋友们!
--------------------------------------------------------------------------------

版本更新

补丁发布(错误修复)

# 在podspec中
spec.version = '1.0.1'  # 原为1.0.0
# Git工作流程
git add .
git commit -m "修复: 解决后台模式崩溃"
git tag 1.0.1
git push origin main --tags
pod trunk push MyLibrary.podspec

次要发布(新功能)

# 在podspec中
spec.version = '1.1.0'  # 原为1.0.1
# Git工作流程
git add .
git commit -m "添加: 支持自定义主题"
git tag 1.1.0
git push origin main --tags
pod trunk push MyLibrary.podspec

主要发布(重大变更)

# 在podspec中
spec.version = '2.0.0'  # 原为1.1.0
# Git工作流程
git add .
git commit -m "重大变更: 为现代Swift重构API"
git tag 2.0.0
git push origin main --tags
pod trunk push MyLibrary.podspec

管理多个Pod

列出你的Pod

# 查看所有你发布的pod
pod trunk me

# 显示:
# - Pods:
#   - MyLibrary
#   - MyOtherLibrary

添加贡献者

# 添加团队成员到pod
pod trunk add-owner MyLibrary email@example.com

# 移除贡献者
pod trunk remove-owner MyLibrary email@example.com

弃用

弃用旧版本

# 弃用特定版本
pod trunk deprecate MyLibrary --version=1.0.0

# 弃用整个pod
pod trunk deprecate MyLibrary

弃用并指定替代

# 在podspec中
spec.deprecated = true
spec.deprecated_in_favor_of = 'NewAwesomeLibrary'

常见问题

问题: 标签不匹配

错误 | [MyLibrary] 仓库没有版本1.0.0的标签

解决方案:

# 创建并推送标签
git tag 1.0.0
git push origin --tags

问题: 验证失败

错误 | [MyLibrary] xcodebuild: 返回非成功退出代码

解决方案:

# 运行详细验证
pod lib lint --verbose

# 修复输出中的错误
# 重新验证直到通过

问题: 缺少许可证

错误 | [MyLibrary] 缺少必填属性 `license`

解决方案:

# 添加到podspec
spec.license = { :type => 'MIT', :file => 'LICENSE' }
# 在仓库根目录创建LICENSE文件

最佳实践

发布前测试

# 1. 在示例应用中测试
cd Example
pod install
# 运行应用,验证功能

# 2. 在真实项目中测试
# 创建测试项目,从本地路径添加pod
pod 'MyLibrary', :path => '../MyLibrary'

# 3. 验证
pod lib lint
pod spec lint

版本编号

# 严格遵循语义版本控制
spec.version = '1.0.0'  # 初始发布
spec.version = '1.0.1'  # 错误修复
spec.version = '1.1.0'  # 新功能
spec.version = '2.0.0'  # 重大变更

CHANGELOG

# 更新日志

## [1.1.0] - 2024-01-15
### 新增
- 自定义主题支持
- 深色模式兼容性

### 修复
- 后台处理中的内存泄漏

## [1.0.0] - 2024-01-01
- 初始发布

README

# MyLibrary

库的简要描述。

## 安装

```ruby
pod 'MyLibrary', '~> 1.0'

用法

import MyLibrary

let library = MyLibrary()
library.doSomething()

要求

  • iOS 13.0+
  • Swift 5.7+

许可证

MyLibrary根据MIT许可证提供。


## 反模式

### 不要

❌ 未经测试就发布

```bash
pod trunk push --skip-tests  # 有风险

❌ 在初始发布时使用 --allow-warnings

pod trunk push --allow-warnings  # 应修复警告

❌ 忘记git标签

# 缺少git标签 - 发布将失败
pod trunk push

❌ 跳过版本号更新

# 更改后版本号仍为1.0.0 - 令人困惑
spec.version = '1.0.0'

要做

✅ 发布前彻底测试

pod lib lint
pod spec lint
# 在真实项目中测试

✅ 修复所有警告

pod lib lint
# 解决警告

✅ 总是git标签

git tag 1.0.0
git push --tags

✅ 每次发布都更新版本号

spec.version = '1.0.1'  # 已递增

完整发布示例

# 1. 准备podspec
vim MyLibrary.podspec
# 更新版本到1.0.0

# 2. 更新CHANGELOG
vim CHANGELOG.md
# 记录更改

# 3. 提交并标签
git add .
git commit -m "发布1.0.0: 初始公开发布"
git tag 1.0.0
git push origin main --tags

# 4. 本地验证
pod lib lint

# 5. 发布验证
pod spec lint

# 6. 发布
pod trunk push MyLibrary.podspec

# 7. 验证
pod search MyLibrary
# 应显示你的新pod

相关技能

  • cocoapods-podspec-fundamentals
  • cocoapods-subspecs-organization
  • cocoapods-test-specs
  • cocoapods-privacy-manifests