寫在前面
ALM(Application lifecycle management) 軟件生命周期管控是每一個公司對軟件開發流程非常重要的一個話題. Power Platform (下文中用PP代替) 是今年非常熱火的微軟第四朵雲, 里面不僅囊括了D365的功能, 還有其他Azure的 SaaS產品 e.g. AI Builder, Virtual Agent etc.
Azure Devops背景是VSTS. 我在之前的blog中講到怎么用azure devops來部署D365 CRM(CE) 的solution, 當時是用的三方的devops 工具. 有興趣的可以查看 使用Azure Devops(VSTS) 來部署D365 CE(CRM) Solution
因為PP 就是D365的新界面. 我們開發,測試,部署,生產環境流程都和D365一樣. 為了滿足這些開發流程的環境, 我們要建各種不同的環境(sandbox)來支持我們的開發,測試,和生產環境.
那在D365中, 我們需要到D365的settings -> Solutions 中找到相關的solution, 並且export solution,然后import到其他的環境中.
Power Platform ALM 管控
那同樣PP我們也可以用D365 CRM(CE)這套Azure Devops 中CI/CD的流程來方便我們做環境的部署和切換.
在今年早些年, 微軟推出了官方的用於 Azure DevOps 的 Microsoft Power Platform Build Tools 工具. 方便我們針對PP的solution來做CI/CD的自動化管控
那今天我們就在Azure Devops 中使用微軟官方推出的Power Platform Build Tools 來做PP項目的ALM管控
Power Platform Build Tool 教學
首先我們在source sandbox中創建一個solution
然后我們需要登陸Azure DevOps, 並且創建一個新的project
因為我們的內容使用到Git Repository, 所以這里我們要initialize一下Repos
然后, 我們可以創建我Pipelines.
PS:如果不懂什么是Azure DevOps Pipelines, 強烈建議大家先閱讀微軟Pipelines的文檔
這里我們選擇Use the classic editor 來創建我們的第一個pipeline
進入之后, 我們選擇 Azure Repos Git
然后這里我們選擇創建一個Empty Job, 沒有任何模板使用
第一次使用 Power Platform Build Tools, 我們需要去在右上角搜索"power platform build tools" 並且在市場中安裝
我們再Visual Studio 市場中找到 Power Platform Build Tools並且安裝
ps: Power Apps Build Tools 已經被遺棄, 請大家確認使用Power Platform Build Tools
然后我們選擇安裝到當前tenant底下.
安裝結束就可以回到Azure DevOps 中
這里我們首先要停下來. 我們先思考一下我們的需求場景是什么.
當在dev sandbox中開發完, 需要部署到tesst sandbox中, 我們以往會從dev sandbox中export solution, 然后再test sandbox在import solution. 每次export和inport 都會浪費很多時間,並且重復相同的動作. 那我們可以借助pipeline來完成重復內容.
我們要規划一下所有的動作:
1. 找到source sandbox
2. 打包當前solution
3. 找到target sandbox
4. 安裝solution
5. 打開包裹 (Option)
6. 把代碼同步到Git Repository中 (Option)
那我們現在知道所需之后, 就去添加相關的內容.
首先,我們需要再Agent job中添加 power platform tool installer,
這一步是需要把power platform tool 安裝到運行的vm中
然后,我們需要做第1步找到source environment.
但是首先,我們需要添加power platform pack solution
然后我們需要創建 service connection. 這里有兩種方法創建
1. 點擊export solution中的 manage
2. 左下角project settings里找到 service connections
這里我們有兩種方式創建 service connection
1. generic 輸入domain, account+password
2. Server to Server (S2S 在選項里是power platform) 在AAD中的app registration 可以參考我之前的blog 在AAD 注冊 API permission
如果我們使用generic, 我們需要填寫如下信息
接下來我們需要做第2步 打包當前solution
如果我們注冊的generic 則選擇no MFA
如果注冊的S2S, 則選擇service principle/client secret
solution name 我們寫 $(PowerPlatform.SolutionName)
solution name的值我們不希望寫死, 所以我們可以動態的來設置variable值. 隨后的步驟中會介紹怎樣動態設置variable
solution output file 我們寫$(Build.ArtifactStagingDirectory)\$(PowerPlatform.SolutionName).zip
這里我們需要動態的獲取當前vm中的地址, 並且把打包好的solution放在相關的地址, 這樣便於我們獲取打包文件的地址, 做后面的動作
在前面,我們做了找到source sandbox, 打包solution的動作. 接下來我們要找到target sandbox, 並且import 打包好的solution到target sandbox中
那首先我們需要添加新的步驟, power platform import solution
並且, 我們需要按照上面的步驟創建service connection(target sandbox)
其次,我們要找到剛才打包zip文件的文件地址, 把文件上傳到target sandbox中.
solution input file: $(Build.ArtifactStagingDirectory)\$(PowerPlatform.SolutionName).zip
然后,我們應該添加的步驟就添加完畢.
我們需要做一些額外的配置. 我們點到Agent job, 並且勾選"Allow script to oaccess the OAuth token"
然后,我們點開"variables", 並且設定PowerPlatform.SolutionName的值. 在PP中, 我的solution叫ProjectHotdog, 所以這里的value我設定成ProjectHotdog.
variable可以設置成變量, 我們也可以通過 power automate flow來控制. 后面有時間我會講怎么用power automate來配合我們的pipeline.
到此為止, 我們的4個步驟就全部做完. 然后,我們就可以第一次run我們的pipeline
我們可以看到source sandbox中的solution被import到target solution中
隨后,我們還有兩個option的流程.
我們不管在開發canvas還是automate. 我們都是接觸的UI界面. 很難去管控其后面的代碼. 並且我們也非常困難去管控版本迭代.
這里這一步我們可以使用unpack 功能來打開solution .zip文件, 獲取到原始的.json 或者 .xml 各個文檔. 然后我們可以把文檔用cmd 去上傳到之前創建好的Git Repository中.
首先我們需要拿到文檔
solution input file
$(Build.ArtifactStagingDirectory)\$(PowerPlatform.SolutionName).zip
Target foler to unpack solution
$(PowerPlatform.SolutionName)
這一步, 我們把剛才解壓縮在文件夾中的所有文件上傳到Git Repository中.
echo Commit Power Platform Solution git config user.email "build.pipeline@xxx.com" git config user.name "Build Pipeline" git checkout master git pull origin git add --all git commit -m "Automatic solution commit" git -c http.extraheader="AUTHORIZATION: bearer $(System.AccessToken)" push origin master
我們需要做最后一步的設置, 我們需要去project setting -> All Repositories -> Power Platform Solution Build -> Permission 中把Contribute 和 create branch的權限打開.
然后我們run pipeline
寫在最后
Power Platform Build Tool 幫我們解決了開發當中非常大的一個忙, AML 開發周期的管控. 並且解放了我們不停的做環境切換, 部署的問題.
后面,我會在隨后的blog中介紹怎么使用power automate來打通pipeline部署, 並且以power apps canvas作為UI來管控PP平台. 並且也會專注PP平台項目管控解決方案. 希望大家關心的管控流程/其他意見可以留言告訴我