jenkins 配置。


為了避免在jenkins操作過程中的權限問題。
將安裝在/Users/Shared/jenkins目錄下的卸載。
sudo launchctl unload /Library/LaunchDaemons/org.jenkins-ci.plist
之后安裝在/Users/LoginName/Jenkins 目錄下
java -jar /Applicaitons/Jenkins/jenkins.war --httpPort:8080
一個小問題。在設置Editable Email Notificaiton 時。
Triggers 中的Send To 不能是Developers應該用Recipient list

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 Release clean build -sdk iphoneos archive -archivePath ${WORKSPACE}/builds/${BUILD_NUMBER}/archive CODE_SIGN_IDENTITY="iPhone Distribution: Vision Credit  Financial Technology Company Limited (YWEH5GVC2C)"
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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM