持續(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è)階段:
- 本地創(chuàng)建自簽證書(shū)烁兰、Salesforce端新建Connect app.
- 腳本運(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文件
- 新建任意文件夾存儲(chǔ)生成的文件暇矫,比如我在桌面上創(chuàng)建了testJWT文件夾。
- 生成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
現(xiàn)在testJWT文件夾下有兩個(gè)文件server.key李根、server.pass.key,server.pass.key文件不會(huì)再用到几睛,可以將其刪除房轿。
-3. 生成證書(shū)簽名,存儲(chǔ)在server.csr文件中
openssl req -new -key server.key -out server.csr
- 根據(jù)server.key和 server.csr文件所森,生成自簽名證書(shū)囱持。
openssl x509 -req -sha256 -days 365 -in server.csr -signkey server.key -out 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):
- 針對(duì)JWT認(rèn)證方式,需要在新建App過(guò)程中上鞠,上傳server.crt自簽名證書(shū)粒蜈。
上傳證書(shū)
- 針對(duì)JWT認(rèn)證方式,需要在新建App過(guò)程中上鞠,上傳server.crt自簽名證書(shū)粒蜈。
- 編輯App的OAuth Policies,修改為Admin approved users are pre-authorized方式
修改認(rèn)證屬性
- 編輯App的OAuth Policies,修改為Admin approved users are pre-authorized方式
隨后你可以通過(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呢椒袍?
通過(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.
下一步
相信您已利用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í)間帆焕,避免繁瑣的操作惭婿。