Tag: travis ci

YNAP上的SwiftLint和Danger自动执行iOS代码评论

在YOOX NET-A-PORTER GROUP(YNAP),我们使用Swift构建iOS应用。 Swift是一种现代,快速且类型安全的编程语言。 在iOS应用开发中,获取有关Swift代码的即时反馈至关重要。 作为一种类型安全的语言,Swift上的大多数安全检查均由Swift编译器在编译阶段完成。 但是,有许多干净的编码实践,例如语法检查,样式等,还需要执行。 在本文中,我们将探讨如何在YNAP的iOS应用中使用Danger,Swiftlint和Travis CI自动执行大多数Swift代码检查过程。 代码审查的过程可能很困难,而对于Swift作为一种新的编程语言而言,这尤其困难。 SwiftLint是事实上的工具,它通过执行适用于特定团队或项目的规则来整理Swift源代码。 我们使用了之前博客文章中提到的一些最佳实践,在TravisCI(即我们的持续集成(CI)服务器)上实现了SwiftLint。 我们的SwiftLint配置具有一些严格的规则,我们曾经在Xcode构建阶段中运行SwiftLint,以便开发人员可以在开发时看到Xcode本身中的警告或错误。 但是,与其等到CI构建到达Xcode构建阶段脚本,还不如等到构建开始时就对代码进行反馈。 为此,我们需要一种在CI构建运行时提供早期反馈的机制。 我们还希望通过pull请求可以看到SwiftLint提供的反馈,以便我们立即采取行动。 这就是危险出现的地方。 Danger是一种在CI上运行的工具,用于处理所有琐碎的代码检查任务,例如错字,空格,换行符等。它还使我们能够超越基础知识,并添加更多项目特定检查或执行测试或文档作为其中的一部分。拉取请求。 在此处的官方网站上有很多关于如何开始使用Danger的出色文档。 规则需要在配置文件(称为Dangerfile)中列出。 规则可以用Ruby,JavaScript或Swift编写。 但是,Swift实现相对较新,我们希望使用脚本语言在CI上的预配置环境中运行Danger。 幸运的是,Travis CI macOS映像随附了预装的Ruby和RVM,从而使安装Danger和大多数Danger插件(例如Rubygems)更加容易。 因此,我们决定用Ruby编写Dangerfile规则,以便在实际开始构建之前就可以在Travis CI上明确运行它们。 有了Danger,我们可以按此处所述配置各种规则,但是我们遵循了Swift和iOS特定的规则。 检查较大的请求,尤其是如果有超过500行代码 检查是否已将单元测试作为“拉取请求”的一部分添加,如果应用程序代码已更改 检查“拉取请求”上是否有标签 检查Podfile或Podfile.lock已更新? 如果是这样,则忽略该较大的请求 这些是Danger轻松实现的非常基本的检查-但其真正功能来自于Danger的SwiftLint插件。 此插件将所有SwiftLint规则应用于“拉取请求”中的代码审查过程,从而使Danger可以在发现SwiftLint警告或错误的任何地方自动对“拉取请求”进行注释。 现在,我们已经介绍了Danger和SwiftLint插件的基础知识,下面我们来讨论如何在Travis CI服务器上进行设置。 我们需要以下各项来在Travis CI上设置Danger。 GitHub上的专用Bot帐户/个人访问令牌 我们在GitHub上创建了一个专用的机器人帐户,该帐户可以对“拉取请求”进行评论。 为了做到这一点,我们还需要创建一个具有写访问权限的Github个人访问令牌,使Bot能够对拉取请求进行注释。 可以在iOS项目的Travis CI设置中将此个人访问令牌配置为环境变量DANGER_GITHUB_API_TOKEN 。 在Travis CI上安装Danger和SwiftLint Danger插件 有了Github访问令牌后,接下来我们更新了Travis配置.travis.yml以在before_script阶段安装Danger和SwiftLint Danger插件,如下所示。 由于Travis CI的macOS映像已使用Ruby和RVM进行了预配置,因此我们只需要在脚本中安装Rubygems即可安装Danger和Danger的SwiftLint插件。 注意:如此处文档所述,危险可在任何CI服务器上运行 在Travis CI上运行危险 […]

为iOS项目设置Travis CI

在本文中,我将指导您为iOS项目设置Travis CI。 什么是 持续集成(CI) ? 持续集成是一种经常合并小的代码更改的实践,而不是在开发周期结束时合并大型的更改。 目的是通过以较小的增量开发和测试来构建更健康的软件。 开始一个新的XCode项目 在GitHub上创建存储库 准备好存储库后,将代码推送到存储库。 测试xcodebuild命令 xcodebuild 干净的 构建测试– 项目 Travis_CIDemo / Travis_CIDemo.xcodeproj – 方案 Travis_CIDemo – sdk iphonesimulator – 目标 “平台= iOS Simulator,OS = 12.1,名称= iPhone 6” ONLY_ACTIVE_ARCH = NO CODE_SIGNING_REQUIRED = NO 我们将使用此命令为travis-ci创建yml文件。 xcodebuild 要了解有关xcodebuild的更多信息,可以使用终端帮助进行详细的文档记录。 在终端上,只需输入: 男子 xcodebuild 特拉维斯CI 作为一个持续集成平台,Travis CI通过自动构建和测试代码更改来支持您的开发过程,并提供有关更改成功的即时反馈。 Travis CI还可以通过管理部署和通知来自动化开发过程的其他部分。 先决条件 1.一个GitHub帐户。 2.托管在GitHub上的项目的所有者权限。 Travis CI入门 […]

用“eval pod安装”的Travis-CI错误

我的.travis.yml文件: language: objective-c script: xctool -workspace ProjectName.xcworkspace -scheme ProjectName build -sdk iphonesimulator Travis-CI正在build设这个项目时说: $ bundle –version Bundler version 1.7.4 $ xcodebuild -version -sdk $ pod –version 0.34.4 Installing Pods with 'pod install' $ pushd . ~/build/GabrielMassana/ProjectName-iOS $ pod install 安装荚时,错误是: The command "eval pod install" failed. Retrying, 2 of 3. The command "eval pod install" […]