新聞ios
Keychain和證書的坑:jenkins安裝之后會自動生成一個(gè)jenkins賬號.但是我們當(dāng)時(shí)是在ios賬號下工作,必須把keychain和證書拷貝到j(luò)enkins的文件夾下,才能有權(quán)限讀取.
Schema:當(dāng)時(shí)一直報(bào)錯說沒有schema文件,后來在xcode中,把我們需要的schema文件勾選中就解決了.
打包仍然不成功,查問題發(fā)現(xiàn)是xcode的版本和ios系統(tǒng)沒有更新.于是更新了一下ios和xcode版本.這一下不要緊,jenkins的主目錄從系統(tǒng)共享下的jenkins文件夾變成了ios賬號下的.jenkins文件夾. 所以進(jìn)去之后發(fā)現(xiàn)所有的配置全部清零了.但當(dāng)時(shí)并不知道是因?yàn)閖enkins的主目錄更換了. 所以又重新配了一遍所有的環(huán)境和證書.
然后這時(shí)ssh校驗(yàn)又通過不了了.跟以前的配置一摸一樣完全沒有改動,但怎么都報(bào)錯.在terminal中用ssh -T 去連接卻是通的.這時(shí)候又崩潰了.根據(jù)報(bào)錯查了很多資料,但是很多情況都會報(bào)這種錯誤,根本沒法定位到問題.最后也是在一個(gè)英文的犄角旮旯的網(wǎng)站上看到說,如果mac的系統(tǒng)更新了,jenkins必須退出重啟服務(wù),ssh才能連上.重啟之后果然好了...
archive成功了,但生成包不成功.在jenkins控制臺輸出的日志中,直接原樣copy命令在terminal中可以打包成功.最后也是找了很多很多資料,嘗試了很多修改,都快要放棄了,打算執(zhí)行命令行打包了.然后想到在jenkins中xcode的插件一直被人詬病說不穩(wěn)定,于是上插件那里看了一下,發(fā)現(xiàn)正好有xcode插件的新版本需要更新.于是更新了一下.更新完之后打包成功…應(yīng)該是因?yàn)閤code剛更新了一個(gè)版本,但我的插件沒有更新,所以用插件打包導(dǎo)致失敗.
其實(shí)ios的坑遠(yuǎn)不止這些,從一開始打包就是一直各種報(bào)錯,不通過,這些雷都一一踩過來了.并且今后的打包也一定會存在各種各樣因?yàn)閕os系統(tǒng)更新和xcode版本產(chǎn)生的問題.所以,坑無止境.
新聞android
因?yàn)閍ndroid和ios的代碼在同一個(gè)gitlab下部署的,訪問賬號一個(gè)是lian哥的,一個(gè)是liao妹子的.所以本機(jī)必須配兩個(gè)ssh,創(chuàng)建config文件指定訪問關(guān)系.
裝環(huán)境的時(shí)候,我直接按照網(wǎng)上說的下載了android的sdk和gradle的最新版本.但是后來開發(fā)說他們安卓的代碼必須用gradle3.3打包才可以.他們有指定了gradle的版本,其他版本是打不過的.于是就用了gradlew build命令去打包,這個(gè)命令會自動去下載gradle3.3版本,和依賴包.但是也是一直打包失敗.以為是gradle版本的問題,因?yàn)橹芭淞谁h(huán)境變量,指定了gradle的文件夾,所以決定把4.9的版本刪除掉.但是刪除之后,每次一build,就會在ios賬號下生成.gradle文件夾,然后去下載一些4.9的東西.也是把4.9的東西能刪的都刪了,環(huán)境變量也刪了,結(jié)果一 -v 每次出來都是4.9的版本信息.最后開發(fā)說這個(gè)應(yīng)該是不影響3.3的下載和打包的.于是在打包時(shí)加了—info和--debug來查看打包的具體情況,發(fā)現(xiàn)是在下載某個(gè)依賴包時(shí),總是循環(huán)一個(gè)建立連接,鎖定,解除鎖定的步驟.一直循環(huán)就是無法下載成功.找不到問題所在.開發(fā)說,他的linux機(jī)器沒問題.但后來他發(fā)現(xiàn)那臺機(jī)器打某一個(gè)分支的時(shí)候,跟我報(bào)了一樣的錯.該分支打包時(shí)的project從master的10個(gè)變成了12個(gè),它需要下載新的依賴包.于是分析應(yīng)該是下載時(shí),建立連接不成功,網(wǎng)絡(luò)問題.這時(shí)又來一個(gè)坑中之坑.因?yàn)檫@個(gè)報(bào)錯之前一條日志,說的是開始建立ssl連接,于是我們以為是端口限制.之前滕菲跟我說過咱們公司封掉了所有ssh的22端口.而當(dāng)時(shí)另一個(gè)開發(fā)說可能是封了ssl的443端口.于是我又去找運(yùn)維問這件事,并附上了報(bào)錯的截圖.運(yùn)維說,是的,公司封掉了這兩個(gè)端口,你可以自己改一下.然后又在網(wǎng)上找資料修改這兩個(gè)默認(rèn)端口號.改完之后,錯誤依舊.于是我想,是不是這臺機(jī)器的問題.因?yàn)殚_發(fā)的linux可以打master.于是我又分別在我的筆記本和臺式機(jī)上進(jìn)行了build.發(fā)現(xiàn)是同樣的報(bào)錯.排除了機(jī)器本身問題.然后我對自己說,能做的都做了啊,現(xiàn)在的問題已經(jīng)不是我能解決的了,先放下避免浪費(fèi)時(shí)間.結(jié)果轉(zhuǎn)天開發(fā)就跟我說他之前失敗的分支可以打成功了.于是我上去試了一下,之前下載依賴包那里果然過去了.嗯,就是咱們公司網(wǎng)絡(luò)問題.樓下的鍋.
本著好奇害死貓的精神,最后讓我找到了gradle的主目錄.原來這個(gè)蘋果系統(tǒng)是搭建在unix系統(tǒng)下的,在蘋果系統(tǒng)以外unix的某個(gè)文件夾下安裝著gradle4.9.
下面這個(gè)命令可以顯示本機(jī)的gradle的安裝路徑
brew info gradle
但這我事先并不知道,而是在多次嘗試中碰巧發(fā)現(xiàn)了這個(gè)命令執(zhí)行后在某個(gè)位置輸出了gradle的路徑.
馬上干掉它! 然后再-v一下,好了.現(xiàn)在是3.3版本了.
視頻android
- 視頻安卓版本打包也有一個(gè)坑.就是ssh的連接.因?yàn)橛辛酥耙粋€(gè)機(jī)器實(shí)現(xiàn)生成多個(gè)ssh匹配不同賬號的經(jīng)驗(yàn),于是直接上了config文件把配置加進(jìn)去了.然后發(fā)現(xiàn),連接失敗.這個(gè)連接失敗的報(bào)錯啊,跟之前ssh的問題一樣,錯誤很簡單,就是聯(lián)不通,但是錯誤產(chǎn)生的原因是多種多樣的,你很難在網(wǎng)上找到屬于你的那個(gè)答案.在看了很多個(gè)回答和做了很多種嘗試之后,依然是連接不上的.這個(gè)時(shí)候,先排除ssh key的問題.因?yàn)橐曨l的代碼是他們自己搭的在一個(gè)gerrit的平臺上,跟github不沖突,所以我直接把ssh配成了之前本機(jī)最原始的ssh,然后把config文件改了一個(gè)亂七八糟的名字.這個(gè)時(shí)候ssh應(yīng)該是不會去訪問這個(gè)config文件了,然后驚喜的發(fā)現(xiàn)這一次連接成功了.那么就一定是config文件配的有問題.但是又并不知道問題在哪里.也是多方查找config文件的模版,終于讓我找到一個(gè)人說,如果有端口號的話需要配置Port參數(shù).是的,視頻的git地址是帶端口號的.這個(gè)端口號在host參數(shù)上直接在域名后面掛上冒號端口號,可能是不識別的.于是果斷加上Port參數(shù).然后就,真的成功了…所以,當(dāng)本機(jī)需要指定多個(gè)ssh時(shí),在config文件中,如果訪問地址有指定的端口號,需要增加Port參數(shù),否則會訪問失敗.
其他:
剛裝上jenkins之后,發(fā)現(xiàn)連網(wǎng)線的機(jī)器可以正常訪問,但無線網(wǎng)的筆記本都無法訪問.各種猜測和嘗試之后都不好使,于是決定改一下端口號.網(wǎng)上能搜到的普遍的改端口號的方法對這臺服務(wù)器都無效.改了很多次,最后找了一個(gè)不一樣的方法,強(qiáng)制在啟動時(shí)修改端口號,成功.并且改了端口號之后,無線網(wǎng)的機(jī)器也真的能訪問了...
Jenkins默認(rèn)的端口號是8080,修改方法:
1. 打開終端,cd 到Jenkins的安裝目錄(即jenkins.war所在目錄),如:D:\Program Files (x86)\Jenkins
2. 執(zhí)行命令:“java -jar jenkins.war --ajp13Port=-1 --httpPort=8081”
其中8081就是新的端口號,也可以設(shè)置為其他的端口。用ios-deploy 安裝包
https://segmentfault.com/a/1190000010205616
https://www.npmjs.com/package/ios-deploy
https://testerhome.com/topics/12672
最后用了這個(gè)命令成功:
先獲取duid:
ios-deploy -c
然后先uninstall已安裝的app,再執(zhí)行安裝:
ios-deploy --id XXX -r --bundle_id ifengNews -b /Users/iOS/.jenkins/....../ifengnews.ipa
查看連接設(shè)備
Instruments -s devices