热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

史上最全Jenkins+SVN+iOS+cocoapods环境搭建及其错误汇总

前言持续集成是敏捷开发中重要的一部分,为保证新功能的开发,又保证旧功能的维护,从一个冲刺到下个冲刺。持续集成工具是我们保证开发和维护并行的护航者,现在流行的集成工具有很多,例如:1
前言

持续集成是敏捷开发中重要的一部分,为保证新功能的开发,又保证旧功能的维护,从一个冲刺到下个冲刺。持续集成工具是我们保证开发和维护并行的护航者,现在流行的集成工具有很多,例如:

1.Jenkins

2.Buildbot

3.Travis CI

经过对比,Jenkins工具搭建相对简单(仅指安装),打包速度也比较快,得到很多朋友的青睐,所以本文是以描述Jenkins搭建环境为主旨。(踩了好多坑啊哈哈哈)

Jenkins 的 好处

在写本文之前,我觉得有必要提一下Jenkins 对一个团队的好处。

最简单粗暴的好处就是降低 开发团队与测试团队的耦合,Jenkins也支持定时自动打包,上传等,省去了“修改配置项–编译—连接设备–运行打包–装ipa–然后交给等待的测试人员”这些简单繁琐的步骤。也避免测试人员测错包之类,把开发已经修改的bug打回来这种问题。

注意:打包ipa包需要有xcode环境,所以要想在公司的服务器配置iOS打包环境,要求服务器必须是Mac OS系统,Linux和Windows只能靠边了。我是在一台Mac mini 下配的环境。

步骤大致可以分为以下几步:

1.搭建Java环境

2.搭建Jenkins环境

3.配置证书和描述文件、钥匙串

4.配置项目

5.配置xcode 环境

1.配置java环境

浏览器打开 http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html   选择Mac OS 的安装包下载,JDK安装都很简单,安装过程这里就省略了。

《史上最全Jenkins+SVN+iOS+cocoapods环境搭建及其错误汇总》 JDK

2.搭建Jenkins环境

浏览器打开 Jenkins官网 点击下载Jenkins,选择Mac OS安装包,我现在装的是2.46.1

《史上最全Jenkins+SVN+iOS+cocoapods环境搭建及其错误汇总》 选择jenkins安装包

接下来就是傻瓜式的下一步安装,这里就不一一贴图了。

安装完成后浏览器一般会自动打开 http://localhost:8080,如果不自动打开可以手动打开这个链接,然后会提下下列的错误信息

《史上最全Jenkins+SVN+iOS+cocoapods环境搭建及其错误汇总》 unlock Jenkins

顾名思义,我们要去log路径下取到password,输入才能进入Jenkins。右键 Finder->前往文件夹->输入/Users/Shared/Jenkins/Home 回车后应该看到下面

《史上最全Jenkins+SVN+iOS+cocoapods环境搭建及其错误汇总》 jenkins psd

看到secrets文件是有个减号的,右键secrets->显示简介->共享与权限->将everyone权限改成 读与写。

《史上最全Jenkins+SVN+iOS+cocoapods环境搭建及其错误汇总》 secret权限

双击点开secrets之后应该如下所示:

《史上最全Jenkins+SVN+iOS+cocoapods环境搭建及其错误汇总》 initialAdminPassword

同理,因为我们没有initialAdminPassword的读写权限是无法打开的,右键 initialAdminPassword->显示简介->everyone权限改成读与写

《史上最全Jenkins+SVN+iOS+cocoapods环境搭建及其错误汇总》 initialAdminPassword权限

然后用文本来打开initialAdminPassword,把里面那串数字复制,把这串数字填到Jenkins启动的那个页面,如果你不小心关了上面那个页面,打开http://localhost:8080即可。

《史上最全Jenkins+SVN+iOS+cocoapods环境搭建及其错误汇总》 解锁

然后continue,这时会看到以下页面,选择红色框里的 Install suggested plugins(Jenkins建议安装的插件)

《史上最全Jenkins+SVN+iOS+cocoapods环境搭建及其错误汇总》 customize Jenkins

看到这个页面之后,等待Jenkins把插件下载完

《史上最全Jenkins+SVN+iOS+cocoapods环境搭建及其错误汇总》 下载插件

这里创建下Admin User,把这些项都填完之后点击save and finish就OK了。注意要记得用户名和密码,以后你登录要用到的,忘记密码就麻烦了。

《史上最全Jenkins+SVN+iOS+cocoapods环境搭建及其错误汇总》 创建用户名和密码

《史上最全Jenkins+SVN+iOS+cocoapods环境搭建及其错误汇总》 ready

到这步已经说明Jenkins环境已经搭建好了。点击start using jenkins

《史上最全Jenkins+SVN+iOS+cocoapods环境搭建及其错误汇总》 进入jenkins页面

这时需要配置一下插件,系统管理->管理插件->可选插件

《史上最全Jenkins+SVN+iOS+cocoapods环境搭建及其错误汇总》 插件管理第一步

因为项目是配置svn为管理器的,git管理代码的可以参照其他同学的教程自行配置。我们先下载svn插件,在过滤输入框中输入svn,勾选 SVN Publisher plugin。点击直接安装。

《史上最全Jenkins+SVN+iOS+cocoapods环境搭建及其错误汇总》 插件管理-svn

同理,我们要下载 xcode integration 和keychains and Provisioning Profiles Management 这两个插件。

《史上最全Jenkins+SVN+iOS+cocoapods环境搭建及其错误汇总》 插件管理-xcode integration

《史上最全Jenkins+SVN+iOS+cocoapods环境搭建及其错误汇总》 插件管理- keychain and profiles

把这两个搜索出来,勾选然后直接安装。然后等待完成

《史上最全Jenkins+SVN+iOS+cocoapods环境搭建及其错误汇总》 等待插件安装完成

安装完成后我们重启下jenkins,重新加载下插件。可以滑到最底下勾选重启,或者也可以在地址栏输入http://localhost:8080/restart  

《史上最全Jenkins+SVN+iOS+cocoapods环境搭建及其错误汇总》 完成安装插件重启Jenkins

重启之后应该要输入用户名和密码,把刚刚注册的用户名密码输入进去。

还有一个重要的步骤,我们先给Jenkins用户管理员的权限,避免后续的访问问题。

系统偏好设置->用户与群组->点开锁,然后在Jenkins用户下勾选“允许用户管理这台电脑”。

到这步最好给Jenkins用户设置一个密码,便于后期检查是否Jenkins配置错误或者是检查代码错误。

《史上最全Jenkins+SVN+iOS+cocoapods环境搭建及其错误汇总》 Jenkins用户权限问题

3.配置证书和描述文件、钥匙串

点击系统管理->keychain and provision Profiles Management

《史上最全Jenkins+SVN+iOS+cocoapods环境搭建及其错误汇总》 keychain and provision

在这之前,我准备了开发证书.p12 + 描述文件,生产证书.p12 + 描述文件,分别用来上线打包和测试打包。这步并不需要我们上传证书,而是上传需要描述的文件和login.keychain。login.keychain有坑!有坑!有坑!!!!! 之前我是把login.keychian 复制到桌面然后上传的,构建的时候总是报错keychian 权限问题。然后我是按照以下方式来做的。

《史上最全Jenkins+SVN+iOS+cocoapods环境搭建及其错误汇总》 配置keychain 证书和描述文件

在此之前先普及一下,jenkins其实是自己开了一个用户,用于存储一些配置文件和信息等。我们可以在finder里面找到Jenkins用户的文件夹,点击前往上层文件夹

《史上最全Jenkins+SVN+iOS+cocoapods环境搭建及其错误汇总》 寻找上层文件夹

然后找到共享中的jenkins用户

《史上最全Jenkins+SVN+iOS+cocoapods环境搭建及其错误汇总》 jenkins目录

1.Finder->前往文件夹->/Users/“你的mac用户名”/library

2.找到keychains 这个文件夹,拷贝

3.用上面那种方法放到Jenkins->Library文件夹下

《史上最全Jenkins+SVN+iOS+cocoapods环境搭建及其错误汇总》 拷贝keychain文件

为了避免描述文件也出现类似的找不到的错误,我们也把描述文件拷贝到Jenkins用户->Library。

1.Finder->前往文件夹->/Users/“你的mac用户名”/library(或者还有一个方法,打开xcode->preferences->找到你账号下的描述文件)

2.找到keychains 这个文件夹,拷贝”MobileDevice”整个文件夹

3.用上面那种方法放到Jenkins->Library文件夹下。

《史上最全Jenkins+SVN+iOS+cocoapods环境搭建及其错误汇总》 拷贝mobileDevice文件

接下来就是上传keychain和描述文件了。

《史上最全Jenkins+SVN+iOS+cocoapods环境搭建及其错误汇总》 上传keychain和描述文件

这里我们选刚刚拷贝过去的Jenkins文件目录下的keychain和描述文件。点击选取文件->搜索login.keychain,这里要注意下是否为Jenkins目录下的keychain。

《史上最全Jenkins+SVN+iOS+cocoapods环境搭建及其错误汇总》 上传keychain

上传完之后打开钥匙串,找到我需要上传的两本证书的名字,因为我想上传一个开发证书和一个生产证书,所以上传两个。把这两个证书的名字复制下来

《史上最全Jenkins+SVN+iOS+cocoapods环境搭建及其错误汇总》 证书名字

然后点击 Add Code Signing Identity,分别把这两个名字粘贴过去。完成了之后大概如下:

《史上最全Jenkins+SVN+iOS+cocoapods环境搭建及其错误汇总》 keychain

接下来就是描述文件了。这里要注意一点,在Provisioning Profiles填上/Users/Shared/Jenkins/Library/MobileDevice/Provisioning Profiles这个地址。然后按照上传keychain的步骤,把Jenkins用户目录下的描述文件上传上去就行啦

《史上最全Jenkins+SVN+iOS+cocoapods环境搭建及其错误汇总》 Provisioning Profile地址

完了之后是这样的。

《史上最全Jenkins+SVN+iOS+cocoapods环境搭建及其错误汇总》 keychain描述文件成功图

4.配置项目

keychain配置好之后,接下来就是新建一个工程了。输入你的项目名称(项目名称会在Jenkins下生成一个文件夹)。构建一个自由风格的软件项目,点击ok

《史上最全Jenkins+SVN+iOS+cocoapods环境搭建及其错误汇总》 新建项目

1.General

新建完之后点选丢弃旧的构建,配置一下保持构建的天数和最大个数

《史上最全Jenkins+SVN+iOS+cocoapods环境搭建及其错误汇总》 配置旧的构建

2.源码管理

然后配置源码管理,这是Jenkins拉取代码的路径(尽量精确到项目位置),如果Credentials没有,则点击右边的add,填上自己的svn账号和密码。假如这栏没有报红,基本上地址什么的都是正确的了。

《史上最全Jenkins+SVN+iOS+cocoapods环境搭建及其错误汇总》 配置svn

3.构建环境

接下来配置构建环境,这里我们勾选Keychains and Code Signing Identities,选择login.keychain,然后选择对应的证书名字。同样勾选Mobile Provisioning Profiles,选择对应的描述文件。

《史上最全Jenkins+SVN+iOS+cocoapods环境搭建及其错误汇总》 构建环境

4.构建

因为我项目用到cocoapods,所以要先在构建这里选执行脚本,在里面输入

#bin/bsah – l

export LANG=en_US.UTF-8

export LANGUAGE=en_US.UTF-8

export LC_ALL=en_US.UTF-8

cd $WORKSPACE/你的项目名称

/usr/local/bin/pod update –verbose –no-repo-update

注意:没有#bin/bsah – l

export LANG=en_US.UTF-8

export LANGUAGE=en_US.UTF-8

export LC_ALL=en_US.UTF-8   /usr/local/bin/  这几句可能会造成编译器读不懂pod语句。当你构建的时候提示pod语句出错,百分之九十都是这个错误。

《史上最全Jenkins+SVN+iOS+cocoapods环境搭建及其错误汇总》 创建脚本

《史上最全Jenkins+SVN+iOS+cocoapods环境搭建及其错误汇总》 输入

接下来添加xcode构建工具

《史上最全Jenkins+SVN+iOS+cocoapods环境搭建及其错误汇总》 添加xcode构建工具

首先配置General,这里又有一个坑!!!!输出路径必须是workspace路径下的,然后会报权限不够等之类的问题

《史上最全Jenkins+SVN+iOS+cocoapods环境搭建及其错误汇总》 xcode-general配置

之后是Code signing & OS X keychain options

《史上最全Jenkins+SVN+iOS+cocoapods环境搭建及其错误汇总》 Code signing & OS X keychain options

接下来是配置 Advanced Xcode build options。

tips:jenkins会在它的目录Home->workspace下建一个文件夹,这个文件夹名字就是你的项目名字(比如你的项目名字叫JenkinsProj,那么会存在Jenkins->Home->workspace->JenkinsProj这个文件夹)。${WORKSPACE}一般都会到Jenkins创建的文件夹下。

Build output diretory 还是老实点写在workspace下比较好,因为Jenkins创建的目录我觉得足够清晰了。之前我写在另一个用户下就会报权限问题。

《史上最全Jenkins+SVN+iOS+cocoapods环境搭建及其错误汇总》 advance配置

一般这样配置完就可以成功打包了,在整个配置过程中,都不能粗心大意或者自以为是的随意配置。可能文章还有写的不够的地方或者错误的地方,欢迎大家指正完善。也希望大家把遇到的问题多多分享一下~

错误大全

1.钥匙串的错误

类似下面的钥匙串错误,我给大家个tips:

1、钥匙串无非是两个地方设置和用到,分别为系统管理->Keychains and Provisioning Profiles Management 和 项目配置里面->构建环境下的Keychains and Code Signing Identities 这两个地方去找,看有没有不匹配的地方,或者按照上面说到的相应步骤重新来。

《史上最全Jenkins+SVN+iOS+cocoapods环境搭建及其错误汇总》 钥匙串错误

2.cocoapods错误

类似下面的错误,一般先要检查项目配置里面->构建->Execute shell 有没有写错。

#bin/bsah – l

export LANG=en_US.UTF-8

export LANGUAGE=en_US.UTF-8

export LC_ALL=en_US.UTF-8

cd $WORKSPACE/你的项目文件

/usr/local/bin/pod update –verbose –no-repo-update

如果这样写还不行,mac注销当前用户,进入Jenkins用户,看是否安装了cocoapods,如果没有安装,需要安装一下,并且版本要与当前用户一致(Jenkins用户的密码可以在系统偏好设置->用户与群组设置。)

《史上最全Jenkins+SVN+iOS+cocoapods环境搭建及其错误汇总》 cocoapods错误

3.Xcode终止打包

遇到Xcode终止打包这时进入Jenkins用户,在Jenkins下编译看有没有问题。如果有问题,这时候就要检查下你svn上的项目是否正确了。

4.scheme错误

打开Xcode->manageSchema,把share勾上

《史上最全Jenkins+SVN+iOS+cocoapods环境搭建及其错误汇总》

大家可以把遇到的问题留言,我们共同解决


推荐阅读
  • MATLAB字典学习工具箱SPAMS:稀疏与字典学习的详细介绍、配置及应用实例
    SPAMS(Sparse Modeling Software)是一个强大的开源优化工具箱,专为解决多种稀疏估计问题而设计。该工具箱基于MATLAB,提供了丰富的算法和函数,适用于字典学习、信号处理和机器学习等领域。本文将详细介绍SPAMS的配置方法、核心功能及其在实际应用中的典型案例,帮助用户更好地理解和使用这一工具箱。 ... [详细]
  • POJ 2482 星空中的星星:利用线段树与扫描线算法解决
    在《POJ 2482 星空中的星星》问题中,通过运用线段树和扫描线算法,可以高效地解决星星在窗口内的计数问题。该方法不仅能够快速处理大规模数据,还能确保时间复杂度的最优性,适用于各种复杂的星空模拟场景。 ... [详细]
  • PHP预处理常量详解:如何定义与使用常量 ... [详细]
  • 本文详细介绍了在Linux系统上编译安装MySQL 5.5源码的步骤。首先,通过Yum安装必要的依赖软件包,如GCC、GCC-C++等,确保编译环境的完备。接着,下载并解压MySQL 5.5的源码包,配置编译选项,进行编译和安装。最后,完成安装后,进行基本的配置和启动测试,确保MySQL服务正常运行。 ... [详细]
  • Vue CLI 初始化 Webpack 项目时,main.js 文件是如何被调用的? ... [详细]
  • 在C#编程中,数值结果的格式化展示是提高代码可读性和用户体验的重要手段。本文探讨了多种格式化方法和技巧,如使用格式说明符、自定义格式字符串等,以实现对数值结果的精确控制。通过实例演示,展示了如何灵活运用这些技术来满足不同的展示需求。 ... [详细]
  • 深入浅出 webpack 系列(二):实现 PostCSS 代码的编译与优化
    在前一篇文章中,我们探讨了如何通过基础配置使 Webpack 完成 ES6 代码的编译。本文将深入讲解如何利用 Webpack 实现 PostCSS 代码的编译与优化,包括配置相关插件和加载器,以提升开发效率和代码质量。我们将详细介绍每个步骤,并提供实用示例,帮助读者更好地理解和应用这些技术。 ... [详细]
  • 为了在Hadoop 2.7.2中实现对Snappy压缩和解压功能的原生支持,本文详细介绍了如何重新编译Hadoop源代码,并优化其Native编译过程。通过这一优化,可以显著提升数据处理的效率和性能。此外,还探讨了编译过程中可能遇到的问题及其解决方案,为用户提供了一套完整的操作指南。 ... [详细]
  • 在 CentOS 7 系统中安装 Scrapy 时遇到了一些挑战。尽管 Scrapy 在 Ubuntu 上安装简便,但在 CentOS 7 上需要额外的配置和步骤。本文总结了常见问题及其解决方案,帮助用户顺利安装并使用 Scrapy 进行网络爬虫开发。 ... [详细]
  • 在PHP中实现腾讯云接口签名,以完成人脸核身功能的对接与签名配置时,需要注意将文档中的POST请求改为GET请求。具体步骤包括:使用你的`secretKey`生成签名字符串`$srcStr`,格式为`GET faceid.tencentcloudapi.com?`,确保参数正确拼接,避免因请求方法错误导致的签名问题。此外,还需关注API的其他参数要求,确保请求的完整性和安全性。 ... [详细]
  • 2018 HDU 多校联合第五场 G题:Glad You Game(线段树优化解法)
    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6356在《Glad You Game》中,Steve 面临一个复杂的区间操作问题。该题可以通过线段树进行高效优化。具体来说,线段树能够快速处理区间更新和查询操作,从而大大提高了算法的效率。本文详细介绍了线段树的构建和维护方法,并给出了具体的代码实现,帮助读者更好地理解和应用这一数据结构。 ... [详细]
  • 为了优化用户体验,本文探讨了如何调整下拉菜单的宽度。通过合理设置宽度,可以提升界面的美观性和易用性。文章提供了具体的代码示例,帮助开发者实现这一目标。例如,可以通过 CSS 或 JavaScript 来动态调整下拉菜单的宽度,确保其在不同设备和屏幕尺寸上都能保持良好的显示效果。 ... [详细]
  • 如何使用ES6语法编写Webpack配置文件? ... [详细]
  • 本指南详细介绍了在Linux环境中高效连接MySQL数据库的方法。用户可以通过安装并使用`mysql`客户端工具来实现本地连接,具体命令为:`mysql -u 用户名 -p 密码 -h 主机`。例如,使用管理员账户连接本地MySQL服务器的命令为:`mysql -u root -p pass`。此外,还提供了多种配置优化建议,以确保连接过程更加稳定和高效。 ... [详细]
  • MyISAM和InnoDB是MySQL中最为广泛使用的两种存储引擎,每种引擎都有其独特的优势和适用场景。MyISAM引擎以其简单的结构和高效的读取速度著称,适用于以读操作为主、对事务支持要求不高的应用。而InnoDB引擎则以其强大的事务处理能力和行级锁定机制,在需要高并发写操作和数据完整性的场景下表现出色。选择合适的存储引擎应综合考虑业务需求、性能要求和数据一致性等因素。 ... [详细]
author-avatar
mnuee
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有