使用Jenkins+git+Cocoapods+gradle搭建iOS,android持续集成环境

搭建Jenkins遇到问题

权限问题

在Mac环境下,我们需要先安装JDK,然后在Jenkins的官网下载最新的war包。

D3B7AE8B-E56B-4407-97E9-7E6E356BCD4F.png
E212331B-5960-467C-AE88-7C2B8CF87191.png

直接点击xxxx.war下载,不要点击三角选择Mac OS x,不要下载.dmg,因为dmg安装后会专门生成一个jenkins用户,导致要是不在这个用户下边就会出现权限问题,考虑到想让登录到这台mac的所有用户都可以操作jenkins,所以不要安装dmg。

iOS构建

#!/bin/bash -lx
export LC_ALL="en_US.UTF-8"

cd path项目文件夹

pod update --verbose --no-repo-update

security unlock-keychain -p "密码" /Library/Keychains/System.keychain

#改签名文件设置
sed -i '' 's/ProvisioningStyle = Automatic;/ProvisioningStyle = Manual;/' xx.xcodeproj/project.pbxproj

#sed -i '' 's/"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";/"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";/' xx.xcodeproj/project.pbxproj
#sed -i '' 's/DEVELOPMENT_TEAM = xx;/DEVELOPMENT_TEAM = "iPhone Developer: xx (xx)";/' xx.xcodeproj/project.pbxproj
#sed -i "" s/'PROVISIONING_PROFILE = "";'/'PROVISIONING_PROFILE = "xx-xx-xx-xx-xx";'/g xx.xcodeproj/project.pbxproj 
#sed -i '' 's/PROVISIONING_PROFILE_SPECIFIER = "";/PROVISIONING_PROFILE_SPECIFIER = xx_DEV;/' xx.xcodeproj/project.pbxproj

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

nowdate=`date "+%Y-%m-%d"`
app_version=$(/usr/libexec/PlistBuddy -c "Print :CFBundleShortVersionString" "${WORKSPACE}/xx/Info.plist")
packinfo=$app_version'_'$nowdate'_'${BUILD_NUMBER}

sed -i '' '/CFBundleDevelopmentRegion/i\'$'\n<key>PackVersion</key><string>'"$packinfo"'</string>'$'\n' xx/Info.plist

# Archive the application
xcodebuild \
-workspace "xx.xcworkspace" \
-scheme xx \
-sdk iphoneos \
-archivePath "${WORKSPACE}/builds/xcarchive/xx.xcarchive" \
-configuration Debug \
PROVISIONING_PROFILE="xx-xx-xx-xx-xx" \
archive 

# Export the archive to an ipa
xcodebuild \
-exportArchive \
-archivePath "${WORKSPACE}/builds/xcarchive/xx.xcarchive" \
-exportOptionsPlist "${WORKSPACE}/builds/Enterprise.plist" \
-exportPath ${WORKSPACE}/builds/ipa/

cd builds/ipa/
cp -f xx.ipa /Users/admin/Documents/apacheforipa/xx_last.ipa
mv xx.ipa ${JOB_NAME}_$app_version'_'$nowdate'_'${BUILD_NUMBER}.ipa
cp -f /Users/admin/Documents/apacheforipa/xx.png ${WORKSPACE}/builds/ipa

Enterprise.plist文件

改BundleId

/usr/libexec/PlistBuddy -c "Set :CFBundleIdentifier com.xx.xxInhouse" ${WORKSPACE}/xxchant/xxchant/xxchant-Info.plist
sed -i "" "s/com.xx.xxchant/com.xx.xxchantInhouse/g" ${WORKSPACE}/xxchant/xxchant.xcodeproj/project.pbxproj

为新改的BundleId匹配证书

sed -i '' 's/DevelopmentTeam = xx;/DevelopmentTeam = xx;/' ${WORKSPACE}/xxchant/xxchant.xcodeproj/project.pbxproj
sed -i '' 's/com.apple.Push = {\nenabled = 1;\n};/com.apple.Push = {\nenabled = 0;\n};/' ${WORKSPACE}/xxchant/xxchant.xcodeproj/project.pbxproj
sed -i '' 's/"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer: xx xx (xx)";/"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Distribution";/' ${WORKSPACE}/xxchant/xxchant.xcodeproj/project.pbxproj
sed -i '' 's/DEVELOPMENT_TEAM = LY7Wxxx;/DEVELOPMENT_TEAM = XTYSxxx;/' ${WORKSPACE}/xxchant/xxchant.xcodeproj/project.pbxproj
sed -i '' 's/PRODUCT_BUNDLE_IDENTIFIER = com.xx.xxchant;/PRODUCT_BUNDLE_IDENTIFIER = com.xx.xxchantInhouse;/' ${WORKSPACE}/xxchant/xxchant.xcodeproj/project.pbxproj
sed -i '' 's/PROVISIONING_PROFILE = "xx-xx-xx-xx-xx8a11";/PROVISIONING_PROFILE = "xx-xx-xx-xx-xx88f7";/' ${WORKSPACE}/xxchant/xxchant.xcodeproj/project.pbxproj
sed -i '' 's/PROVISIONING_PROFILE_SPECIFIER = xxchant_dev;/PROVISIONING_PROFILE_SPECIFIER = xxchant_inhouse;/' ${WORKSPACE}/xxchant/xxchant.xcodeproj/project.pbxproj
sed -i '' 's/com.xx.xxchant/com.elong.xxchantInhouse/' ${WORKSPACE}/xxchant/KeychainAccessGroups.plist

发送带附件的邮件

构建后操作中设置Editable Email Notification中的Attachments可以带附件,把所有要带的附件都放这个路径下


26442817-7690-410E-8657-09A08410197B.png

ftp传文件到服务器

系统全局设置插件Publish over FTP


0D743547-8CA1-41AA-97BA-1AC16DBEEFD4.png

D9FFE6E6-CC13-4809-BBAF-1E53E63145B0.png

Jenkins免登陆到服务器

scp /Users/admin/.ssh/id_rsa.pub xx@192.168.233.161:/home/tester/
mv id_rsa.pub ~/.ssh/authorized_keys

Jenkins上传文件到服务器

scp /Users/xx/Downloads/xx.txt xx@192.168.233.161:/home/tester/

Android打包关键设置

build.gradle


F7D29CD4-A82A-4DEF-816B-16C8739EB8C0.png

buildtype设置

2061411-68d1578ee7fcd92e.png.jpeg
7362DF84-68FB-484C-85DC-C0862E740391.png

构建

#!/bin/bash -lx

export LC_ALL="en_US.UTF-8"
echo "==Clear outputs ==========${BUILD_NUMBER}"
rm -fr /Users/admin/.jenkins/workspace/xx_Android/app/build/
6691A373-B7DE-46C2-947A-8BD4C3E56ACC.png
#!/bin/bash -lx

export LC_ALL="en_US.UTF-8"

cd /Users/admin/.jenkins/workspace/xx_Android/app/build/outputs/apk/

echo "QR============${BUILD_NUMBER}"

for file in `ls xx_android*.apk`; do /usr/local/bin/myqr http://192.168.14.246:8085/download/xx_app/xx_android/$file -p /Users/admin/.jenkins/workspace/xx_Android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png -c -v 1 -d /Users/admin/.jenkins/workspace/xx_Android/app/build/outputs/apk/;done;
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,921评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,635评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,393评论 0 338
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,836评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,833评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,685评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,043评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,694评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 42,671评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,670评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,779评论 1 332
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,424评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,027评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,984评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,214评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,108评论 2 351
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,517评论 2 343

推荐阅读更多精彩内容