Swiftlane
Swiftlane 包含一组构建工具,用于加速 iOS 和 macOS 的开发和部署。
无需额外的配置文件,您的 Swift 脚本文件就是真相的唯一来源。借助自动完成和类型安全,您可以确保在 Swiftlane 中做正确的事情。
- Swiftlane 及其依赖项全部用纯 Swift 编写,便于阅读和贡献。
- 使用最新的 Swift 特性(如 async/await)以实现声明式语法。
- 类型安全。所有必需和可选参数都清晰明了。
- 无配置文件。您的 Swift 脚本就是您的定义。
- 对现有工具(如 xcodebuild、instruments 和 agvtool)的简单包装。
- 重用 Swift 社区中优秀的 Swift 脚本依赖项。
如何使用
Swiftlane 旨在作为 Swift 包使用。请参考 Examples
文件夹了解集成方式。
- CLI:创建 macOS 命令行工具项目
- 脚本:创建可执行的 Swift 包
import Swiftlane
import AppStoreConnect
@main
struct Script {
static func main() async throws {
try await deployMyApp()
}
private static func deployMyApp() async throws {
var workflow = Workflow()
workflow.directory = Settings.fs
.homeDirectory()
.appendingPathComponent("Projects/swiftlane/Examples/MyApp")
workflow.xcodeApp = URL(string: "/Applications/Xcode.app")
let build = Build()
build.project("MyApp")
build.allowProvisioningUpdates()
build.destination(platform: .iOSSimulator, name: "iPhone 13")
build.workflow = workflow
try await build.run()
guard
let issuerId = Settings.env["ASC_ISSUER_ID"],
let privateKeyId = Settings.env["ASC_PRIVATE_KEY_ID"],
let privateKey = Settings.env["ASC_PRIVATE_KEY"]
else { return }
let asc = try ASC(
credential: AppStoreConnect.Credential(
issuerId: issuerId,
privateKeyId: privateKeyId,
privateKey: privateKey
)
)
try await asc.fetchCertificates()
try await asc.fetchProvisioningProfiles()
let keychain = try await Keychain.create(
path: Keychain.Path(
rawValue: Settings.fs
.downloadsDirectory
.appendingPathComponent("custom.keychain")),
password: "keychain_password"
)
try await keychain.unlock()
try await keychain.import(
certificateFile: Settings.fs
.downloadsDirectory
.appendingPathComponent("abcpass.p12"),
certificatePassword: "123"
)
}
}
功能
iOS
- Build:构建项目
- Test:测试项目
- Archive:归档项目
- ExportArchive:导出归档
- AppStore Connect:使用 https://github.com/onmyway133/AppStoreConnect
- GetBuildSettings:获取项目构建设置
- GenerateIcon:生成应用图标集
- Screenshot:截图
- Frame:为截图添加框架
- UploadASC:将 IPA 上传到 AppStore Connect
ASC
- 获取证书
- 获取配置文件
- 将证书保存到文件系统
- 将配置文件保存到文件系统
- 安装配置文件
- 获取 TestFlight 版本
- 获取 TestFlight 构建版本
- 获取最新的 TestFlight 构建版本号
项目
- 设置版本
- 设置构建版本号
- 递增构建版本号
钥匙串
- 创建自定义钥匙串
- 解锁钥匙串
- 删除钥匙串
- 列出可搜索的钥匙串路径
- 将钥匙串添加到可搜索路径
- 将证书导入钥匙串
模拟器
- 启动模拟器
- 更新和设置模拟器样式
Xcode
- 打印当前 Xcode 路径
macOS
- Notarize:公证项目
- MakeDMG:打包为 DMG
- Sparkle:更新 Sparkle Appcast 文件
标准
- Slack:向 Slack 频道发送消息
- RunScript:运行任意脚本
- PrintWorkingDirectory:打印当前工作目录
- S3:上传到 S3
- Setapp:上传到 Setapp
- Download:下载文件
- MoveFile:移动文件
- CopyFile:复制文件
- AppCenter:使用 appcenter-cli
设置
通过 Settings
进行配置
- Console:记录到控制台
- FileSystem:与文件系统交互
- Environment:读取环境变量
- CommandLine:运行命令行工具
致谢
- Notarize:重构自 https://github.com/Mortennn/Notarize
许可证
Swiftlane 根据 MIT 许可证发布。有关详细信息,请参阅 LICENSE 文件。