说明

基于微服务项目,产生的的多项目仓库管理脚本。

目录结构

  • 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仓库自动化脚本的更多相关文章

  1. K8S+Jenkins自动化构建微服务项目(后续)

    因为之前写过基于K8S部署jenkins master/slave平台,在这个的基础上构建微服务到K8S集群中 Jenkins-slave构建微服务项目到K8S集群 1.微服务项目上传到git仓库 这 ...

  2. 微服务项目的docker自动化部署流程

    目录 微服务的Docker自动化部署 制作JDK1.8的Docker镜像 Docker常用命令介绍 制作image的一般流程 将本地的image上传至私人仓库 使用Maven插件实现自动化docker ...

  3. docker微服务部署之:二、搭建文章微服务项目

    docker微服务部署之:一,搭建Eureka微服务项目 一.新增demo_article模块,并编写代码 右键demo_parent->new->Module->Maven,选择M ...

  4. 【spring colud】spring cloud微服务项目搭建【spring boot2.0】

    spring cloud微服务项目搭建 =================================== 示例版本: 1.spring boot 2.0版本 2.开发工具 IntellJ IDE ...

  5. Docker 搭建 ELK 读取微服务项目的日志文件

    思路: 在docker搭建elasticsearch与kibana来展示日志,在微服务部署的机子上部署logstash来收集日志传到elasticsearch中,通过kibana来展示,logstas ...

  6. 创建Spring Boot微服务项目

    创建一个测试用的微服务项目HelloWorld 创建项目 编写服务代码 @RestController public class HelloWorld { @RequestMapping(" ...

  7. springboot的maven多模块项目架构微服务搭建——依赖方式的多模块演化为微服务项目

    在上一篇依赖方式多模块的基础上对项目进行改造.主要改造user-service项目,service要配置mapper.mybatis及数据库相关的东西,后面的接口消费方user就不再需要了 注意:以下 ...

  8. CODING DevOps 微服务项目实战系列最后一课,周四开讲!

    随着软件工程越来越复杂化,如何在 Kubernetes 集群进行灰度发布成为了生产部署的"必修课",而如何实现安全可控.自动化的灰度发布也成为了持续部署重点关注的问题.CODING ...

  9. Docker实战 | 第二篇:IDEA集成Docker插件实现一键自动打包部署微服务项目,一劳永逸的技术手段值得一试

    一. 前言 大家在自己玩微服务项目的时候,动辄十几个服务,每次修改逐一部署繁琐不说也会浪费越来越多时间,所以本篇整理通过一次性配置实现一键部署微服务,实现真正所谓的一劳永逸. 二. 配置服务器 1. ...

  10. SpringCloud(1)---基于RestTemplate微服务项目案例

    基于RestTemplate微服务项目 在写SpringCloud搭建微服务之前,我想先搭建一个不通过springcloud只通过SpringBoot和Mybatis进行模块之间额通讯.然后在此基础上 ...

随机推荐

  1. 分布式存储系统之Ceph集群存储池、PG 与 CRUSH

    前文我们了解了ceph集群状态获取常用命令以及通过ceph daemon.ceph tell动态配置ceph组件.ceph.conf配置文件相关格式的说明等,回顾请参考https://www.cnbl ...

  2. MatrixOne从入门到实践01——初识MatrixOne

    初识MatrixOne 简介 MatrixOrigin 矩阵起源 是一家数据智能领域的创新企业,其愿景是成为数字世界的核心技术提供者. 物理世界的数字化和智能化无处不在.我们致力于建设开放的技术开源社 ...

  3. GMOJ5673 爬山法 题解

    Solution 显然先想到处理出每个点能看到的最高的顶点. 然后考虑模拟题目的过程,一段一段走时间复杂度显然不够优秀. 考虑我们要求什么,我们需要求出\(u\)到\(v\)的最近的一个点,使得这个点 ...

  4. List接口中的常用方法

    void add(int index, Object ele):在index位置插入ele元素boolean addAll(int index, Collection eles):从index位置开始 ...

  5. Linux基础_1_简介

    Linux是什么 一款优秀的操作系统软件,特性是一切皆文件:一切设备皆文件!一切设备的设置皆修改配置文件!一切服务的搭建皆修改配置文件!(庞大的树形结构文件系统) 根据FHS标准,Linux目录有以下 ...

  6. MassTransit | .NET 分布式应用框架

    引言 A free, open-source distributed application framework for .NET. 一个免费.开源的.NET 分布式应用框架. -- MassTran ...

  7. letcode-学习-数组去重

    数组去重 问题描述: 给你一个 升序排列 的数组 nums ,请你 原地 删除重复出现的元素,使每个元素 只出现一次 ,返回删除后数组的新长度.元素的 相对顺序 应该保持 一致 . 由于在某些语言中不 ...

  8. 所有selenium相关的库

    通过爬虫 获取 官方文档库 如果想获取 相应的库 修改对应配置即可 代码如下 from urllib.parse import urljoin import requests from lxml im ...

  9. ubuntu 安装anaconda3

    ubuntu 安装anaconda3 官网:https://www.anaconda.com/ 下载:https://www.anaconda.com/products/individual#Down ...

  10. vs 自定义代码块

    代码自动生成,让代码飞~ 我目前用的是vs2013,c,c++用的多,vs自带了一套代码块规则,下面我们就以for举例子. 1 原生代码块怎么使用 输入for后按Tab键: 这时候可以修改 size_ ...