Jenkins安裝埃儿、配置器仗、構(gòu)建、腳本童番、配置郵箱精钮、上傳fir

Jenkins好處:

  1. 縮減開發(fā)周期,快速迭代版本
  2. 自動化流水線操作帶來的高效
  3. 隨時可部署
  4. 極大程度避免低級錯誤

Jenkins用處:

  1. 構(gòu)建項目
  2. 跑測試用例檢測bug
  3. 靜態(tài)代碼檢測
  4. 部署

寫在前面

建議公司配的Jenkins服務(wù)器電腦能讓你的電腦對其遠(yuǎn)程操作剃斧,這樣有利于你查閱資料以及保存圖片什么的轨香。

在文章的底部有這次安裝到實現(xiàn)位遇到的各種錯誤,雖然過程中也有解答幼东,但是下面的錯誤是比較耗時的臂容,如果你遇到了問題,可以去本文的問題列表觀看一下根蟹。

安裝方法:

安裝與準(zhǔn)備

1.安裝Home brew

在這里統(tǒng)一采用Home brew安裝脓杉,如果沒有brew請參考安裝方法

2.安裝java環(huán)境

安裝java環(huán)境娜亿,在終端輸入brew install Caskroom/cask/java
安裝過程如圖1顯示:

圖1.jpg

安裝后在終端執(zhí)行brew cask reinstall java操作丽已,在這期間會讓你輸入用戶密碼蚌堵,完成結(jié)果如圖2

圖2.jpg

執(zhí)行完畢之后买决,在終端輸入brew cask install caskroom/versions/java8,期間還會讓你輸入用戶密碼。完成結(jié)果如圖3

圖3.jpg

3.安裝jenkins

方法一

Jenkins官網(wǎng)上下載最新的pkg安裝包,如果是pkg安裝吼畏,那么選擇的時候不要安裝到shared目錄下督赤,默認(rèn)是shared目錄下。(也可以下載jenkins.war, 然后運行Java -jar jenkins.war泻蚊,進(jìn)行安裝躲舌。)

以前是使用pkg安裝的,Mac下面會有很多權(quán)限的問題性雄,使用brwe安裝是新的安裝方法没卸,以前沒有使用過羹奉,不過本次我會采用這個方法安裝。

方法二:

使用brew安裝约计,如果沒有brew請參考安裝方法诀拭,brew安裝方法以及使用說明

1.brew安裝jenkins
brew install jenkins

2.鏈接 launchd 配置文件
ln -sfv /usr/local/opt/jenkins/*.plist ~/Library/LaunchAgents
如果要其他機(jī)器也可以訪問煤蚌,把ip地址改為廣播地址:<string>--httpListenAddress=0.0.0.0</string>

3.然后執(zhí)行命令
launchctl load ~/Library/LaunchAgents/homebrew.mxcl.jenkins.plist

在執(zhí)行這句命令的時候可能會報錯耕挨,錯誤信息
/Users/apple/Library/LaunchAgents/homebrew.mxcl.jenkins.plist: Not a directory
那么該錯誤如何解決呢?方法如下尉桩,在終端輸入cd Library,找到LaunchAgents筒占,這個LaunchAgents現(xiàn)在可能是一個plist文件,復(fù)制這個文件名字蜘犁,刪除該plist文件翰苫,<mark>創(chuàng)建文件夾LaunchAgents</mark>,然后重新執(zhí)行2號命令

4.命令行啟動Jenkins
jenkins

5.打開瀏覽器,輸入 localhost:8080 就可看到Jenkins的web界面,如果你更換了端口就是你后來設(shè)置的端口

安裝Jenkins遇到的問題

1.在終端不啟動Jenkins的情況下(沒有在終端輸入Jenkins回車的情況)这橙,在Safari輸入localhost:8080革骨,卻說找不到頁面的情況,是因為沒有啟動Jenkins服務(wù)析恋,解決方法是開機(jī)默認(rèn)啟動Jenkins

設(shè)置開機(jī)啟動
sudo launchctl load -w /Library/LaunchDaemons/org.jenkins-ci.plist 
取消開機(jī)啟動
sudo launchctl unload -w /Library/LaunchDaemons/org.jenkins-ci.plist 

2.Jenkenis報錯:該jenkins實例似乎已離線,解決方法如下

安裝插件那個頁面良哲,就是提示你offline的那個頁面,不要動助隧。然后打開一個新的tab筑凫,輸入網(wǎng)址http://localhost:8080/pluginManager/advanced。 這里面最底下有個【升級站點】并村,把其中的鏈接改成http的就好了巍实,http://updates.jenkins.io/update-center.json。 然后在服務(wù)列表中關(guān)閉jenkins哩牍,再啟動棚潦,這樣就能正常聯(lián)網(wǎng)了

另附上更換端口命令,該命令如果不能更改端口膝昆,請更改命令上的路徑丸边,對應(yīng)上你的這個文件

sudo defaults write /Library/Preferences/org.jenkins-ci httpPort 7070

配置Jenkins

1.登陸頁面

打開Jenkins后會讓去一個填寫token的頁面如圖4,存儲token的地方就是圖片上那行紅色字體目錄下荚孵,使用終端 open + 紅色字體就看到了
圖4.jpg

接下來會讓你創(chuàng)建一個管理員賬戶妹窖,如圖5
圖5.jpg

2.安裝插件

打開系統(tǒng)管理,管理插件詳見圖6
圖6.jpg

選擇插件收叶,如果你的代碼是在gitlab上面骄呼,在“可選插件”中選中“GitLab Plugin”和“Gitlab Hook Plugin”這兩項,然后安裝,安裝完畢后蜓萄,再次選擇Xcode插件隅茎,在“可選插件”中選中“Xcode integration”安裝,其他插件根據(jù)你的需求選擇即可嫉沽。

3.配置Keychains and Provisioning Profiles Management

接下來配置Keychains and Provisioning Profiles Management患膛,根據(jù)順序選擇系統(tǒng)管理>Keychains and Provisioning Profiles Management如圖7

圖7.jpg

需要上傳login.keychain文件,該文件獲取方法耻蛇,在終端中輸入
cd ~/Library/Keychains

在終端鍵入ls詳見圖8

圖8.jpg

將login.keychain文件upload之后踪蹬,會出現(xiàn)圖9的界面
圖9.jpg

根據(jù)需要將證書添加進(jìn)去即可,但是由于macOS10.12以及以后的系統(tǒng)里面沒有l(wèi)ogin.keychain文件臣咖,只有l(wèi)ogin.keychain-db,可以復(fù)制出來刪除-db跃捣,也可以創(chuàng)建一個快捷方式名字叫做login.keychain,upload就好了夺蛇。
然后添加Provisioning Profiles疚漆,上傳方法和上傳login.keychain一樣,去選擇Provisioning Profiles文件刁赦,然后upload娶聘,然后結(jié)果如下圖,藍(lán)色框內(nèi)的是固定格式的/Users/用戶名/Library/MobileDevice/Provisioning Profiles

圖10.jpg

創(chuàng)建一個任務(wù)

然后創(chuàng)建一個任務(wù)甚脉,自由風(fēng)格的任務(wù)丸升,因為構(gòu)建方法會有兩種,除了共同的地方,構(gòu)建會分為兩部分解答牺氨,第一部分是macOS10.12以前的構(gòu)建方法狡耻,但是由于Jenkins的Xcode和Mac的系統(tǒng)版本問題,所以建議使用第二種方法猴凹。

General

創(chuàng)建一個自由風(fēng)格的任務(wù)夷狰,然后在選擇丟棄舊的構(gòu)建,至于天數(shù)和保持的最大個數(shù)郊霎,按照自己的需求來就好沼头,如圖11


圖11.jpg

源碼管理

接下來是源碼管理,在Repository URL里面添加你的git地址书劝,我這里添加的是http的进倍,如果你的項目是使用的ssh的,那么就將git開頭的地址填寫上庄撮,然后店家Add添加你的git帳號背捌,如果你的事ssh的,將ssh的密匙填寫上洞斯,具體的自己百度一下就好咯,我就不多寫了,結(jié)果如圖12

圖12.jpg

構(gòu)建觸發(fā)器

接下來是構(gòu)建觸發(fā)器烙如,也就是什么時候觸發(fā)自動打包我這里填寫的是H 20 * * *這個意思就是H小時然后么抗,后面跟著數(shù)字,在后面就是日月年亚铁,*代表的我認(rèn)為是每次都觸發(fā)蝇刀,也就是每天每月每年,但是Jenkins的時間不是絕對的徘溢,一般都是在隨機(jī)在半點吞琐,也就是設(shè)置20點,大概會在20:30分左右會觸發(fā)然爆,如果需要兩個時間站粟,那么格式可以這樣H 20,22 * * *結(jié)果如圖13

圖13.jpg

構(gòu)建環(huán)境

在構(gòu)建環(huán)境里面勾選Keychains and Code Signing IdentitiesMobile Provisioning ProfilesKeychains and Code Signing Identities是打包需要的證書曾雕,Mobile Provisioning Profiles是打包需要的配置文件奴烙,都是可以自己選擇的,我的如圖14

圖14.jpg

<mark>接下來就是構(gòu)建了剖张,因為Jenkins對新版的Xcode插件兼容不好切诀,只能用腳本來打包,但是老版本的Xcode可以使用Jenkins的Xcode插件搔弄,下面將構(gòu)建一位使用Xcode插件的幅虑,構(gòu)建二是腳本的</mark>

構(gòu)建一,使用Xcode插件

在構(gòu)建里面點擊增加構(gòu)建步驟顾犹,然后點擊Xcode.

General build settings

Target里面填寫你的項目名稱翘单,Clean before build勾選YES,勾選Pack application, build and sign .ipa?蹦渣,然后會有新的選項Export method是你要打的包的類型哄芜,就是你在手動打包的時候選額的ad-hoc或者Appstore那四個選項,這個按照你要打的類型填寫柬唯,.ipa filename pattern是你打出包ipa的名字认臊,我的這里填寫了項目名字和-$(BUILD_DATE),意思就是在后面追加時間锄奢,Output directory是導(dǎo)出ipa的目錄失晴,如果不填寫,會在Jenkins默認(rèn)的目錄.
詳見圖15

圖15.jpg

Code signing & OS X keychain options

勾選Unlock Keychain?,在Keychain path那里填寫${HOME}/Library/Keychains/login.keychain,意思是找到你的login.keychain(登陸鑰匙串)拘央,如果你的事復(fù)制出來改的名字涂屁,那么就填寫你相對應(yīng)的目錄,Keychain password就是你電腦的登陸密碼灰伟。詳見圖16

圖16.jpg

Advanced Xcode build options

勾選Clean test reports?拆又,如果你使用了cocoapods那么填寫Xcode Workspace File儒旬,如果沒有使用cocoapods填寫Xcode Project Directory,然后填寫Build output directory就是你到處ipa的路徑,詳見圖17

圖17.jpg

構(gòu)建二帖族,使用腳本

因為Jenkins對現(xiàn)在的Xcode9插件兼容性不好栈源,打不了包,所以我們使用了xcodebuild打包竖般,下面是我的腳本甚垦,并且里面附上了自己非常詳細(xì)的注釋,可能有點啰嗦涣雕。

#!/bin/sh

#因為Jenkins打包可能是自動的艰亮,那么build號是不會自己再去修改然后push到git上面的,所以這個buildPlist就是修改build號的路徑挣郭。
buildPlist="/Users/apple/.jenkins/workspace/longxin_a/eCloud/Build/LongHu/Config/eCloud-Info.plist"

#這個獲取現(xiàn)在的 月日時分 用它來做build號
buildNumber=$(date +"%m%d%H%M")

#修改plist文件需要/usr/libexec/PlistBuddy -c命令迄埃,CFBundleVersion是修改的這個build號,$buildNumber是你要修改的數(shù)值丈屹,$buildPlist是你修改哪個地方的plist文件调俘。
/usr/libexec/PlistBuddy -c "Set :CFBundleVersion $buildNumber" "$buildPlist"

#這個是獲取當(dāng)前的build號,本來是用來看看有沒有修改成功的
#newBuildName=$(/usr/libexec/PlistBuddy -c "print :CFBundleVersion" "$buildPlist")
#這個是打印旺垒,帶自動換行的打印
echo $newBuildName 

#因為我怕他修改plist的時候需要時間彩库,所以索性在這里我讓他等了3秒,當(dāng)然你也可以去掉
sleep 3

#這個buildPath是到時候我生成xcarchive文件的路徑和打ipa時候需要找到xcarchive的路徑
buildPath="/Users/apple/.jenkins/workspace/longxin_a/build/Release-iphoneos/eCloud.xcarchive"

#這個路徑是我生成ipa的路徑
ipaPath="/Users/apple/Documents/longhuBuild/"

#這個是ExportOptions.plist的路徑先蒋,有這個就不用在用腳本寫證書了骇钦,這個plist你只要手動打過包,那么在生成ipa的文件夾里面就會有竞漾,找一個自己不經(jīng)常修改的地方放在那里眯搭,寫上這個路徑就好,當(dāng)然如果你不想這么做业岁,想用shell語言設(shè)置證書鳞仙,我會在 問題 列表里面有介紹
exportOptionsplistPath='/Users/apple/.jenkins/workspace/ExportOptions.plist'

#因為我使用了cocoapods所以這里用的-workspace,如果你沒有使用cocoapods使用-project笔时,下面的命令都一樣
#這個命令主要是用來clean棍好,clean的是Release的路徑,clean的是/Users/app***eCloud.xcworkspace路徑的eCloud允耿,
xcodebuild -workspace /Users/apple/.jenkins/workspace/longxin_a/eCloud.xcworkspace -scheme eCloud -configuration "Release" clean

#這個是生成xcarchive借笙,Release的
xcodebuild -workspace /Users/apple/.jenkins/workspace/longxin_a/eCloud.xcworkspace -scheme eCloud -archivePath ${buildPath} -configuration "Release" archive

#這個是將xcarchive文件打包成ipa
xcodebuild -exportArchive -archivePath ${buildPath} -exportPath ${ipaPath} -exportOptionsPlist ${exportOptionsplistPath} -allowProvisioningUpdates

郵箱通知

到這里,其實你就已經(jīng)打包成功了较锡,但是打包成功后是不是我們需要通知一些人呢业稼?Jenkins是有郵件通知的。
現(xiàn)在開始設(shè)置蚂蕴,首先你已經(jīng)安裝了插件Email Extension Plugin低散,這個在插件那里直接安裝就好這是第一步俯邓;

然后進(jìn)入系統(tǒng)管理->系統(tǒng)設(shè)置找到Jenkins Location模塊,在系統(tǒng)管理員郵件地址填寫你的系統(tǒng)管理郵箱谦纱,這個郵箱是你發(fā)送通知郵件的郵箱看成,
然后找到Extended E-mail Notification模塊
填寫方法如圖18圖19

圖18.jpg

圖19.jpg

然后找到構(gòu)建后操作君编,點擊增加構(gòu)建后的操作步驟點擊Editable Email Notification跨嘉,在Project From里面寫上管理者郵箱,也就是發(fā)送郵件的郵箱吃嘿,然后點擊Advanced Setting;
里面有三個選項祠乃,分別是你在系統(tǒng)設(shè)置里面勾選的那幾個,根據(jù)需求填寫就好兑燥,我這里填寫的是Always亮瓷,也就是無論構(gòu)建成功還是失敗,Recipient List是接收者的郵箱,這里多個郵箱用英文逗號隔開——','詳見圖20

圖20.png

上傳到fir

先去下載fir插件

然后在Jenkins里面點擊系統(tǒng)管理->管理插件->高級降瞳,然后滑動到上傳插件那里嘱支,選擇剛才下載的插件,點擊上傳挣饥,等待上傳成功后除师,進(jìn)入到你的項目配置里面滑動到最下面,也就是找到構(gòu)建后操作扔枫,點擊增加構(gòu)建后操作步驟汛聚,選擇Upload to fir.im,打開你的瀏覽器短荐,打開fir官方網(wǎng)站,獲取方法見圖21

圖21.jpg

然后輸入你的IPA/APK Files (optional)這個是你ipa的路徑倚舀,如果不選擇,會是Jenkins默認(rèn)的路徑

這里有fir的官方文檔忍宋,根據(jù)fir的官方文檔即可就可以Jenkins上傳到fir文檔

問題

  • 進(jìn)入目錄~/Library/Keychains找不到login.keychain文件(在macOS High Sierra 10.12以后找不到login.keychain)痕貌,但是Keychains and Provisioning Profiles Management里面之能上傳 keychain 和 mobileprovision 格式的文件,我的做法是兩種辦法:

    1.login.keychain-db復(fù)制到桌面糠排,然后改名字為login.keychain舵稠;

    2.在終端輸入ln -s ~/Library/Keychains/login.keychain-db ~/Library/Keychains/login.keychain制作一個login.keychain-db的替身,也就是俗稱的快捷方式乳讥。

  • 控制臺報錯輸出

FATAL: String index out of range: 15
java.lang.StringIndexOutOfBoundsException: String index out of range: 15
at java.lang.String.substring(String.java:1963)
at com.sic.plugins.kpp.provider.KPPBaseProvisioningProfilesProvider.removeUUIDFromFileName(KPPBaseProvisioningProfilesProvider.java:171)
at com.sic.plugins.kpp.model.KPPProvisioningProfile.getProvisioningProfileFilePath(KPPProvisioningProfile.java:76)
at com.sic.plugins.kpp.KPPProvisioningProfilesBuildWrapper.copyProvisioningProfiles(KPPProvisioningProfilesBuildWrapper.java:157)
at com.sic.plugins.kpp.KPPProvisioningProfilesBuildWrapper.setUp(KPPProvisioningProfilesBuildWrapper.java:99)
at hudson.model.BuildBuildExecution.doRun(Build.java:157) at hudson.model.AbstractBuildAbstractBuildExecution.run(AbstractBuild.java:504)
at hudson.model.Run.execute(Run.java:1794)
at hudson.model.FreeStyleBuild.run(FreeStyleBuild.java:43)
at hudson.model.ResourceController.execute(ResourceController.java:97)
at hudson.model.Executor.run(Executor.java:429)
Finished: FAILURE

這是因為當(dāng)時沒有在Keychains and Provisioning Profiles Management里面上傳配置文件導(dǎo)致的柱查,上傳配置文件的方法和上傳login.keychain一樣,選擇那個配置文件云石,點擊upload唉工,配置文件存在你電腦的`/Users/‘電腦用戶名稱’/Library/MobileDevice/Provisioning Profiles`目錄下。
  • xcode-select: error: tool 'xcodebuild' requires Xcode, but active developer directory '/Library/Developer/CommandLineTools' is a command line tools instance
    FATAL: Check your Xcode installation. Jenkins cannot retrieve its version.
    Build step 'Xcode' marked build as failure
    Finished: FAILURE

    這個問題是說我的Xcode路徑不對汹忠,在終端輸入sudo xcode-select --switch /Applications/Xcode.app/Contents/Developer/解決淋硝。

如果要查看Xcode現(xiàn)在的安裝路徑雹熬,使用命令行xcode-select -print-path

  • 錯誤

    == Available schemes
    [Jenkins的項目名字] /usr/bin/xcodebuild -list -workspace(WORKSPACE)/eCloud.xcworkspace
    xcodebuild: error: '$(WORKSPACE)/eCloud.xcworkspace' does not exist.

    Build step 'Xcode' marked build as failure
    Finished: FAILURE

    這個錯誤是說我們選擇的項目路徑,也就是需要打包的工作路徑谣膳、文件不對竿报,修改方法為,
    在Jenkins項目配置里面继谚,找到構(gòu)建烈菌,點擊增加構(gòu)建步驟,選擇Advanced Xcode build options花履,找到Xcode Workspace File填寫你的工作路徑芽世,如過你是使用這篇文章的安裝方法安裝的Jenkins,也就是Home brew安裝的诡壁,那么你的工作路徑應(yīng)該在/Users/用戶/.jenkins/workspace/Jenkins創(chuàng)建的項目/項目名稱济瓢,比如我們的項目叫做'Almost',用戶是'liuxiansheng',在Jenkins上創(chuàng)建的項目叫做'Almost_a'妹卿,那么這個路徑應(yīng)該是/Users/liuxiansheng/.jenkins/workspace/Almost_a/Almost
    另附圖--路徑不對

    路徑不對.jpg

  • 錯誤

The following build commands failed:
PhaseScriptExecution [CP]\ Check\ Pods\ Manifest.lock /Users/apple/Library/Developer/Xcode/DerivedData/eCloud-bdxpnthrsouuyofxsgtiblngntsr/Build/Intermediates.noindex/ArchiveIntermediates/eCloud/IntermediateBuildFilesPath/eCloud.build/Release-iphoneos/eCloud.build/Script-EE80A86E85F13053B6498D87.sh
(1 failure)
Build step 'Xcode' marked build as failure
Finished: FAILURE

  • Jenkins報出錯誤

diff: /Podfile.lock: No such file or directory
diff: /Manifest.lock: No such file or directory
error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.

** ARCHIVE FAILED **

The following build commands failed:
PhaseScriptExecution [CP]\ Check\ Pods\ Manifest.lock /Users/apple/Library/Developer/Xcode/DerivedData/eCloud-bdxpnthrsouuyofxsgtiblngntsr/Build/Intermediates.noindex/ArchiveIntermediates/eCloud/IntermediateBuildFilesPath/eCloud.build/Release-iphoneos/eCloud.build/Script-EE80A86E85F13053B6498D87.sh
(1 failure)
Build step 'Xcode' marked build as failure
Finished: FAILURE

但是我們從Jenkins上面基本看不出什么錯誤信息來旺矾,打開終端進(jìn)入Jenkins工作目錄,我們根據(jù)Jenkins的錯誤提示得知是因為Jenkins不能順利執(zhí)行pod install所以夺克,我們在目錄下執(zhí)行這個命令箕宙,得到錯誤,因為我自己的錯誤丟失了懊直,具體的也就不說了扒吁,說一下解決方案和過程,當(dāng)使用pod install之后室囊,會列出你的系統(tǒng)ruby雕崩、cocoapods、系統(tǒng)融撞、xcode盼铁、java等版本,我是使用sudo命令將cocoapods卸載尝偎,從新安裝饶火,使用rvm list known和rvm list查詢自己的安裝記錄和現(xiàn)有的版本,如果不是最新的致扯,使用rvm install ruby最新版本肤寝,完成后使用 rvm use ruby最新版本切換,然后就可以pod成功抖僵,Jenkins也就不會報那個錯誤了鲤看。

在這里再說一句,切換ruby的時候可能你要使用rvm use ruby最新版本 --default命令耍群,這個是切換ruby版本并設(shè)成默認(rèn)

  • Jenkins報錯

error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.

明明我已經(jīng)升級了ruby义桂,也親自使用命令行pod install成功了找筝,那么為什么還報這個錯誤呢,好慷吊,到這里先找一下錯誤的原因袖裕,在你的項目目錄下打開Podfile.lockManifest.lock文件對比一下,是不是不一樣溉瓶,尤其是最后一行COCOAPODS: 1.5.2可能不一樣急鳄,版本要對象,出現(xiàn)這個問題就是你們協(xié)同開發(fā)的時候沒有忽略文件嚷闭,這個文件是不需要上傳到git上面的攒岛,自己本地有就行了赖临,因為每個人cocoapods版本可能都不是一樣的胞锰,解決方案,創(chuàng)建.gitignore文件兢榨,將Podfile.lock忽略嗅榕。

那么問題又來了,可能你將Podfile.lock加入了.gitignore文件里面吵聪,但是不生效啊凌那,解決方案跳轉(zhuǎn)到git基本操作、stash暫存吟逝、stash找回帽蝶、創(chuàng)建分支、git忽略文件按照git忽略文件就好了

  • Jenkins報出錯誤
** ARCHIVE SUCCEEDED **

Cleaning up previously generated .ipa files
Cleaning up previously generated .dSYM.zip files
Packaging IPA
[longxin_a] $ /usr/libexec/PlistBuddy -c "Print :ApplicationProperties:CFBundleVersion" /Users/apple/Documents/longhuBuild/eCloud.xcarchive/Info.plist
[longxin_a] $ /usr/libexec/PlistBuddy -c "Print :ApplicationProperties:CFBundleShortVersionString" /Users/apple/Documents/longhuBuild/eCloud.xcarchive/Info.plist
Packaging eCloud.xcarchive => /Users/apple/Documents/longhuBuild/eCloud-$(BUILD_DATE).ipa
[longxin_a] $ /usr/bin/xcodebuild -exportArchive -archivePath /Users/apple/Documents/longhuBuild/eCloud.xcarchive -exportPath /Users/apple/Documents/longhuBuild -exportOptionsPlist /Users/apple/Documents/longhuBuild/ad-hocExportOptions.plist -allowProvisioningUpdates
2018-05-28 15:43:33.337 xcodebuild[91233:333051] [MT] IDEDistribution: -[IDEDistributionLogging _createLoggingBundleAtPath:]: Created bundle at path '/var/folders/xg/wlxwht_j4yg08771094c51g40000gn/T/eCloud_2018-05-28_15-43-33.336.xcdistributionlogs'.
2018-05-28 15:43:33.697 xcodebuild[91233:333051] [MT] IDEDistribution: Step failed: <IDEDistributionSigningAssetsStep: 0x7f80153019d0>: Error Domain=IDEDistributionSigningAssetStepErrorDomain Code=0 "Locating signing assets failed." UserInfo={NSLocalizedDescription=Locating signing assets failed., IDEDistributionSigningAssetStepUnderlyingErrors=(
    "Error Domain=IDEProvisioningErrorDomain Code=9 \"\"eCloud.app\" requires a provisioning profile with the Push Notifications and App Groups features.\" UserInfo={NSLocalizedDescription=\"eCloud.app\" requires a provisioning profile with the Push Notifications and App Groups features., NSLocalizedRecoverySuggestion=Add a profile to the \"provisioningProfiles\" dictionary in your Export Options property list.}",
    "Error Domain=IDEProvisioningErrorDomain Code=9 \"\"eCloudShareExtension.appex\" requires a provisioning profile with the App Groups feature.\" UserInfo={NSLocalizedDescription=\"eCloudShareExtension.appex\" requires a provisioning profile with the App Groups feature., NSLocalizedRecoverySuggestion=Add a profile to the \"provisioningProfiles\" dictionary in your Export Options property list.}"
)}
error: exportArchive: "eCloud.app" requires a provisioning profile with the Push Notifications and App Groups features.

Error Domain=IDEProvisioningErrorDomain Code=9 ""eCloud.app" requires a provisioning profile with the Push Notifications and App Groups features." UserInfo={NSLocalizedDescription="eCloud.app" requires a provisioning profile with the Push Notifications and App Groups features., NSLocalizedRecoverySuggestion=Add a profile to the "provisioningProfiles" dictionary in your Export Options property list.}

error: exportArchive: "eCloudShareExtension.appex" requires a provisioning profile with the App Groups feature.

Error Domain=IDEProvisioningErrorDomain Code=9 ""eCloudShareExtension.appex" requires a provisioning profile with the App Groups feature." UserInfo={NSLocalizedDescription="eCloudShareExtension.appex" requires a provisioning profile with the App Groups feature., NSLocalizedRecoverySuggestion=Add a profile to the "provisioningProfiles" dictionary in your Export Options property list.}

** EXPORT FAILED **

Failed to build /Users/apple/Documents/longhuBuild/eCloud-$(BUILD_DATE).ipa
Build step 'Xcode' marked build as failure
Finished: FAILURE 

這個錯誤是你的證書沒有匹配上块攒,有幾種可能励稳,可能你的證書添加的不對,可能你的shell語言不對囱井,可能添加對了驹尼,但是在構(gòu)建環(huán)境的時候選擇錯了,我遇到的是配置文件沒有添加庞呕。

  • Jenkins報出錯誤

note: Execution policy exception registration failed and was skipped: Error Domain=NSPOSIXErrorDomain Code=1 "Operation not permitted" (in target 'xxxx-xxxx' from project 'Pods')

這個問題出現(xiàn)的可能較小新翎,出現(xiàn)這個問題的原因是,當(dāng)你的打包機(jī)更新了新的證書或者需要執(zhí)行信任的文件時住练,需要在本地編譯一下地啰,執(zhí)行信任,并總是允許讲逛。

----------------------------------

更多Jenkins執(zhí)行pod命令的錯誤請看Jenkins使用腳本執(zhí)行pod命令結(jié)果報錯

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末亏吝,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子妆绞,更是在濱河造成了極大的恐慌顺呕,老刑警劉巖枫攀,帶你破解...
    沈念sama閱讀 206,482評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異株茶,居然都是意外死亡来涨,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,377評論 2 382
  • 文/潘曉璐 我一進(jìn)店門启盛,熙熙樓的掌柜王于貴愁眉苦臉地迎上來蹦掐,“玉大人,你說我怎么就攤上這事僵闯∥钥梗” “怎么了?”我有些...
    開封第一講書人閱讀 152,762評論 0 342
  • 文/不壞的土叔 我叫張陵鳖粟,是天一觀的道長社裆。 經(jīng)常有香客問我,道長向图,這世上最難降的妖魔是什么泳秀? 我笑而不...
    開封第一講書人閱讀 55,273評論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮榄攀,結(jié)果婚禮上嗜傅,老公的妹妹穿的比我還像新娘。我一直安慰自己檩赢,他們只是感情好吕嘀,可當(dāng)我...
    茶點故事閱讀 64,289評論 5 373
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著贞瞒,像睡著了一般偶房。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上憔狞,一...
    開封第一講書人閱讀 49,046評論 1 285
  • 那天蝴悉,我揣著相機(jī)與錄音,去河邊找鬼瘾敢。 笑死拍冠,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的簇抵。 我是一名探鬼主播庆杜,決...
    沈念sama閱讀 38,351評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼碟摆!你這毒婦竟也來了晃财?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 36,988評論 0 259
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎断盛,沒想到半個月后罗洗,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,476評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡钢猛,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,948評論 2 324
  • 正文 我和宋清朗相戀三年伙菜,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片命迈。...
    茶點故事閱讀 38,064評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡贩绕,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出壶愤,到底是詐尸還是另有隱情淑倾,我是刑警寧澤,帶...
    沈念sama閱讀 33,712評論 4 323
  • 正文 年R本政府宣布征椒,位于F島的核電站娇哆,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏陕靠。R本人自食惡果不足惜迂尝,卻給世界環(huán)境...
    茶點故事閱讀 39,261評論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望剪芥。 院中可真熱鬧,春花似錦琴许、人聲如沸税肪。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,264評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽益兄。三九已至,卻和暖如春箭券,著一層夾襖步出監(jiān)牢的瞬間净捅,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,486評論 1 262
  • 我被黑心中介騙來泰國打工辩块, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留蛔六,地道東北人。 一個月前我還...
    沈念sama閱讀 45,511評論 2 354
  • 正文 我出身青樓废亭,卻偏偏與公主長得像国章,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子豆村,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 42,802評論 2 345

推薦閱讀更多精彩內(nèi)容