首页 > 其他分享 >coding根据Git提交信息,进行全自动化构建不同环境和项目进行部署的脚本Demo

coding根据Git提交信息,进行全自动化构建不同环境和项目进行部署的脚本Demo

时间:2024-11-22 15:39:38浏览次数:1  
标签:ProjectFolder Git Demo coding BPValue echo git BuildParams test

话不多说,直接上提交信息的文本案例和shell脚本代码,要前面详细的步骤可以参考我的另一篇文章:《关于coding平台上如何使用持续集成部署前端项目 》

Git文本案例:

test:测试变更[BP=test][BF=test][PF=project_web/test]

shell-脚本-1

# 获取最近一次提交的完整消息
CommitMessage=$(git log -1 --pretty=%B) || { echo "获取提交消息失败"; exit 1; }

# 从提交消息中提取 BP:buildProject 的值
BPValue=$(echo "$CommitMessage" | grep -oE '\[BP=[^]]*\]' | sed 's/^\[BP=//;s/\]$//')

# 如果提取失败,BPValue 赋值为空
if [ -z "$BPValue" ]; then
echo "未找到 BP:buildProject 值,BPValue 赋值为空"
BPValue=""
else
echo "成功提取 BP:buildProject 值: $BPValue"
fi

# 设置 BuildParams 三目判断:BPValue和PROJECT
BuildParams=${BPValue:-$PROJECT}
echo "BuildParams 设置为: $BuildParams"

# 获取 NPM 配置
echo "获取 NPM 配置"
npm config list

# 在没有 node_modules 文件夹下,如果有新依赖,需要注释本行重新跑 npm
if ! [ -d "./node_modules" ]; then
echo "未检测到 node_modules 目录,开始安装依赖"
# 更改淘宝镜像源,网络好不需要则可去除
npm config set registry https://registry.npmmirror.com || { echo "设置 NPM 镜像源失败"; exit 1; }
npm install --legacy-peer-deps --loglevel verbose || { echo "安装依赖失败"; exit 1; }
else
echo "已检测到 node_modules 目录,跳过安装依赖"
fi

# 执行 build 构建
echo "开始执行构建"
npm run build "$BuildParams" || { echo "构建失败"; exit 1; }

# 列出当前目录下的文件
echo "列出当前目录下的文件"
ls

 shell-脚本-2

# 如果test存在,删除test文件夹,重新git clone
if  [ -d "test" ]; then
rm -rf test
fi

 shell-脚本-3

# 执行git命令拉取指定分支环境变量-BRANCH
git clone --depth 5 -b ${BRANCH} https://${USERNAME}:${PASSWORD}@e.coding.test.com/test/test/test.git

 shell-脚本-4

# 获取最近一次提交的完整消息
CommitMessage=$(git log -1 --pretty=%B) || { echo "获取提交消息失败"; exit 1; }
echo "CommitMessage 值为:$CommitMessage"
# 从提交消息中提取 BP:打包的项目 的值
BPValue=$(echo "$CommitMessage" | grep -oE '\[BP=[^]]*\]' | sed 's/^\[BP=//;s/\]$//')

# 如果提取失败,BPValue 赋值为空
if [ -z "$BPValue" ]; then
echo "未找到 BP:buildProject 值,BPValue 赋值为空"
BPValue=""
else
echo "成功提取 BP:buildProject 值: $BPValue"
fi

# 设置 BuildParams 三目判断:BPValue和PROJECT
BuildParams=${BPValue:-$PROJECT}
echo "BuildParams 设置为: $BuildParams"

# 从提交消息中提取 BF:要打包迁移的新文件夹名 的值
BFValue=$(echo "$CommitMessage" | grep -oE '\[BF=[^]]*\]' | sed 's/^\[BF=//;s/\]$//')
echo "BFValue 值为: $BFValue"

# 从提交消息中提取 ProjectFolder:要提交的目标路径 的值
ProjectFolder=$(echo "$CommitMessage" | grep -oE '\[PF=[^]]*\]' | sed 's/^\[PF=//;s/\]$//')
echo "ProjectFolder 值为: $ProjectFolder"


# 检查 BFValue 或 ProjectFolder 是否为空
if [ -z "$BFValue" ] || [ -z "$ProjectFolder" ]; then
echo "BFValue 或 ProjectFolder 不存在,执行其它操作..."
# 在这里从 BuildParams 获取值,枚举过滤
case $BuildParams in
"NT")
BFValue="newTest"
ProjectFolder="project_web/test"
;;
*)
;;
esac
fi

# TSETValue不为空则正常执行迁移Git逻辑
if [ "$ProjectFolder" != "" ]; then
# 先创建对应的项目文件夹路径
if ! [ -d "./test/$ProjectFolder" ]; then
mkdir -p ./test/$ProjectFolder
fi
# 进入目标项目执行git
cd ./test
git pull --rebase
cd ..
rm -rf ./test/$ProjectFolder/*
ls
cd ./dist
zip -r $BFValue.zip ./$BFValue
cd ..
# 移动原本dist的文件内容到要迁移的git目标项目上
mv ./dist/$BFValue/** ./test/$ProjectFolder
cd ./test/$ProjectFolder
git add .

# 获取 git status 的输出
GitStatusMessage=$(git status)

# 检查git输出中是否包含 "nothing to commit, working tree clean"
if echo "$GitStatusMessage" | grep -q "nothing to commit, working tree clean"; then
echo "Git提交失败:没有变更或需要提交的内容"
fi

#这里面的Git地址换成自己的 git commit -m "$(echo "ci("coding"):多产品打包\n分支:$BRANCH_NAME\n打包项目:$BuildParams\n触发人:$TRIGGER_USER_NAME\n构建记录:https:// codingcorp.coding.test.com/p/map-b_touch/ci/job/${JOB_ID}/build/${CI_BUILD_NUMBER}/pipeline")" git push else echo "ProjectFolder 为空" exit 1 fi

  

 

标签:ProjectFolder,Git,Demo,coding,BPValue,echo,git,BuildParams,test
From: https://www.cnblogs.com/xiaozhu007/p/18532491

相关文章

  • ⭐️ GitHub Star 数量前十的工作流项目
    文章开始前,我们先做个小调查:在日常工作中,你会使用自动化工作流工具吗?......
  • PCAN的使用简单demo
    参考  PCAN示例资源文件介绍:PCAN示例资源文件介绍-GitCode 此处就是界面上添加了一个按钮,用于创建连接,界面代码自己简单做一个pro中添加  serialbusQT+=serialbus .h#ifndefMAINWINDOW_H#defineMAINWINDOW_H#include<QMainWindow>#include<QC......
  • 欧皇限定のColorCoding
    ColorCoding与最小权重k-path问题省流一款令欧皇喜笑颜开,令非酋愁眉苦脸的算法。(但是概率远远大于抽卡)参考资料:https://xuewen.cnki.net/CJFD-JSJA200801005.htmlhttps://blog.csdn.net/u010352695/article/details/40924019以及来自同学的题解用途&适用作为一种近似......
  • git使用详解
     一、git介绍1、git简介Git是一个开源的分布式版本控制系统(最先进的,没有之一),用于敏捷高效地处理任何或小或大的项目。Git是LinusTorvalds为了帮助管理Linux内核开发而开发的一个开放源码的版本控制软件。Git与常用的版本控制工具CVS,Subversion(SVN)等不同,它采......
  • NotePad++ 安装Zen coding 完美支持PHP
    NotePad++ 安装Zencoding完美支持PHP依据Html或css增加自动补全,发现PHP的美元符转义为数字1,或2或3配置路径为: \Notepad++\plugins\NppScripting\includes\ZenCoding.js在varzen_settings中增加 'phpSymbol':'$',  在调用时${phpSymbol} 即可自动补全带有美......
  • gitee初建项目提交、更新
    提交代码1、先去github创建一个仓库(Repositories),得到这个仓库地址,如:https://github.com/xxxx/htmlDemo.git2、在要上传的文件夹里面打开gitbash,按顺序执行     ①gitinit     ②gitremoteaddoriginhttps://github.com/xxxx/htmlDemo.git     ③git......
  • 你对Git的branch及工作流的理解是什么?
    我对Git的branch和工作流的理解,尤其在前端开发的语境下,如下:分支(Branches):Git的分支模型是其最大优势之一。分支本质上是指向某个提交的指针,允许开发者在不影响主代码库(通常是main或master分支)的情况下,创建独立的开发线。这使得并行开发、特性隔离和更安全的代码集......
  • 【20241121】Git客户端配置使用和各种命令解析
    gitee的使用文档  1、gitee是什么?基于git的代码托管协助平台2、git网站上的注册登录2.1打开gitee官网Gitee-基于Git的代码托管和研发协作平台打开注册登录即可。邮箱注册最好,非邮箱在个人-设置里添加自己的邮箱。新手请公开自己的邮箱,如图:     3、准......
  • Git-忽略规则(.gitignore配置)不生效
    .gitignore中已经标明忽略的文件目录下的文件,gitpush的时候还会出现在push的目录中,或者用gitstatus查看状态,想要忽略的文件还是显示被追踪状态。原因是因为在git忽略目录中,新建的文件在git中会有缓存,如果某些文件已经被纳入了版本管理中,就算是在.gitignore中已经声明了忽略路径......
  • 关于coding平台上如何使用持续集成部署前端项目
    简单介绍,coding平台是腾讯云合作提供的一个在线代码仓库管理平台,跟GitHub和Gitlab类似,然后上面提供了在线部署CI/CD流程,也就是自动化部署,在这平台功能上称之为持续集成。下面直接进入如何部署的流程:这里以react项目为例,但其实Vue或者react都好,部署无非就是命令行和依赖不同罢了(在......