1.前言
这是一篇通过无数次踩坑后成功进行的总结。。。希望能帮助新手们快速上手。
2.正文
配置JDK环境
安装前确认已经安装好JDK1.8版本下载地址,因为最新的Jenkins最高只支持1.8版本,如果当前安装过高版本的,需要安装完1.8的进行配置。
image.png image.png终端执行
$ open ~/.bash_profile
结尾另起一行添加
export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk[对应的版本].jdk/Contents/Home
下载Jenkins文件&安装
通过官网下载mac版本的pkg文件,然后进行默认选项的安装。
image.png image.pngJenkins配置
安装完成后浏览器会默认打开http://localhost:8080,然后首次会进入输入管理员密码界面
image.png通过前往文件夹工具无法进入到
/Users/Shared/Jenkins/Home/secrets/initialAdminPassword
image.png
是因为secrets有访问权限,我们可以先进入
/Users/Shared/Jenkins/Home
然后在secrets目录上 右键-》显示简介,后点击右下角的小锁头,输入登录密码后,点击共享与权限一栏的【everyone】右侧的无访问权限,选择【读与写】后,然后点击底部齿轮选择【应用到包含项目】最后关闭锁头。
image.png image.png image.png打开【/Users/Shared/Jenkins/Home/secrets/initialAdminPassword】文件复制密码后在jenkins登录界面粘贴后继续。
解决【该Jenkins实例似乎已离线】
此时界面会提示【该Jenkins实例似乎已离线】,解决方案:
另开启新界面,进入【http://localhost:8080/pluginManager/advanced】界面,将Update Site地址从https改为http后提交,然后点击右下角的Check now,浏览器输入http://localhost:8080/restart 重启jenkins即可解决。
image.png也可以使用终端命令操作
启动:sudo launchctl load /Library/LaunchDaemons/org.jenkins-ci.plist
停止:sudo launchctl unload /Library/LaunchDaemons/org.jenkins-ci.plist
重启完重新输入http://localhost:8080,按顺序操作即可,进入到【自定义Jenkins
】,点击安装推荐插件后耐心等待即可。
创建用户
创建后点击保存并完成,实例配置使用默认配置即可,直接点击保存并完成,至此配置完毕,点击开始使用Jenkins,如果界面没反应,可以使用localhost:8080/restart重启jenkins后登录。
image.png下载打包插件
主界面菜单点击【系统管理】-》【插件管理】
image.png安装Keychains and Provisioning Profiles Management和Xcode integration
点击【可选插件】-》过滤里输入【keychains】后安装一栏选上【对号】,后点击直接安装,等待安装完毕后,相同方式安装【Xcode integration】,安装完成后重启jenkins。
image.png配置Keychains and Provisioning Profiles
主界面菜单点击【系统管理】-》【Keychains and Provisioning Profiles Management】(插件安装成功后才有)
前往【/Users/管理员用户名/Library/Keychains/】,将【login.keychain-db】文件复制一份改名为【login.keychain】,前往【/Users/Shared/Jenkins】创建【/Library/Keychains】,将这两个文件拷到下面。
image.png然后在【Keychains and Provisioning Profiles Management】里面点击【选择文件】,选择之前拷贝的【login.keychain】,上传点击【Upload】后点击【Save】,打开【钥匙串访问】-》【登录】-》【证书】-》【开发者证书】,复制名称到【Code Signing Identity】,点击【Save】。
image.png image.png image.png image.png image.png将/Users/管理员用户名/Library的MobileDevice文件夹拷贝到/Users/Shared/Jenkins/Library下。上传需要的Provisioning Profiles文件(位置在/MobileDevice/Provisioning Profiles下)并且输入Provisioning Profiles Directory Path的路径【/Users/用户名/Library/MobileDevice/Provisioning Profiles】后保存。
新建任务
主菜单点击【新建任务】-》输入任务名-》选择构建一个自由风格的-》点击确定。
image.png配置构建任务
由于第一次进入关联不上Code Sign所以需要保存后在重新配置
点击【构建】-》【Keychains and Code Signing Identities】-》保存
image.png image.png【Mobile Provisioning Profiles】的配置一样需要保存后重新配置才能关联出来变量。
image.png通过立即构建进行测试
test任务菜单点击立即构建进行测试配置是否成功。结果为蓝色即为正确,如果为红色则按照错误日志进行排查,错误日志查看,点击构建结果-》控制台输出即可查看
image.pngshell脚本进行构建配置
现成的打包shell脚本粘贴到脚本位置即可
image.png#!/bin/bash
#安装器打包文件
#start---------------------------------------》
# 1.设置配置标识
configuration="Debug"
#2.项目的根目录
cur_dir="/Users/jit/My/SVNCodes/TenementPlatform-Branch1.0"
echo $cur_dir
#生成ipa的目录
desk_dir="/Users/jit/Desktop"
echo $desk_dir
#获取当前时间
CURTIME=`date '+%Y%m%d_%H%M%S'`
prefix_path="${desk_dir}/uploadIPA"
upload_path="${prefix_path}/${configuration}/${CURTIME}"
target_path=$cur_dir
echo "upload_path打包路径:$upload_path"
echo "target_path项目路径:$target_path"
#判断如果不存在upload_path创建,存在先删除再创建
if [ -d "$prefix_path" ]; then
if [ -d "$upload_path" ]; then
rmdir "$upload_path"
mkdir -p "$upload_path"
else
mkdir -p "$upload_path"
fi
else
mkdir -p "$prefix_path"
fi
# 项目名称
target_name="TenementPlatform"
workspace_name="${target_name}.xcworkspace"
scheme="$target_name"
echo "configuration配置:$configuration"
echo "target_name项目名称:$target_name"
echo "workspace_name工作空间名称:$workspace_name"
echo "scheme名称:$scheme"
# archive包时使用证书、描述文件UUID;ipa包时使用描述文件(描述文件名称)
codeSignIdentity="iPhone Developer: 宇 张 (6BVMZN44H8)"
provision_UUID="bd87e612-1eb0-4aa8-8508-34e673184b24.mobileprovision"
provisoning_profile="TestAll"
echo "codeSignIdentity开发证书:$codeSignIdentity"
echo "provision_UUID描述文件UUID:$provision_UUID"
echo "provisoning_profile描述文件:$provisoning_profile"
# 指定目录时
cd "$upload_path"
ipa_path="$upload_path"
archive_path="$upload_path/${target_name}.xcarchive"
# 日志路径
log_path="$upload_path/log.txt"
exportOptionsPlist_path="$desk_dir/autoAchive/config.plist"
pwd
echo "ipa_path导出路径:$ipa_path"
echo "archive_path生成路径:$archive_path"
echo "log_path打印路径:$log_path"
# 3 删除旧文件
rm -rf "$log_path"
rm -rf "$archive_path"
rm -rf "$ipa_path"
cd "$target_path"
pwd
# 4 清理构建目录
xcodebuild clean -configuration "$configuration" -alltargets
xcodebuild clean -configuration "$configuration" -alltargets | tee $log_path
echo $scheme
echo $workspace_name
echo $configuration
/usr/bin/security unlock-keychain -p 111111
# 5 归档(其他参数不指定的话,默认用的是.xcworkspace或.xcodeproj文件里的配置)
xcodebuild archive -workspace "$workspace_name" -scheme "$scheme" -configuration "$configuration" -archivePath "$archive_path" CODE_SIGN_IDENTITY="$codeSignIdentity" PROVISIONING_PROFILE="$provision_UUID" | tee $log_path
# 6 导出IPA
xcodebuild -exportArchive -archivePath "$archive_path" -exportPath "$ipa_path" -exportOptionsPlist "$exportOptionsPlist_path" | tee $log_path
# 7 删除项目目录下产生的build文件
rm -rf "$cur_dir/build"
# 8 上传IPA到蒲公英 根据蒲公英官方文档编写
file_path="${upload_path}/${target_name}.ipa"
echo "正在上传文件"
echo $file_path
curl -F "file=@${file_path}" -F "uKey=6c17bf50b844a231703068ce04b166bb" -F "_api_key=7faa7cc51166fed7f8c181003ce118aa" https://qiniu-storage.pgyer.com/apiv1/app/upload
点击立即构建进行测试,如果报错根据错误日志调试。
可以先注释掉 【6 导出IPA】之后的脚本,一点点调试。
主要问题应该是权限问题,例如
You don't have permission to save the file
授权所有用对【/Users/Shared/Jenkins】以及子目录的的读写权限后重新构建,
提示ld: library not found for -lAFNetworking错误。
需要删除【Build Settings】-》【Library Search Paths】下的相关关联。
并且需要给代码文件夹以及子文件授予所有用户的读写权限。
再次构建提示成功,至此打包配置基本完成。
3.结语
Jenkins还可以配置很多种功能,比如代码规范检查,定时打包等等。
还有一种通过Homebrew方式安装Jenkins,能指定Jenkins安装目录和Home路径,可以规避很多权限问题,具体就不在此进行介绍了。
网友评论