首页 > 其他分享 >微服务项目Git仓库自动化脚本

微服务项目Git仓库自动化脚本

时间:2022-12-20 19:56:11浏览次数:35  
标签:git 仓库 服务项目 echo Git file cd root dir

说明

基于微服务项目,产生的的多项目仓库管理脚本。可直接保存 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

标签:git,仓库,服务项目,echo,Git,file,cd,root,dir
From: https://www.cnblogs.com/morang/p/16994114.html

相关文章

  • git cherry-pick 同步修改到另一个分支
    我们在开发中有时会遇到,需要将另一个分支部分修改同步到当前分支。如下图,想把devA分支中commitE和F,同步到下面绿色的devB分支中。这时候就可以使用gitcherry-......
  • git相关问题解析,你想要的都有
    官网文档:https://git-scm.com/doc本地克隆远程代码仓库gitclone地址本地同步全量历史数据,克隆所有文件的历史记录gitclone地址—depth1本地同步默认分支......
  • go-Typora-Sqoosh-图像压缩-Github-图床
    go-Typora-Sqoosh-图像压缩-Github-图床SquooshGoogleChromeLabs/squoosh:Makeimagessmallerusingbest-in-classcodecs,rightinthebrowser.(github.com)htt......
  • git常用命令记录
    gitcheckoutbranchName切换分支gitswitchbranchName切换分支gitcheckout-bnewBranchName从当前分支拉去代码创建分支,并切换到新分支git......
  • Git-入门教程
    ​​Git简介​​​​安装Git​​​​创建版本库​​​​Git时光穿梭机​​​​Git远程仓库​​​​Git分支管理​​​​Git标签管理​​​​使用Git​​​​自定义Git​​......
  • Windows7下git配置difftool
    GIT是一个代码版本控制工具,是软件开发团队中必不可少的一类工具,类似的工具还有像SVN,CVS等;在此之前我一直使用的SVN,因为SVN在windows下有很好的客户端【小乌龟】,使用起来简单......
  • git rebase
    使用rebase-i命令選擇要修改的提交#返回当前head和head~~之间的log前开后闭gitrebase-iHEAD~~返回以下格式pick9a54fd4添加commit的說明pick0d4a808添......
  • git 看某次commit改了哪些文件
    gitlog查看commit的历史gitshow查看某次commit的修改内容gitlog-p查看某个文件的修改历史gitlog-p-2查看最近2次的更新内容gitlog–name-status每次修改......
  • Git
    目录Git一、安装二、基本配置1、配置用户名和邮箱2、查看设置好的用户名三、创建本地仓库四、基础操作命令1、查看文件的状态(status)2、将文件添加到暂存区(add)3、提交暂......
  • 女朋友说 Git 玩不明白,怎么办?安排! 陌小路
    前言在某个月黑风高的晚上,一脸愁容的女朋友突然跟我说,Git老搞不明白,有什么比较好的经验可以分享下吗,说时迟,那时快,二话不说,立马开始奋笔疾书......在平时的Coding过程......