Jenkins+GitLab+fir.im 持续集成
来源:互联网 发布:传世引擎源码 编辑:程序博客网 时间:2024/05/19 13:20
写在前面
最近公司搞自动化打包,从0开始折腾了几天终于完成了,准备整理一下,写成文档。
1、下载Jenkins并安装
Jenkins下载地址:https://jenkins.io
在主页面点击Download Jenkins选择Mac OS。
安装没有什么好介绍的,双击安装包,按照提示进行就好了。
2、下载Java SDK
Jenkins 需要运行 Java 5以及以上的版本。
下载地址:http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html
3、启动Jenkins
默认安装完Jenkins会在浏览器打开网页:http://localhost:8080/
如果没有自动打开,可以在浏览器打开http://localhost:8080/
或者
命令行启动Jenkins:
启动:
sudo launchctl load /Library/LaunchDaemons/org.jenkins-ci.plist
停止:
sudo launchctl unload /Library/LaunchDaemons/org.jenkins-ci.plist
启动后按照提示文件路径,找到key激活,(文件如果没有权限,可以右键显示简介,下面的用户开启权限)
然后设置Jenkins的管理员账号。
安装Jenkins的默认插件。
4、Jenkins配置
4.1、系统管理
4.1.1、管理插件
选择系统管理->管理插件->可选插件,在需要的插件前点击,选中,点击直接安装
- iOS专用:Xcode integration
- Android专用:Gradle plugin
- Gitlab插件:GitLab Plugin 和 Gitlab Hook Plugin
- Git插件: Git plugin
- GitBuckit插件: GitBuckit plugin
- 签名证书管理插件: Credentials Plugin 和Keychains and Provisioning Profiles Management
- FTP插件: Publish over FTP
- 脚本插件: Post-Build Script Plug-in
- 修改Build名称/描述(二维码): build-name-setter / description setter plugin
- 获取仓库提交的commit log: Git Changelog Plugin
- 自定义全局变量: Environment Injector Plugin
- 自定义邮件插件: Email Extension Plugin
- 获取当前登录用户信息: build-user-vars-plugin
- 显示代码测试覆盖率报表: Cobertura Plugin
- 来展示生成的单元测试报表,支持一切单测框架,如junit、nosetests等: Junit Plugin
- 其它: GIT plugin / SSH Credentials Plugin
点击高级-> 选择文件-> 选择从fim.im中下载的Jenkins插件fir-plugin-1.9.5.hpi ->点击上传
4.1.2 、钥匙串和配置文件管理
选择系统管理->点击 Keychains and Provisioning Profiles Management
点击选择文件按钮,在弹出的文件选择框中选择系统的System.keychain或者login.kenchain。完成后,点击upload上传。
System.keychain文件在目录:
Macintosh HD/Library/Keychains/
Code Signing Identity:打开钥匙串,右击->显示简介->复制常用名称,粘贴到下面就OK了
然后,在本页面再次点击选择文件->在弹出的文件选择框中,选择苹果开发中心的配置文件->点击upload。
Provisioning Profiles Directory Path:可以写成:/Users/Shared/Jenkins/Library/MobileDevice/Provisioning Profiles
点击save 保存就好了。
4.2、 Credentials
这里是可以使用SSH访问GitLab的关键。在key一栏的输入框里面粘贴私有key的内容就好了。生成ssh的方法:
4.3、新建Job
4.3.1 选择类型
这里讲主要内容,其他一些设置可以自己摸索研究。
点击新建 ->输入名字-> 选择第一个 自由风格 ->点击OK
4.3.2 配置Git
选源码管理->选择Git -> Repository URL为项目的Git地址(SSH类型)-> Credentials 选择上面创建的
4.3.3 构建环境
选择构建环境,选中两项 Keychains and Code Signing Identities和Mobile Provisioning Profiles
选择下面截图中的Keychain和Provisioning Profile两项,点击保存,再次进来就会发现其他项已经自动填充了,没有填充的项不是必须填写的
4.3.4 构建脚本
选择构建-> 选择Execute shell
在Command的输入框填写打包脚本。
打包的脚本:
1)没有使用workspace的打包脚本
# 工程名
APP_NAME="JenkinsDemo"
# 证书
CODE_SIGN_DISTRIBUTION="iPhone Distribution: Beijing ****"
# info.plist路径
project_infoplist_path="./${APP_NAME}/platforms/ios/${APP_NAME}/${APP_NAME}-Info.plist"
#取版本号
#bundleShortVersion=$(/usr/libexec/PlistBuddy -c "print CFBundleShortVersionString" "${project_infoplist_path}")
#取build值
#bundleVersion=$(/usr/libexec/PlistBuddy -c "print CFBundleVersion" "${project_infoplist_path}")
#DATE="$(date +%Y%m%d)"
IPANAME="${APP_NAME}_V${bundleShortVersion}_${DATE}.ipa"
#要上传的ipa文件路径
IPA_PATH="$HOME/${IPANAME}"
echo ${IPA_PATH}
echo "${IPA_PATH}">> text.txt
cd ${APP_NAME}
# 修改build版本号
/usr/libexec/PlistBuddy -c "Set :CFBundleVersion $BUILD_NUMBER" "${APP_NAME}/${APP_NAME}-Info.plist"
# 修改版本号
/usr/libexec/PlistBuddy -c "Set :CFBundleShortVersionString $VERSION" "${APP_NAME}/${APP_NAME}-Info.plist"
echo "=================clean================="
xcodebuild -target ${APP_NAME} -configuration 'Release' clean
echo "+++++++++++++++++build+++++++++++++++++"
#xcodebuild -target ${APP_NAME} -scheme "${APP_NAME}" -sdk iphoneos -configuration 'Release' CODE_SIGN_IDENTITY="${CODE_SIGN_DISTRIBUTION}" SYMROOT='$(PWD)'
xcodebuild -project ${APP_NAME}.xcodeproj -target ${APP_NAME} -sdk iphoneos -configuration 'Release' CODE_SIGN_IDENTITY="${CODE_SIGN_DISTRIBUTION}" SYMROOT='$(PWD)'
xcrun -sdk iphoneos PackageApplication "./Release-iphoneos/${APP_NAME}.app" -o ~/"${IPANAME}"
//————————————————————————————————
2)使用workspace的打包脚本(包括cordova混合开发结构)
# 工程名
APP_NAME="Jira_app"
# 证书
CODE_SIGN_DISTRIBUTION="iPhone Distribution: Beijing ****"
# info.plist路径
#project_infoplist_path="./${APP_NAME}/platforms/ios/${APP_NAME}/${APP_NAME}-Info.plist"
#取版本号
#bundleShortVersion=$(/usr/libexec/PlistBuddy -c "print CFBundleShortVersionString" "${project_infoplist_path}")
#取build值
#bundleVersion=$(/usr/libexec/PlistBuddy -c "print CFBundleVersion" "${project_infoplist_path}")
#DATE="$(date +%Y%m%d)"
IPANAME="${APP_NAME}.ipa"
#要上传的ipa文件路径
IPA_PATH="$HOME/${IPANAME}"
echo ${IPA_PATH}
echo "${IPA_PATH}">> text.txt
cd ${APP_NAME}/platforms/ios/
# 修改build版本号
/usr/libexec/PlistBuddy -c "Set :CFBundleVersion $BUILD_NUMBER" "${APP_NAME}/${APP_NAME}-Info.plist"
# 修改版本号
/usr/libexec/PlistBuddy -c "Set :CFBundleShortVersionString $VERSION" "${APP_NAME}/${APP_NAME}-Info.plist"
echo "=================clean================="
xcodebuild -workspace "${APP_NAME}.xcworkspace" -scheme "${APP_NAME}" -configuration 'Release' clean
echo "+++++++++++++++++build+++++++++++++++++"
xcodebuild -workspace "${APP_NAME}.xcworkspace" -scheme "${APP_NAME}" -sdk iphoneos -configuration 'Release' CODE_SIGN_IDENTITY="${CODE_SIGN_DISTRIBUTION}" SYMROOT='$(PWD)'
xcrun -sdk iphoneos PackageApplication "./Release-iphoneos/${APP_NAME}.app" -o ~/"${IPANAME}"
3)xcode8后的打包命令
echo ${VERSION}.${BUILD_NUMBER}
#widget
WIDGET="RTSgccWidget"
# 工程名
PROJECT_NAME="sgcc-app"
APP_NAME="RTSgcc"
# 证书
CODE_SIGN_DISTRIBUTION="iPhone Distribution: Beijing Rowena Technology Co., Ltd. (K749AEADAX)"
# info.plist路径
project_infoplist_path="./${APP_NAME}/platforms/ios/${APP_NAME}/${APP_NAME}-Info.plist"
#取版本号
#bundleShortVersion=$(/usr/libexec/PlistBuddy -c "print CFBundleShortVersionString" "${project_infoplist_path}")
#取build值
#bundleVersion=$(/usr/libexec/PlistBuddy -c "print CFBundleVersion" "${project_infoplist_path}")
#DATE="$(date +%Y%m%d)"
IPANAME="${APP_NAME}.ipa"
#要上传的ipa文件路径
IPA_PATH="$HOME/${IPANAME}"
echo ${IPA_PATH}
echo "${IPA_PATH}">> text.txt
cd ${PROJECT_NAME}/platforms/ios/
# 修改build版本号
/usr/libexec/PlistBuddy -c "Set :CFBundleVersion $BUILD_NUMBER" "${APP_NAME}/${APP_NAME}-Info.plist"
# 修改版本号
/usr/libexec/PlistBuddy -c "Set :CFBundleShortVersionString $VERSION" "${APP_NAME}/${APP_NAME}-Info.plist"
echo "=================clean================="
xcodebuild -workspace "${APP_NAME}.xcworkspace" -scheme "${APP_NAME}" -configuration 'Release' clean
echo "+++++++++++++++++build+++++++++++++++++"
xcodebuild archive -workspace "${APP_NAME}.xcworkspace" -scheme "${APP_NAME}" -configuration Release -archivePath "${APP_NAME}.xcarchive"
echo "+++++++++++++++++export ipa+++++++++++++++++"
xcodebuild -exportArchive -archivePath "${APP_NAME}.xcarchive" -exportPath build_app -exportOptionsPlist 'exportOptionsPlist.plist'
需要配置exportOptionsPlist.plist文件
4.3.5 上传fir.im
选择构建后操作步骤- > 选择Upload to fir.im
fir.im Token为注册登录后,可以查看的API Token。
IPA/APK Files (optional) 填写的是.ipa文件的路径
Build Notes 为版本更新的更新日志,会在fir.im上显示
点击保存 - > 立即构建 -> 构建的过程可以在Console Output中查看。
- Jenkins+GitLab+fir.im 持续集成
- Jenkins+GitLab+Gradle+fir.im持续集成安卓
- Jenkins、Git、CocoaPods、Fir.im 实现 iOS 应用持续集成
- 持续集成Gitlab+Jenkins
- gitlab+jenkins持续集成
- Mac下搭建 Jenkins+Github+蒲公英/fir.im 持续集成环境(iOS自动打包)
- Windows系统下基于jenkins+github+fir.im的Android项目持续化集成实例
- Jenkins+Tomcat + Gradle + Tinker + Walle + 360加固 + fir.im 持续集成,自动构建
- fir.im 持续集成技术实践
- fir.im 持续集成技术实践
- Jenkins + Gitlab 搭建持续集成
- salt+jenkins+gitlab持续集成
- Jenkins Gitlab持续集成打包平台搭建
- Jenkins+Gitlab搭建CI持续集成架构
- Jenkins+Gitlab搭建CI持续集成架构
- gitlab + jenkins + sonar java代码持续集成
- 持续集成之Jenkins+Gitlab简介 [一]
- Jenkins Gitlab持续集成打包平台搭建
- fastboot
- AutoCompleteTextView —— 自动完成文本框
- 欢迎使用CSDN-markdown编辑器
- Android开发之----微信支付
- LeetCode:Hamming Distance
- Jenkins+GitLab+fir.im 持续集成
- C C++第三方库的使用以及报错提示未找到库文件的原因
- spring创建bean模式singleton与prototype的区别
- Android应用组件之Service
- python-re模块常用的函数及方法
- Java动态代理整理笔记
- 百万以内素数快速查找
- hdu 3018 Ant Trip (欧拉图+并查集)
- 预计工业物联网市场到2021年达到1238亿美元