1. 为了避免在jenkins操作过程中的权限问题。
  2. 将安装在/Users/Shared/jenkins目录下的卸载。
  3. sudo launchctl unload /Library/LaunchDaemons/org.jenkins-ci.plist
  4. 之后安装在/Users/LoginName/Jenkins 目录下
  5. java -jar /Applicaitons/Jenkins/jenkins.war --httpPort:
  1. 一个小问题。在设置Editable Email Notificaiton 时。
  2. Triggers 中的Send To 不能是Developers应该用Recipient list

1. http://www.cocoachina.com/ios/20160804/17281.html

2. http://www.jianshu.com/p/ed0edb93e234

3. 安装Jenkins

a 从官网下载Jenkins(https://jenkins.io/)Mac OS X 对应的jenkins。之后傻瓜式安装。

b 安装完成之后,Safari可能会自动打开,如果没有自动打开,打开浏览器,输入http://localhost:8080

c 如果链接服务器失败,很可能是缺少JDK环境,在应用程序中找到Jenkens -> jenkins.rar 点击jenkins.rar会提示缺少JDK环境,点击更多信息。会进入JDK环境下载页面,接受协议,下载Mac os x环境下的JDK。

d 按照教程进行配置。

f  输入http://localhost:8080会提示Unlock jenkins 按照提示打开initialAdminPassword文件。由于jenkins下的secrets文件夹和initialAdminPassword被设置了权限。因此要右键 -> 显示简介 -> 共享与权限中更改权限。

g 获取密码进行 初始化。

h 配置SSH证书。注意此时的ssh应该是切换到jenkins模式下的ssh。生成ssh要把公钥添加到git上,私钥放在jenkins上,jenkins添加证书流程 主页 -> Credentials -> System -> Global credentials(Unrestricted) -> Add Credentials 设置SSH的私钥,同时用cat的形式获取完整的私钥。包括begin 和 end

缺少的步骤:

sudo dscl . passwd /Users/jenkins "YourPassword" 为jenkins这个用户设置一个密码

su jenkins 切换到jenkins用户

ssh-keygen -t rsa -C "你的邮箱标识" -f ~/.ssh/jenkins 生成使用的SSH

之后将jen.pub的公钥加入进git。将jen私钥放入jenkins中。其中获取公钥和私钥时使用 cat jen 即显示"jen"整个文件的数据。

i jenkins之触发器配置

http://blog.sina.com.cn/s/blog_71bc9d680102x0n1.html

二:

1 设置SSH。添加私钥到 jenkins。添加公钥到git。要完整。(添加证书)

2 在系统管理插件管理中添加插件:

安装GitLab插件: 在“可选插件”中选中“GitLab Plugin”和“Gitlab Hook Plugin”这两项,然后安装。

安装Xcode插件: 在“可选插件”中选中“Xcode integration”安装。

安装签名证书管理插件: 在“可选插件”中选中“Credentials Plugin”和“Keychains and Provisioning Profiles Management”安装

安装FTP插件: 在系统管理->管理插件,在“可选插件”中选中“Publish over FTP”安装。

 安装脚本插件: 在系统管理->管理插件,在“可选插件”中选中“Post-Build Script Plug-in”安装。

3 邮件通知

jenkins location中的系统管理员邮件地址。要设置的和Extended E-mail Notification中的使用SMTP授权的邮箱地址一样(包括E-mail Notification)。同事邮箱的密码不是常用的密码而是SMTP/POP3的授权码。由于E-mail Notification功能有限。故实际使用时使用Extended E-mail Notification来进行邮件的发送。使用E-mail Notification的“通过发送测试邮件测试配置”来进行邮件发送的测试。同时在Extended E-mail Notification中可以设置属性“Default Triggers”为Success,Failure-Any来接受jenkins构建成功和失败时的通知邮件。

4 Keychains and Provisioning Profiles Management插件
  
上传的login.keychanin而不是证书以及相应的PP文件。其中login.keychain的路径是/Users/电脑名(jisa)/Library/keychains/login.keychain.上传点击Upload。
进入jenkins目录。/Users/Shared/Jenkins/Library.里面是不是有keychains和MobileDevice文件夹。如果没有则拷贝过去。同时要更改权限为读和写。注意keychians里只需要login.keychian和login.keychian-db文件同时要解锁权限。

五 新建一个自由风格的项目

源码管理-设置git

2 构建触发器。 只设置了poll SCM(检查代码更新。什么时候下拉代码。) Build periodically(构建周期。什么时候构建一次,没使用)

3 构建环境。设置keychain和pp文件

构建之XCode设置。

构建Archive和ipa的脚本。

if [ -d "${WORKSPACE}/builds" ]; then
    rm -rf ${WORKSPACE}/builds;
fi;
mkdir ${WORKSPACE}/builds;
if [ -d "${WORKSPACE}/builds/${BUILD_NUMBER}" ]; then
    rm -rf ${WORKSPACE}/builds/${BUILD_NUMBER};
fi;
mkdir ${WORKSPACE}/builds/${BUILD_NUMBER};

/usr/bin/security unlock-keychain -p pwd ~/Library/Keychains/login.keychain
/usr/bin/security unlock-keychain -p pwd ~/Library/Keychains/login.keychain-db
#注意${WORKSPACE}代表的路径。可以在jenkins的工作区看出来。
xcodebuild -workspace ${WORKSPACE}/source/ios/O2oApp/O2oApp.xcworkspace -scheme "O2oApp" -configuration Release clean build -sdk iphoneos archive -archivePath ${WORKSPACE}/builds/${BUILD_NUMBER}/archive CODE_SIGN_IDENTITY="iPhone Distribution: Vision Credit  Financial Technology Company Limited (YWEH5GVC2C)"
xcodebuild -exportArchive -archivePath ${WORKSPACE}/builds/${BUILD_NUMBER}/archive.xcarchive -exportPath ${WORKSPACE}/builds/${JOB_NAME} -exportOptionsPlist ${WORKSPACE}/source/ios/O2oApp/doc/O2oAppDebuge.plist

非cocoapods类型的工程执行的shell脚本

if [ -d "${WORKSPACE}/builds" ]; then
    rm -rf ${WORKSPACE}/builds;
fi;
mkdir ${WORKSPACE}/builds;
if [ -d "${WORKSPACE}/builds/${BUILD_NUMBER}" ]; then
    rm -rf ${WORKSPACE}/builds/${BUILD_NUMBER};
fi;
mkdir ${WORKSPACE}/builds/${BUILD_NUMBER};
xcodebuild -project ${WORKSPACE}/jenkinsTest.xcodeproj -scheme "jenkinsTest" -sdk iphoneos archive -archivePath ${WORKSPACE}/builds/${BUILD_NUMBER}/archive CODE_SIGN_IDENTITY="iPhone Developer: sa ji (96722ADU5M)"
xcodebuild -exportArchive -archivePath ${WORKSPACE}/builds/${BUILD_NUMBER}/archive.xcarchive -exportPath ${WORKSPACE}/builds/test/${JOB_NAME}.ipa -exportOptionsPlist ${WORKSPACE}/dev.plist

exportOptionsPlist的类型如下。是一个plist文件。可以通过xcodebuild -help来执行终端命令。

使用SHELL脚本打包,不通过jenkins 直接执行脚本。

  1. #!/bin/sh
  2.  
  3. export LC_ALL=zh_CN.GB2312;export LANG=zh_CN.GB2312
  4. cd ..
  5. base_path="`dirname $0`"
  6. base_path="`(cd \"$base_path\"; pwd)`"
  7. echo "路径$base_path"
  8.  
  9. path_arr=$(echo $base_path|tr "/" "\n")
  10.  
  11. echo "分割路径 $path_arr"
  12.  
  13. for s in ${path_arr[@]}
  14. do
  15. if [ "${s}"x = "ios"x ]; then
  16. app_path=`printf "$app_path/%s" $s`
  17. break
  18. else
  19. app_path=`printf "$app_path/%s" $s`
  20. fi
  21.  
  22. done
  23. echo "app基本路径=$app_path"
  24.  
  25. #############制定的Archive路径
  26. archivePath="/Users/vcredit_hzxh/Desktop/O2oApp"
  27.  
  28. ###############进入项目目录
  29. projectName="O2oApp" #项目所在目录的名称
  30. isWorkSpace="$2" #判断是用的workspace还是直接project,workspace设置为true,否则设置为false
  31. projectDir="${app_path}/O2oApp/" #项目所在目录的绝对路径
  32.  
  33. ###############配置下载的文件名称和路径等相关参数
  34.  
  35. ##########################################################################################
  36. ##############################以下部分为自动生产部分,不需要手动修改############################
  37. ##########################################################################################
  38.  
  39. ####################### FUCTION START #######################
  40. replaceString(){
  41. local inputString="$1"
  42. result="${inputString//(/}"
  43. result="${result//)/}"
  44. echo "$result"
  45. }
  46.  
  47. rm -rf ./build
  48. ###############获取版本号,bundleID
  49. infoPlist="${projectDir}${projectName}/Info.plist"
  50. bundleDisplayName=`/usr/libexec/PlistBuddy -c "Print CFBundleDisplayName" $infoPlist`
  51. bundleVersion=`/usr/libexec/PlistBuddy -c "Print CFBundleShortVersionString" $infoPlist`
  52. bundleIdentifier=`/usr/libexec/PlistBuddy -c "Print CFBundleIdentifier" $infoPlist`
  53. bundleBuildVersion=`/usr/libexec/PlistBuddy -c "Print CFBundleVersion" $infoPlist`
  54. ###############在网页上显示的名字和bundleDisplayName一致
  55.  
  56. #修改编译环境
  57. #VV_BUILD_FOR_RELEASE 生产发布
  58. #VV_BUILD_FOR_TEST 公测
  59. #VV_BUILD_FOR_DEVELOP 内测
  60. #VV_BUILD_FOR_RELEASE_HOUSE 企业
  61. ######
  62. PREPROCESSOR_DEFINITIONS="VV_BUILD_FOR_RELEASE_HOUSE"
  63. #####
  64.  
  65. if [ "${PREPROCESSOR_DEFINITIONS}"x = "VV_BUILD_FOR_RELEASE"x ]; then
  66. buildConfig="Release" #编译的方式,默认为Release,还有Debug等 Develop TEST
  67. bundleDisplayName="Appstore"
  68.  
  69. # 发布appstore用********
  70. CODE_SIGN="iPhone Distribution: Vision Credit Financial Technology Company Limited (YWEH5GVC2C)"
  71. ProvisioningProfile="o2o_appstore_pro"
  72.  
  73. elif [ "${PREPROCESSOR_DEFINITIONS}"x = "VV_BUILD_FOR_RELEASE_HOUSE"x ]; then
  74. buildConfig="Release_House"
  75. bundleDisplayName="企业生产"
  76. CODE_SIGN="iPhone Distribution: Vision Credit Ltd"
  77. ProvisioningProfile="O2O_house_Profiles"
  78.  
  79. elif [ "${PREPROCESSOR_DEFINITIONS}"x = "VV_BUILD_FOR_TEST"x ]; then
  80. buildConfig="TEST"
  81. bundleDisplayName="公测"
  82. CODE_SIGN="iPhone Distribution: Vision Credit Ltd"
  83. ProvisioningProfile="O2O_house_Profiles"
  84.  
  85. else
  86. buildConfig="Debuge"
  87. bundleDisplayName="内测"
  88. CODE_SIGN="iPhone Distribution: Vision Credit Financial Technology Company Limited (YWEH5GVC2C)"
  89. ProvisioningProfile="o2oapp_develop_Profiles"
  90.  
  91. fi
  92.  
  93. appName=$bundleDisplayName
  94. echo "$bundleDisplayName"
  95. echo "v_$bundleVersion b_$bundleBuildVersion"
  96.  
  97. ##############开始编译app
  98. if $isWorkSpace ; then #判断编译方式
  99. echo "开始编译workspace111...."
  100. echo "$projectDir$projectName.xcworkspace"
  101.  
  102. #xcodebuild -workspace ${projectDir}$projectName.xcworkspace -scheme $projectName GCC_PREPROCESSOR_DEFINITIONS="${PREPROCESSOR_DEFINITIONS}" -configuration $buildConfig CODE_SIGN_IDENTITY="${CODE_SIGN}" clean build SYMROOT=$app_path
  103. xcodebuild -workspace ${projectDir}$projectName.xcworkspace -scheme $projectName -configuration $buildConfig clean build -sdk iphoneos archive -archivePath /Users/vcredit_hzxh/Desktop/jff/O2oApp CODE_SIGN_IDENTITY="${CODE_SIGN}"
  104. else
  105. echo "开始编译target12222...."
  106. cd ${projectDir}
  107. xcodebuild -target $projectName -configuration $buildConfig clean build SYMROOT=$app_path
  108. fi
  109. #判断编译结果
  110. if test $? -eq 0
  111. then
  112. echo "编译成功"
  113. else
  114. echo "编译失败"
  115. echo "\n"
  116. exit 1
  117. fi
  118.  
  119. ###############开始打包成.ipa
  120. #appDir="${app_path}/Release-iphoneos" #app所在路径
  121. ipaDir="/Users/vcredit_hzxh/Document/IPA" #ipa所在路径
  122.  
  123. time=`date +%Y%m%d%H%M`
  124. echo $time
  125. #echo "------$appDir"
  126. #echo "开始打包$projectName.xcarchive成$projectName.ipa....."
  127.  
  128. #ipaPath="$ipaDir/${time}_${bundleDisplayName}"
  129. #if [ ! -d $ipaPath} ];then
  130. #mkdir -p $ipaPath}
  131. #cd ipaPath}
  132. #fi
  133.  
  134. #--------jff------
  135. if [ "${PREPROCESSOR_DEFINITIONS}"x = "VV_BUILD_FOR_RELEASE"x ]; then
  136. echo "AppStore"
  137. elif [ "${PREPROCESSOR_DEFINITIONS}"x = "VV_BUILD_FOR_RELEASE_HOUSE"x ]; then
  138. xcodebuild -exportArchive -archivePath /Users/vcredit_hzxh/Desktop/jff/O2oApp.xcarchive -exportPath /Users/vcredit_hzxh/Documents/IPA -exportOptionsPlist ${projectDir}doc/O2oAppEnterprise.plist
  139. elif [ "${PREPROCESSOR_DEFINITIONS}"x = "VV_BUILD_FOR_TEST"x ]; then
  140. echo "内侧"
  141. else
  142. echo "开发时"
  143. xcodebuild -exportArchive -archivePath $/Users/vcredit_hzxh/Desktop/jff/O2oApp.xcarchive -exportPath /Users/vcredit_hzxh/DeskTop/jff -exportOptionsPlist ${projectDir}doc/O2oAppDebuge.plist
  144. fi
  145.  
  146. #xcodebuild -exportArchive -archivePath ${app_path}/O2oApp.xcarchive -exportPath /Users/vcredit_hzxh/DeskTop/jff -exportOptionsPlist ${projectDir}doc/O2oAppDebuge.plist
  147. #废弃的
  148. #xcrun -sdk iphoneos PackageApplication -v "$appDir/$projectName.app" -o "$ipaPath/${projectName}_${bundleDisplayName}_V${bundleVersion}(${bundleBuildVersion})_${time}.ipa" --embed "$ProvisioningProfile"
  149. #将app打包成ipa
  150.  
  151. #cp -rp "$appDir/$projectName.app.dSYM" "$directory"
  152. #echo "ipa 路径=$ipaPath"
  153.  
  154. rm -rf $appDir

jenkins 配置。的更多相关文章

  1. 使用jenkins配置.net mvc网站进行持续集成二

    上一篇使用jenkins配置.net mvc网站进行持续集成一只是简单介绍了jenkins构建站点到本地服务器,这一篇,就来讲解如何部署站点到指定的服务器上面. 1.IIS远程发布配置 1.在服务器管 ...

  2. 使用Gradle构建构建一个Java Web工程及持续集成环境Jenkins配置

    安装Eclipse插件——Buildship 什么是Buildship? Buildship能方便我们通过Eclipse IDE创建和导入Gradle工程,同时还能执行Gradle任务. Eclips ...

  3. jenkins配置.net mvc网站

    jenkins配置.net mvc网站 上一篇使用jenkins配置.net mvc网站进行持续集成一只是简单介绍了jenkins构建站点到本地服务器,这一篇,就来讲解如何部署站点到指定的服务器上面. ...

  4. Jenkins配置和使用

    之前整理了Jenkins的下载和安装过程,有需要的可以参考我的博客,地址:   http://www.cnblogs.com/luchangyou/p/5981884.html 接下来整理一下Jenk ...

  5. jenkins配置自动发送邮件,抄送

    1.安装插件.系统管理-安装插件:可选插件:搜索Email Extension 2.设置全局变量.系统管理-系统设置:a.Jenkins Location 设置发送方邮件--- b.Extended ...

  6. Jenkins 配置邮件通知步骤

    Jenkins 配置邮件通知前言 可以在Jenkins 中配置邮件通知,比如在构建失败时发送邮件通知项目组来及时修复问题. Jenkins 邮件通知功能的插件主要包括: Mailer Plugin ( ...

  7. 【jenkins】jenkins+maven+gitlab+testng,jenkins配置

    电脑版本:windows10企业版 jenkins配置: 1.general配置,这里的配置比较简单,基本默认就可以了 2.源码管理 2.1填写git地址,从你的gitlib项目里去找.不会的自行百度 ...

  8. 环境部署(八):jenkins配置邮件通知

    完成基于jenkins的持续集成部署后,任务构建执行完成,测试结果需要通知到相关人员.这篇博客,介绍如何在jenkins中配置邮件通知的方法... 一.安装邮件插件 由于Jenkins自带的邮件功能比 ...

  9. jenkins配置邮件 -- com.sun.mail.smtp.SMTPSenderFailedException: 550 5.7.1 Client does not have permissions to send as this sender

    jenkins配置邮件设置 发送邮件测试时,报错: com.sun.mail.smtp.SMTPSenderFailedException: Client does not have permissi ...

  10. Jenkins配置AD域认证

    Jenkins配置AD域认证 #检测域控地址ping youad.com指向的IP #如果不是实际域控ip地址,则修改hosts vi /etc/hosts #192.168.100.100替换为实际 ...

随机推荐

  1. 一、消息队列之ActiveMQ的安装、配置和C#样例代码

    最近有时间了,研究一下消息队列ActvieMQ,结合自己的实践和网上的一些大家内容,整理如下,所有步骤和链接均是正确的. 1.ActiveMQ ActiveMQ 是Apache出品,最流行的,能力强劲 ...

  2. process概念

    multiprocess: multiprocess.cpu_count():统计cpu核数 multiprocess.active_chirdren():获取所有的子进程 multiprocess. ...

  3. zeromq学习记录(二)天气更新服务器使用ZMQ_SUB ZMQ_PUB

    /************************************************************** 技术博客 http://www.cnblogs.com/itdef/   ...

  4. TextView等组件的LayoutParams不能随便用,不然组件不显示

    TableLayout.LayoutParams lpRow = new TableLayout.LayoutParams( LinearLayout.LayoutParams.WRAP_CONTEN ...

  5. spring-boot @Async 的使用、自定义Executor的配置方法

    1. TaskExecutor Spring异步线程池的接口类,其实质是java.util.concurrent.Executor Spring 已经实现的异常线程池: 1. SimpleAsyncT ...

  6. Nginx的使用(反向代理,负载均衡)

    在我目前的工作内容中,接触到Nginx的用处无外乎两点: 1. 反向代理,解决前端跨域的问题 工作内容有门户的概念,就是将各个子系统集成到门户里,在门户里面访问,这样就很容易造成跨域的问题 那么解决的 ...

  7. Java中创建数组的几种方法

    Java中创建数组的几种方法 public static void main(String[] args) { //创建数组的第一种方法 int[] arr=new int[6]; int intVa ...

  8. 2018.06.30 BZOJ 3932: [CQOI2015]任务查询系统(主席树)

    3932: [CQOI2015]任务查询系统 Time Limit: 20 Sec Memory Limit: 512 MB Description 最近实验室正在为其管理的超级计算机编制一套任务管理 ...

  9. yii2 ActiveRecord的生命周期

    AR的生命周期 http://www.yii-china.com/doc/guide/db_active_record.html 理解AR的生命周期对于你操作数据库非常重要.生命周期通常都会有些典型的 ...

  10. gridcontrol 图片列异步加载

    在gridview中指定一列,将ColumnEdit设置成pictureEdit 在使用showDialog这里窗体后,需要frm.Dispose()将资源释放 1.将该列的UnboundType属性 ...