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中查看。



0 0
原创粉丝点击