流程自動化RPA,Power Automate Desktop系列 - 批量備份Git倉庫做好災備


一、背景

打個比如,你在Github上的代碼庫需要批量的定時備案到本地的Gitlab上,以便Github不能訪問時,可以繼續編寫,這時候我們可以基於Power Automate Desktop來實現一個簡單的批量備份處理。

二、創建流任務

創建名為備份代碼庫的流任務。

三、添加主流程

3.1 主流程

0. 概覽

1. 顯示選擇文件夾對話框,標題為請選擇文件夾,彈窗交互選擇需要備份的項目文件夾根目錄,存值為變量BackUpRootDir中。

如果常用位置,可以設置初始文件夾位置,以免每次都選來選去。

2. 獲取文件夾中的子文件夾,來拿到所有需要備份的項目文件夾。

%BackUpRootDir%

從需要備份的項目文件夾根目錄BackUpRootDir中提取所有的項目文件夾,得到BackUpProjectFolders列表。

3. ForEach遍歷所有項目文件夾,開始執行備份處理。

Power Automate中支持循環操作For Each的,我們可以基於它建立一個圍繞BackUpProjectFolders結果集的遍歷任務,我們為每個遍歷項取名為BackUpProject

可視化效果圖如下:

4. 拆分文本,准備得到項目名稱,存值於SplitBackUpPaths中。

%BackUpProject.FullName.ToLower%

通過自定義分隔符\,我們針對BackUpProject的全路徑進行小寫處理,然后通過自定義分隔符進行拆分,得到一個臨時的變量SplitBackUpPaths

5. 設置變量,從拆分后的列表中提取項目名稱,存值於變量ProjectName中。

一般來說,我們拿SplitBackUpPaths的最后一項就是項目名稱ProjectName了,這個也可以理解。

%SplitBackUpPaths[SplitBackUpPaths.Count - 1]%

6. 設置變量,變量名為backUpServerName,預設值遠程倉庫地址在本地的名稱。

為了后面的方便,這里我們將遠程倉庫在本地的名稱設置一個變量,名為backUpServerName,注意要繞開origin,因為origin一般是默認的遠程倉庫地址名稱。

7. 設置變量,變量名為backUpServerHost,預設值遠程倉庫地址的域名和端口。

8. 設置變量,變量名為backUpGroupName,預設值遠程倉庫地址的分組名稱。

通常我們建議使用分組功能來管理Git倉庫,采用分組之后,最終ssh地址中就會存在分組的名稱,這里我們做個設定。

9. 運行PowerShell腳本,添加備份倉庫服務器地址,這個動作我們叫AddRemoteServerEndPoint

通過上訴步驟,我們就可以基於backUpServerHostbackUpGroupNameProjectName拼接出最終的SSH地址了。

cd %BackUpProject.FullName%
git remote add %backUpServerName% ssh://git@%backUpServerHost%/%backUpGroupName%/%ProjectName%.git

我們先切換到BackUpProject目錄,然后通過Git CLI的命令git remote add來添加一個備份倉庫服務器的相關信息,其中backUpServerName是給遠程地址取一個名字、ssh://開頭的是遠程地址對應該項目的地址,這個動作我們命名為AddRemoteServerEndPoint

注意,如果遠程該項目還沒有倉庫地址,后續Push的時候,會自動創建ProjectName的倉庫。

10. 拆分文本,准備要備份的Git分支名稱,存值於變量GitBranchNames中。

我們可以利用拆分文本,來快速得到我們想要的Git分支名稱列表GitBranchNames,這個后續需要用到的。

master,develop,test,uat

自定義分隔符,來進行拆分文本,將拆分后的結果存到變量GitBranchNames中。

11. ForEach遍歷所有分支名稱,開始執行分支備份。

我們可以基於它建立一個圍繞GitBranchNames結果集的遍歷任務,我們為每個遍歷項取名為GitBranchName

可視化效果圖如下:

12. 運行PowerShell腳本,來切換到指定分支,這個動作我們命名為CheckOutBranch

cd %BackUpProject.FullName%
git checkout -b %GitBranchName% origin/%GitBranchName%

我們先切換到BackUpProject目錄,然后通過Git CLI的命令git checkout來從遠程的origin/GitBranchName分支為基礎簽出一個本地的名為GitBranchName的分支。

注意,這時候可能本地已經存在GitBranchName分支了,這里為了偷懶,我們直接設置這個操作出錯時策略為繼續流運行即可,來忽略這個異常情況。

13. 運行PowerShell腳本,拉取指定分支最新修改,這個動作我們命名為PullBranchLatest

cd %BackUpProject.FullName%
git switch %GitBranchName%
git pull

我們先切換到BackUpProject目錄,然后通過Git CLI的命令git switch來切換到指定的GitBranchName分支,接着通過命令git pull來拉取這個分支當前最新遠程修改即可。

14. 運行PowerShell腳本,推送指定分支到遠程倉庫,這個動作我們命名為PushBranchToRemote

cd %BackUpProject.FullName%
git push %backUpServerName% -f %GitBranchName%

我們先切換到BackUpProject目錄,然后通過Git CLI的命令git push來把本地的GitBranchName分支強制-f推送到遠程倉庫backUpServerName

15. 在子級For-Each外,運行PowerShell腳本,移除備份倉庫服務器地址,這個動作我們命名為DelRemoteServerEndPoint

cd %BackUpProject.FullName%
git remote remove %backUpServerName%

我們先切換到BackUpProject目錄,然后通過Git CLI的命令git remote remove來刪除backUpServerName這個遠程地址即可。

四、測試驗證

運行效果

Power Automate Desktop/RPA 愛好者交流群

image


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM