设为首页 收藏本站
查看: 960|回复: 0

[经验分享] jenkins 配置。

[复制链接]

尚未签到

发表于 2018-1-8 12:36:29 | 显示全部楼层 |阅读模式
  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>  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 直接执行脚本。
  

#!/bin/sh  

  
export LC_ALL
=zh_CN.GB2312;export LANG=zh_CN.GB2312  
cd ..
  
base_path
="`dirname $0`"  
base_path
="`(cd \"$base_path\"; pwd)`"  
echo
"路径$base_path"  

  
path_arr
=$(echo $base_path|tr "/" "\n")  

  
echo
"分割路径 $path_arr"  

  
for s in ${path_arr[@]}
  
do
  
if [ "${s}"x = "ios"x ]; then
  
app_path=`printf "$app_path/%s" $s`
  
break
  
else
  
app_path=`printf "$app_path/%s" $s`
  
fi
  

  
done
  
echo "app基本路径=$app_path"
  

  
#############制定的Archive路径
  
archivePath="/Users/vcredit_hzxh/Desktop/O2oApp"
  

  
###############进入项目目录
  
projectName="O2oApp" #项目所在目录的名称
  
isWorkSpace="$2"  #判断是用的workspace还是直接project,workspace设置为true,否则设置为false
  
projectDir="${app_path}/O2oApp/" #项目所在目录的绝对路径
  

  
###############配置下载的文件名称和路径等相关参数
  

  

  
##########################################################################################
  
##############################以下部分为自动生产部分,不需要手动修改############################
  
##########################################################################################
  

  
####################### FUCTION  START #######################
  
replaceString(){
  
local inputString="$1"
  
result="${inputString//(/}"
  
result="${result//)/}"
  
echo "$result"
  
}
  

  
rm -rf ./build
  
###############获取版本号,bundleID
  
infoPlist="${projectDir}${projectName}/Info.plist"
  
bundleDisplayName=`/usr/libexec/PlistBuddy -c "Print CFBundleDisplayName" $infoPlist`
  
bundleVersion=`/usr/libexec/PlistBuddy -c "Print CFBundleShortVersionString" $infoPlist`
  
bundleIdentifier=`/usr/libexec/PlistBuddy -c "Print CFBundleIdentifier" $infoPlist`
  
bundleBuildVersion=`/usr/libexec/PlistBuddy -c "Print CFBundleVersion" $infoPlist`
  
###############在网页上显示的名字和bundleDisplayName一致
  

  
#修改编译环境
  
#VV_BUILD_FOR_RELEASE 生产发布
  
#VV_BUILD_FOR_TEST 公测
  
#VV_BUILD_FOR_DEVELOP 内测
  
#VV_BUILD_FOR_RELEASE_HOUSE  企业
  
######
  
PREPROCESSOR_DEFINITIONS="VV_BUILD_FOR_RELEASE_HOUSE"
  
#####
  

  

  
if [ "${PREPROCESSOR_DEFINITIONS}"x = "VV_BUILD_FOR_RELEASE"x ]; then
  
buildConfig="Release" #编译的方式,默认为Release,还有Debug等  Develop  TEST
  
bundleDisplayName="Appstore"
  

  
#  发布appstore用********
  CODE_SIGN="iPhone Distribution: Vision Credit  Financial Technology Company Limited (YWEH5GVC2C)"
  ProvisioningProfile="o2o_appstore_pro"
  

  
elif [ "${PREPROCESSOR_DEFINITIONS}"x = "VV_BUILD_FOR_RELEASE_HOUSE"x ]; then
  
buildConfig="Release_House"
  
bundleDisplayName="企业生产"
  
CODE_SIGN="iPhone Distribution: Vision Credit  Ltd"
  
ProvisioningProfile="O2O_house_Profiles"
  

  
elif [ "${PREPROCESSOR_DEFINITIONS}"x = "VV_BUILD_FOR_TEST"x ]; then
  
buildConfig="TEST"
  
bundleDisplayName="公测"
  
CODE_SIGN="iPhone Distribution: Vision Credit  Ltd"
  
ProvisioningProfile="O2O_house_Profiles"
  

  

  
else
  
buildConfig="Debuge"
  
bundleDisplayName="内测"
  
CODE_SIGN="iPhone Distribution: Vision Credit  Financial Technology Company Limited (YWEH5GVC2C)"
  
ProvisioningProfile="o2oapp_develop_Profiles"
  

  
fi
  

  
appName=$bundleDisplayName
  
echo "$bundleDisplayName"
  
echo "v_$bundleVersion  b_$bundleBuildVersion"
  

  
##############开始编译app
  
if $isWorkSpace ; then  #判断编译方式
  
echo  "开始编译workspace111...."
  
echo "$projectDir$projectName.xcworkspace"
  

  
#xcodebuild -workspace ${projectDir}$projectName.xcworkspace -scheme $projectName GCC_PREPROCESSOR_DEFINITIONS="${PREPROCESSOR_DEFINITIONS}" -configuration $buildConfig CODE_SIGN_IDENTITY="${CODE_SIGN}"  clean build SYMROOT=$app_path
  
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}"
  
else
  
echo  "开始编译target12222...."
  
cd ${projectDir}
  
xcodebuild -target $projectName -configuration $buildConfig clean build SYMROOT=$app_path
  
fi
  
#判断编译结果
  
if test $? -eq 0
  
then
  
echo "编译成功"
  
else
  
echo "编译失败"
  
echo "\n"
  
exit 1
  
fi
  

  
###############开始打包成.ipa
  
#appDir="${app_path}/Release-iphoneos"  #app所在路径
  
ipaDir="/Users/vcredit_hzxh/Document/IPA"  #ipa所在路径
  

  
time=`date +%Y%m%d%H%M`
  
echo $time
  
#echo "------$appDir"
  
#echo "开始打包$projectName.xcarchive成$projectName.ipa....."
  

  
#ipaPath="$ipaDir/${time}_${bundleDisplayName}"
  
#if [ ! -d $ipaPath} ];then
  
#mkdir -p $ipaPath}
  
#cd ipaPath}
  
#fi
  

  
#--------jff------
  
if [ "${PREPROCESSOR_DEFINITIONS}"x = "VV_BUILD_FOR_RELEASE"x ]; then
  
echo "AppStore"
  
elif [ "${PREPROCESSOR_DEFINITIONS}"x = "VV_BUILD_FOR_RELEASE_HOUSE"x ]; then
  
xcodebuild -exportArchive -archivePath /Users/vcredit_hzxh/Desktop/jff/O2oApp.xcarchive -exportPath /Users/vcredit_hzxh/Documents/IPA -exportOptionsPlist ${projectDir}doc/O2oAppEnterprise.plist
  
elif [ "${PREPROCESSOR_DEFINITIONS}"x = "VV_BUILD_FOR_TEST"x ]; then
  
echo "内侧"
  
else
  
echo "开发时"
  
xcodebuild -exportArchive -archivePath $/Users/vcredit_hzxh/Desktop/jff/O2oApp.xcarchive -exportPath /Users/vcredit_hzxh/DeskTop/jff -exportOptionsPlist ${projectDir}doc/O2oAppDebuge.plist
  
fi
  

  
#xcodebuild -exportArchive -archivePath ${app_path}/O2oApp.xcarchive -exportPath /Users/vcredit_hzxh/DeskTop/jff -exportOptionsPlist ${projectDir}doc/O2oAppDebuge.plist
  
#废弃的
  
#xcrun -sdk iphoneos PackageApplication -v "$appDir/$projectName.app" -o "$ipaPath/${projectName}_${bundleDisplayName}_V${bundleVersion}(${bundleBuildVersion})_${time}.ipa" --embed "$ProvisioningProfile"
  
#将app打包成ipa
  

  
#cp -rp "$appDir/$projectName.app.dSYM" "$directory"
  
#echo "ipa 路径=$ipaPath"
  

  
rm -rf $appDir
  

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-432916-1-1.html 上篇帖子: jenkins 异常 下篇帖子: jenkins 配置
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表