Salesforce持續(xù)集成(CI)

持續(xù)集成(CI)

在日常開(kāi)發(fā)過(guò)程中,代碼常常會(huì)根據(jù)業(yè)務(wù)變更纠亚、功能異常等情況發(fā)生變化;那么當(dāng)代碼完成后筋夏,必不可少的步驟需要將代碼部署到服務(wù)器端蒂胞;頻繁、重復(fù)的部署操作条篷,一方面任何人也不想耗費(fèi)時(shí)間在機(jī)械的工作上骗随,另一方面,需要讓開(kāi)發(fā)人員更關(guān)注業(yè)務(wù)代碼赴叹;這樣一來(lái)鸿染,代碼部署自動(dòng)化的需求越來(lái)越大,簡(jiǎn)而言之呢乞巧,之前如果修改了一個(gè)系統(tǒng)Bug涨椒,除了要對(duì)業(yè)務(wù)代碼進(jìn)行修改推送到CVS,還需要部署到服務(wù)器上绽媒;現(xiàn)在呢蚕冬,只需要關(guān)心您的代碼,部署的事情交給另外一臺(tái)機(jī)器幫您完成是辕《谌龋回歸到Salesforce系統(tǒng)中,目標(biāo)部署服務(wù)器就是具體的Organization获三,那代碼修改完需要自動(dòng)部署目標(biāo)Organization中旁蔼。下面我們來(lái)看一下,自動(dòng)部署是怎樣實(shí)現(xiàn)與Salesforce建立連接疙教。

JWT配置

持續(xù)集成環(huán)境是自動(dòng)化的棺聊,不支持Web-Based Flow,不熟悉該流程的同學(xué)松逊,參考一下這篇文章Using SalesforceDX(SFDX) without Scratch Org躺屁;在這里,需要用到JWT-Based Flow(JSON web tokens)经宏,這個(gè)流程需要將數(shù)字證書(shū)上傳到自定義的應(yīng)用中犀暑,然后再通過(guò)腳本進(jìn)行服務(wù)端認(rèn)證,簡(jiǎn)單來(lái)說(shuō)可以分為以下兩個(gè)階段:

    1. 本地創(chuàng)建自簽證書(shū)烁兰、Salesforce端新建Connect app.
    1. 腳本運(yùn)行在CI環(huán)境中

驗(yàn)證前提

請(qǐng)?jiān)陂_(kāi)始以下步驟之前安裝OpenSSL(Open Secure Sockets Layer)耐亏,使用以下命令檢查環(huán)境:

which openSSl

環(huán)境沒(méi)有準(zhǔn)備好的話,如果是Mac系統(tǒng)沪斟,使用Homebrew進(jìn)行安裝

brew install openssl

Windows請(qǐng)下載安裝包广辰。

驗(yàn)證過(guò)程

生成server.crt文件

    1. 新建任意文件夾存儲(chǔ)生成的文件暇矫,比如我在桌面上創(chuàng)建了testJWT文件夾。
    1. 生成private key择吊,存儲(chǔ)在server.key文件
openssl genrsa -des3 -passout pass:SomePassword -out server.pass.key 2048
openssl rsa -passin pass:SomePassword -in server.pass.key -out server.key

生成server.key

現(xiàn)在testJWT文件夾下有兩個(gè)文件server.key李根、server.pass.keyserver.pass.key文件不會(huì)再用到几睛,可以將其刪除房轿。
-3. 生成證書(shū)簽名,存儲(chǔ)在server.csr文件中

openssl req -new -key server.key -out server.csr
生成server.csr
    1. 根據(jù)server.key和 server.csr文件所森,生成自簽名證書(shū)囱持。
openssl x509 -req -sha256 -days 365 -in server.csr -signkey server.key -out server.crt
生成server.crt

目前為止,已經(jīng)生成了JWT所需的證書(shū)焕济,下一步新建Connect App的時(shí)候會(huì)用到纷妆。

創(chuàng)建Connect App

在Salesforce中新建Connect App應(yīng)該是比較熟悉的了,不清楚的話晴弃,可以參考一下使用Postman對(duì)Salesforce進(jìn)行接口測(cè)試掩幢,需要說(shuō)明一下兩點(diǎn):

    1. 針對(duì)JWT認(rèn)證方式,需要在新建App過(guò)程中上鞠,上傳server.crt自簽名證書(shū)粒蜈。
      上傳證書(shū)
    1. 編輯App的OAuth Policies,修改為Admin approved users are pre-authorized方式
      修改認(rèn)證屬性

隨后你可以通過(guò)Permission set管理給App分配CI用戶旗国,方便起見(jiàn),這里分配給簡(jiǎn)檔System Administrator的用戶注整。保存App后能曾,需要保存一下Consumer Key,接下來(lái)的測(cè)試我們需要用到Consumer Key肿轨。

連接測(cè)試

現(xiàn)在App已經(jīng)準(zhǔn)備好寿冕,證書(shū)也上傳到App,那我們是否能成功的連接到Salesforce呢椒袍?


新建的Connect App

通過(guò)以下命令測(cè)試驼唱,嘗試建立連接:

export CONSUMER_KEY=3MVG9pe2TCoA1Pf4Sl71bGc3xBuVp.h8zly2rk_4gCeP0whCxrONIcvjPTkmTw3_.H3LNAA_QVIYuONIoXU4o //Connect App Consumer Key value
export JWT_KEY_FILE=/Users/bubba/Desktop/testJWT/server.key
export HUB_USERNAME=lj1377736@brave-bear-p3qvk9.com
sfdx force:auth:jwt:grant --clientid ${CONSUMER_KEY} --username ${HUB_USERNAME} --jwtkeyfile ${JWT_KEY_FILE}   --instanceurl https://brave-bear-p3qvk9-dev-ed.my.salesforce.com -a testJWT

如果能看到以下截圖內(nèi)容,說(shuō)明已經(jīng)成功連接到了Salesforce驹暑,也可以通過(guò)sfdx force:org:list命令來(lái)查看已認(rèn)證的Organization.

Success

下一步

相信您已利用JWT成功的建立了與Salesforce的連接玫恳,接下來(lái)還需要結(jié)合自動(dòng)化部署工具(Travis、Jenkins)運(yùn)行到項(xiàng)目中优俘,提供兩個(gè)資源模板供大家參考:

通過(guò)簡(jiǎn)單的配置腳本京办,讓項(xiàng)目做到自動(dòng)化部署,就可以節(jié)省開(kāi)發(fā)人員時(shí)間帆焕,避免繁瑣的操作惭婿。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子财饥,更是在濱河造成了極大的恐慌换吧,老刑警劉巖,帶你破解...
    沈念sama閱讀 219,539評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件钥星,死亡現(xiàn)場(chǎng)離奇詭異沾瓦,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)打颤,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,594評(píng)論 3 396
  • 文/潘曉璐 我一進(jìn)店門(mén)暴拄,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人编饺,你說(shuō)我怎么就攤上這事乖篷。” “怎么了透且?”我有些...
    開(kāi)封第一講書(shū)人閱讀 165,871評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵撕蔼,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我秽誊,道長(zhǎng)鲸沮,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,963評(píng)論 1 295
  • 正文 為了忘掉前任锅论,我火速辦了婚禮讼溺,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘最易。我一直安慰自己怒坯,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,984評(píng)論 6 393
  • 文/花漫 我一把揭開(kāi)白布藻懒。 她就那樣靜靜地躺著剔猿,像睡著了一般。 火紅的嫁衣襯著肌膚如雪嬉荆。 梳的紋絲不亂的頭發(fā)上归敬,一...
    開(kāi)封第一講書(shū)人閱讀 51,763評(píng)論 1 307
  • 那天,我揣著相機(jī)與錄音鄙早,去河邊找鬼汪茧。 笑死,一個(gè)胖子當(dāng)著我的面吹牛蝶锋,可吹牛的內(nèi)容都是我干的陆爽。 我是一名探鬼主播,決...
    沈念sama閱讀 40,468評(píng)論 3 420
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼扳缕,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼慌闭!你這毒婦竟也來(lái)了别威?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 39,357評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤驴剔,失蹤者是張志新(化名)和其女友劉穎省古,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體丧失,經(jīng)...
    沈念sama閱讀 45,850評(píng)論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡豺妓,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,002評(píng)論 3 338
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了布讹。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片琳拭。...
    茶點(diǎn)故事閱讀 40,144評(píng)論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖描验,靈堂內(nèi)的尸體忽然破棺而出白嘁,到底是詐尸還是另有隱情,我是刑警寧澤膘流,帶...
    沈念sama閱讀 35,823評(píng)論 5 346
  • 正文 年R本政府宣布絮缅,位于F島的核電站,受9級(jí)特大地震影響呼股,放射性物質(zhì)發(fā)生泄漏耕魄。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,483評(píng)論 3 331
  • 文/蒙蒙 一彭谁、第九天 我趴在偏房一處隱蔽的房頂上張望吸奴。 院中可真熱鬧,春花似錦缠局、人聲如沸奄抽。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,026評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至额划,卻和暖如春妙啃,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背俊戳。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,150評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工揖赴, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人抑胎。 一個(gè)月前我還...
    沈念sama閱讀 48,415評(píng)論 3 373
  • 正文 我出身青樓燥滑,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親阿逃。 傳聞我的和親對(duì)象是個(gè)殘疾皇子铭拧,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,092評(píng)論 2 355