说明
2023-02-18 16:37:21 时间
说明
基于微服务项目,产生的的多项目仓库管理脚本。可直接保存 shell 脚本后酌情修改后试用
目录结构
- xxxx
- Xxx1Api/
- Xxx2Api/
- git_clone_api.sh
- git_branch_dev.sh
- git_pull_all.sh
- git_status.sh
- api-build-tag.sh
- api-commit-push.sh
- api-dev-release-merage.sh
- api-update-nuget-pack.sh
脚本放置在外层目录,将操作 Api 后缀目录下 git 仓库
批量克隆仓库
#!/bin/bash
# 不要放在中文路径下
# 接口
git clone http://xxxxx.com/XXX.XXXApi.git
read pause
切换分支到 dev
#!/bin/bash
function getdir(){
for element in `ls $1 | grep /$`
do
dir_or_file=$1"\\"$element
echo $dir_or_file
cd $dir_or_file
git checkout $2
git pull
cd ..
done
}
root_dir="./"
branch=dev
getdir $root_dir $branch
拉取分支最新代码
#!/bin/bash
function getdir(){
for element in `ls -F $1 | grep /$`
do
dir_or_file=$1"\\"$element
echo $dir_or_file
if [ $element = "docs" ]
then
echo $dir_or_file skip
else
cd $dir_or_file
git pull
cd ..
fi
done
}
root_dir="./"
getdir $root_dir
查看仓库状态
#!/bin/bash
function getdir(){
for element in `ls $1 | grep /$`
do
dir_or_file=$1"\\"$element
echo $dir_or_file
cd $dir_or_file
git status
cd ..
done
}
root_dir="./"
getdir $root_dir
read pause
自动升级 dev 的 nuget 包
项目
: 匹配的文本*Api
:Api 后缀的目录XXX
: 需要更新的指定包,匹配包名xxxxx.com
:nuget 源
#!/bin/bash
#set -x
echo '自动升级nuget包-Need Setting shell to GBK Encoding'
function upgradePack(){
tempFile=./temp.txt
tempPackFile=./tempPack.txt
echo 当前目录:$1
cd $1
cd src
pwd
#read pause
dotnet restore
dotnet list package --source xxxxxxx.com --include-prerelease --outdated>$tempFile
tempProjectMatch="项目"
projectName=''
cat $tempFile | while read line
do
#if [[ "$line" == *XXX* ]];then
if [[ $line =~ $tempProjectMatch ]];then
echo $line | grep -Eo "XXX.((\w)+(\.?))+">$tempPackFile
projectName=$(cat $tempPackFile)
echo 检测项目:$projectName
else
if [[ "$line" == *XXX* ]];then
echo $line | grep -Eo "XXX.((\w)+(\.?))+">$tempPackFile
packageName=$(cat $tempPackFile)
echo 升级包:$packageName
dotnet add $projectName/$projectName.csproj package $packageName
fi
fi
#fi
done
rm $tempFile
rm $tempPackFile
}
function getdir(){
branchName=$2
for element in `ls $1 | grep /*Api`
do
dir_or_file=$1/$element
cd $dir_or_file
if([ "$branchName" != "" ]);then
git checkout $branchName
git pull
fi
upgradePack $dir_or_file
done
}
branch=dev
root_dir=$(cd `dirname $0`;pwd)
#echo 脚本目录:$root_dir
getdir $root_dir $branch
read pause
将 dev 分支打 tag:vyyyyMMdd 并推送到 origin
#!/bin/bash
#set -x
echo '重命名分支-Need Setting shell to GBK Encoding'
function pushTag(){
echo 拉取dev分支
git checkout dev
echo 创建tag
time_span=v`date +%Y%m%d`
git tag -l $time_span
git tag -a -f -m relrease $time_span
echo 推送tag
git push --set-upstream origin $time_span -f
echo 推送完毕
}
function getdir(){
# 文件夹名匹配
for element in `ls $1 | grep -E 'XXXApi|YYYYApi'`
do
dir_or_file=$1/$element
cd $dir_or_file
pushTag $dir_or_file
done
}
root_dir=$(cd `dirname $0`;pwd)
#echo 脚本目录:$root_dir
getdir $root_dir
read pause
提交 dev 分支并推送
#!/bin/bash
#set -x
echo '自动提交-Need Setting shell to GBK Encoding'
function pushCode(){
echo 当前目录:$1
git add *
git commit -m 更新包
git pull
git push
}
function getdir(){
branchName=$2
for element in `ls $1 | grep /*Api`
do
dir_or_file=$1/$element
cd $dir_or_file
pushCode $dir_or_file
done
}
branch=dev
root_dir=$(cd `dirname $0`;pwd)
#echo 脚本目录:$root_dir
getdir $root_dir $branch
read pause
合并 dev 分支到 release
#!/bin/bash
#set -x
echo '重命名分支-Need Setting shell to GBK Encoding'
function pushTag(){
echo 当前目录:$1 $branch
echo 拉取dev分支
git checkout dev
echo 创建tag
time_span=v`date +%Y%m%d`
git tag -l $time_span
git tag -a -f -m relrease $time_span
echo 推送tag
git push --set-upstream origin $time_span -f
echo 推送完毕
}
function pushCode(){
echo 当前目录:$1 $branch
echo 切换到dev,开始合并
git checkout dev
git pull
echo 删除release分支
git branch -d release
echo 新建release分支
git checkout -b release
echo 推送新的release分支
git push --set-upstream origin release -f
}
function getdir(){
for element in `ls $1 | grep /*Api`
do
dir_or_file=$1/$element
cd $dir_or_file
pushTag $dir_or_file
pushCode $dir_or_file
echo 睡眠30秒
sleep 30s
done
}
root_dir=$(cd `dirname $0`;pwd)
#echo 脚本目录:$root_dir
getdir $root_dir
read pause
相关文章
- 以太智能合约丨DAPP去中心化系统开发介绍丨交易所系统开发讲解方案
- 关于电源驱动ap8215升压IC的应用
- 基于tcl脚本语言的asic后端设计-软件定义汽车下的整车开发
- 云原生时代的灰度发布有几种“姿势”?
- c语言程序设计 向艳主编 第5章课后习题答案-C语言程序设计(第2版)-- 课后题答案
- 4K YouTube to MP3 for Mac(在线视频音频提取工具) 4.8.0激活版
- 版本号的正则表达式-一看就懂的「正则表达式」
- 嘉为蓝鲸受邀出席汽车新智造数字行业峰会,助力构建数字时代竞争力!
- 线程安全的queue-浅谈线程安全那些事儿
- 版本号的正则表达式-常见正则表达式大全
- canvas清除画布-ZBrush中如何清除画布中多余图像
- 树莓派3 usb通信-我的树莓派4为啥供不了电?官方确认:存在设计缺陷
- 单循环链表-带头双向循环链表的实现
- 在线图片加字-Fotor给图片添加文字的方法
- 单循环链表-这么好的单链表结构怎么能不会呢?带哨兵位头节点双向循环链表
- 缓存:第一章:缓存优化
- tp6+webhook 实现自动部署
- 电脑知识txt-装机必备!这些高效软件,让你的 Windows 好用一倍
- c语言程序设计实例-经典C语言程序设计100例
- 中国信通院“汽车云专场沙龙暨汽车行业软件研发效能成熟度模型标准发布会”成功召开!