利用Jenkins搭建iOS項目可持續化Integration Environment( Continuous Integration 簡稱CI)

來源:互聯網
上載者:User

標籤:編寫   init   簽名   name   title   string   測試   str   工作   

前言

關於Jenkins的相關部落格網上有很多,這裡不再重複說。新進公司要搭建該環境,我也是參考了如下博文:http://www.jianshu.com/p/41ecb06ae95f 文中說的很詳細也不再細說。當然在實際搭建中也遇到了不少的坑,所以特寫此部落格以作補充。

1. 初始密碼擷取

命令列:cd /Users/Shared/Jenkins/Home/ 到目前的目錄,修改/secrets/目錄許可權後使用vim編輯器開啟initialAdminPassword檔案就可以複製裡面的密碼了。

2. 構建環境的認證配置

構建認證環境需要上傳Keychain和Provisioning Profile檔案:Keychain檔案包含打包所需的Code Signing檔案,Provisioning Profile為裝置檔案。其中籤名檔案和裝置檔案可以在開發人員帳號中心擷取,然後安裝在本機上。開啟鑰匙串訪問,在案頭上建立一個空鑰匙串,然後把“鑰匙串-登陸”項中的已安裝後的簽名檔案(包含開發認證和發布認證)拷貝到建立的鑰匙串中然後設定鑰匙串密碼,這樣鑰匙串和裝置檔案準備就緒,然後直接上傳到Jenkins伺服器。上傳成功後就可以在Jenkins新項目的“構建環境”配置中選擇指定的認證了。

3. 構建指令碼編寫

構建過程可以選擇Xcode和指令碼的方式,使用Xcode的話需要安裝外掛程式,這裡選擇執行指令碼來“編譯-打包-匯出ipa-上傳至蒲公英”。參考博文中採用了xcodebuild + xcrun的方式,經驗證在Mac OS 10.12之後xcrun被標記為過時,用Jenkins手動構建的時候會報錯,所以在新版Mac OS中直接用xcodebuild就可以完成所有工作。下面提供我測試時所寫的指令碼:

# 工程名app_name="jenkins-Demo1"# 認證 (CODE_SIGN_DISTRIBUTION),這個部分可以不用,因為已經配置了認證#CODE_SIGN_IDENTITY="iPhone Developer: ~~~"#PROVISIONING_PROFILE_SPECIFIER="~~~~~~~~~~~~~~~~"# info.plist路徑project_infoplist_path="./${app_name}/Info.plist"# 擷取versionbundleShortVersion=$(/usr/libexec/PlistBuddy -c "print CFBundleShortVersionString" "${project_infoplist_path}")# 擷取buildbundleVersion=$(/usr/libexec/PlistBuddy -c "print CFBundleVersion" "${project_infoplist_path}")# 日期IPA_DATE="$(date +%Y%m%d)"# archive名字#ARCHIVE_NAME="${app_name}_V${bundleShortVersion}_${IPA_DATE}.xcarchive"# ipa名字#IPA_NAME="${app_name}_V${bundleShortVersion}_${IPA_DATE}.ipa"# archive 和 ipa 存放目錄ARCHIVE_IPA_CACHE_PATH="$HOME/JenkinsIpas/${IPA_DATE}"# archive路徑ARCHIVE_PATH="${ARCHIVE_IPA_CACHE_PATH}/${app_name}.xcarchive"# ipa路徑IPA_PATH="${ARCHIVE_IPA_CACHE_PATH}"echo ${ARCHIVE_PATH}echo ${IPA_PATH}# cleanecho "-------------clean-------------"xcodebuild -target "${app_name}" -configuration ‘Release‘ clean# buildecho "-------------build-------------"xcodebuild -target "${app_name}" -sdk iphoneos -configuration ‘Release‘# archive 
echo "-------------archive-------------"
#xcodebuild archive -project ${app_name}.xcodeproj -scheme ${app_name} -archivePath ${ARCHIVE_PATH}# 擷取exportOptionsPlistPath路徑exportPlist_path="./${app_name}/exportDevelopment.plist"# 匯出ipaecho "-------------export ipa-------------"#xcodebuild -exportArchive -archivePath ${ARCHIVE_PATH} -exportOptionsPlist ${exportPlist_path} -exportPath ${IPA_PATH}# 上傳至蒲公英echo "-------------upload to pgyer"#UserKey 和 ApiKeyUSER_KEY="c064020a03b0f19cccd3fd82f143cf76"API_KEY="b5f849b038e3761c09b25e03ff1e3c71"#curl -F "[email protected]${IPA_PATH}/${app_name}.ipa" -F "uKey=${USER_KEY}" -F "_api_key=${API_KEY}" https://www.pgyer.com/apiv1/app/upload

需要注意的問題:

  • 上述命令在測試的時候建議一步一步來,先編譯再打包最後匯出ipa,這樣在出錯時容易排查及時修正。
  • 使用-archivePath參數時一定要用-scheme參數,否則Jenkins構建的時候會報錯說找不到scheme,正常情況下一個工程只有一個scheme且名字和工程名相同,用了-scheme參數後經構建測試後還是會報錯是因為scheme預設是私人的,可在工程的Manage Schemes中勾選“Shared”,然後提交到代碼倉庫,Jenkins重新構建後就不會出錯。
  • 匯出ipa的時候需要用到-exportOptionsPlist參數,指定一個plist檔案,配置方法可參考:http://www.cocoachina.com/ios/20170607/19464.html 或者 http://www.jianshu.com/p/bd4c22952e01 或者 http://blog.csdn.net/offbye/article/details/51506256 配置後只要指定了正確的plist路徑就不會出現錯誤。
  • 上傳至蒲公英的時候需要UserKey和ApiKey,這2個參數可以在蒲公英帳號中擷取。
最後

讀者可以在自己的電腦上裝Jenkins環境,然後在GitLab上建立一個公有的程式碼程式庫,在本地建立一個空的工程並上傳到該程式碼程式庫,並指定該庫地址為Jenkins構建時自動拉取的遠程倉庫地址做測試。當然在搭建的過程中可能還是會遇到一些坑,不要煩躁,靜下心嘗試著自己解決,總會有辦法。多實踐,多參考,總會有一些收穫。

利用Jenkins搭建iOS項目可持續化Integration Environment( Continuous Integration 簡稱CI)

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.