流程自动化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
。
通过上诉步骤,我们就可以基于backUpServerHost
、backUpGroupName
、ProjectName
拼接出最终的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 爱好者交流群
流程自动化RPA,Power Automate Desktop系列 - 批量备份Git仓库做好灾备的更多相关文章
- 流程自动化RPA,Power Automate Desktop系列 - 不讲武德的Windows10内置应用
简介 Power Automate Desktop 扩展Power Automate中的现有机器人流程自动化(RPA)功能,并使您能够自动化所有重复的桌面流程. 使用预生成的拖放操作或记录您自己的桌面 ...
- 流程自动化RPA,Power Automate Desktop系列 - 创建WPF程序安装包及升级包
一.背景 之前写过的几个WPF小工具,每次发布都需要给它打安装包和升级包,涉及到一些系列繁琐的手工操作,有了Power Automate Desktop,于是便寻思着能不能做成一个自动化的流来使用. ...
- 流程自动化RPA,Power Automate Desktop系列 - DotNet Core打包并发布Nuget Package
一.背景 DotNet Core通常基于Nuget来实现包管理,如果你想要把自己的实现共享给其他人,通常我们需要把本地项目打包好,然后发布到对应的Nuget Server上,以便于其他人可以查找.安装 ...
- 流程自动化RPA,Power Automate Desktop系列 - 发布文档中心
一.背景 内网中有一个基于VuePress搭建的静态文档中心,但是每次修改后都需要重新Build一次才行,之前都是手动执行命令,现在可以基于Power Automate Desktop来创建任务了. ...
- 流程自动化RPA,Power Automate Desktop系列 - 构建VuePress文档中心脚手架
一.背景 笔者曾基于VuePress搭建过一个文档中心,但是在实现在线管理功能之前,很多时候,新建文档需要手动处理很多数据,看有没有可能实现一个脚手架来处理这些问题,所谓脚手架,就是进行文档初始化的一 ...
- 批量修改git仓库地址脚本
前言 公司的代码都存放在自己搭建的gitlab上面.之前由于老板升级gitlab.导致下面有个叫做"api"的groups无法访问.通过无所不能的谷歌才知道.在gitlab在某 ...
- 使用powershell批量更新git仓库
Get-ChildItem D:\GitHub\NetCore | ForEach-Object -Process{ cd $_.name; git pull; cd ../ }
- 一文讲透为Power Automate for Desktop (PAD) 实现自定义模块 - 附完整代码
概述 Power Automate for Desktop (以下简称PAD)是微软推出的一款针对Windows桌面端的免费RPA(机器人流程自动化)工具,它目前默认会随着Windows 11安装,但 ...
- Power Platform之Power Automate新增RPA功能
什么是RPA RPA( Robotic Process Automation 机器人流程自动化软件),是一种新型的人工智能的虚拟流程自动化机器人.RPA的核心是通过自动化.智能化技术来“替代人”进 ...
随机推荐
- java基础——创建对象与内部分布
类与对象的关系 类是一种抽象的数据类型,它是对某一类事物整体描述和定义,但是不能代表某一个具体的事物 动物.植物.手机.电脑... Person类,Pet类,Car类,这些类都是用来描述和定义某一类具 ...
- CentOS/Linux内存占用大,用Shell脚本自动定时清除/释放内存
CentOS/Linux内存占用大,用Shell脚本自动定时清除/释放内存来自:互联网 时间:2020-03-22 阅读:114以下情况可能造成Linux内存占用过高服务配置存在直接分配错误,或隐性分 ...
- 对Linux系统内核版本稳定性测试介绍
对Linux系统内核版本稳定性测试介绍 在对 Linux 内核版本稳定性的测试中,需要明确地声明并证明为什么版本是稳定的或者是不稳定的. 然而还没有被证明和证实当前现有的系统范围内的压力测试可以测试 ...
- 服务器硬件必须支持M2 或PCIE才能支持NVME
兆芯服务器不支持NVME. 服务器硬件必须支持M2 或PCIE才能支持NVME.1 因为物理接口只有M2 SATA 和PCIE这三中但是NVME只支持M2 和PCIE这2种2所以 NVME不支持SAT ...
- CentOS 6.5新增加硬盘挂载并实现开机自动挂载
Centos7.x请参考:https://www.cnblogs.com/himismad/p/7851548.html 在内网主机Centos 6.5新增一个50G硬盘 (搭建在CAS服务器,直接新 ...
- kylin的rowkey优化之按维度分片
我们知道,系统会对cuboid的数据进行分片处理. 但是默认的分片策略是随机的,如果group by a,b 的查询命中了某个cuboid,但是a=1 and b=1 的两条数据在不同的机器上存储, ...
- unity UGUI填坑 之 HorizontalLayoutGroup 和 ContentSizeFitter配合使用
今天在项目中遇到一个问题,我们的ui过来找我,问为什么Content里的Item显示的不完全 花了半个小时看了一下,发现个小小的坑,记录一下 这些属性是用来实现,Content下的Item的偏移和间隔 ...
- 第4讲 | DHCP与PXE:IP是怎么来的,又是怎么没的?
第4讲 | DHCP与PXE:IP是怎么来的,又是怎么没的? linux 配置网络IP地址: 使用 net-tools: sudo ifconfig eth1 10.0.0.1/24 sudo ifc ...
- 2021 docker安装宝塔面板
拉取CentOS镜像 docker pull centos 创建 docker 容器 启动镜像,映射主机与容器内8888(宝塔面板).888(PHPMYADMIN)端口 -v 挂在目录 为了能够保存( ...
- Apple Xcode 12.5 (12E262) 正式版发布 - 构建 Universal App
请访问原文链接:https://sysin.org/article/apple-xcode-12/,查看最新版.转载请保留出处. Xcode 12 简介 Xcode 12 采用全新设计,在 macOS ...