部署单仓库多目录项目

部署单仓库多目录项目

文章目录

  • 部署单仓库多目录项目
    • 1.部署单仓库多目录项目
    • 2.Shell脚本进行部署单仓库多目录项目
      • 2.1 编写Shell脚本
      • 2.2 Demo推送代码及测试
    • 3.小结

1.部署单仓库多目录项目

#部署单仓库多目录项目
在开发过程中,研发团队往往会将一个大型项目拆分成几个子目录进行管理,使得研发- 人员可以更加方便快捷地进行代码组织和管理工作.然而,这种方式会给运维人员带来挑战,因为他们必须单独部署每一个子目录,而不能一键部署整个项目.这是因为Webhook之类的自动化工具无法识别多个目录的情况.

2.Shell脚本进行部署单仓库多目录项目

2.1 编写Shell脚本

#!/bin/bash
# GitLab 仓库路径
GITLAB_REPO=""# 分支
BRANCH=""# 本地克隆目录
CLONE_DIR=""# 获取最新的提交的目录
LATEST_COMMIT=$(git ls-remote --heads $GITLAB_REPO $BRANCH | awk '{print $1}')
echo "最新提交的目录为:${LATEST_COMMIT}" && sleep 1# 进入克隆目录并删除旧文件
cd "$CLONE_DIR" && rm -rf * .git# 如果当前分支不存在,则克隆仓库并切换到最新的提交
if [[ ! -d "$CLONE_DIR/$LATEST_COMMIT" ]]; thengit clone --branch $BRANCH $GITLAB_REPO "$CLONE_DIR/$LATEST_COMMIT" || exit 1# 进入新克隆的目录cd "$CLONE_DIR/$LATEST_COMMIT" || exit 1
else# 如果当前分支已存在,则更新到最新的提交cd "$CLONE_DIR/$LATEST_COMMIT" && git pull origin $BRANCH || exit 1
fi# 获取最新的提交的目录
LATEST_FILES=$(git diff-tree --no-commit-id --name-only -r $LATEST_COMMIT)
echo "最新提交的目录为:${LATEST_FILES}" && sleep 1# 定义特定目录数组
SPECIAL_DIRECTORIES=()# 遍历目录
for dir in $(echo "$LATEST_FILES" | awk -F"/" '{print $1}' | sort -u); do# 处理每个目录echo "Processing directory: $dir"# 检查目录是否为特定目录,并且数组中没有该目录case "$dir" in"demo-0001" | "demo-0002" | "demo-0003" | "demo-0004" | "demo-0005")echo "程序目录 $dir 是特定目录."# 如果数组中没有该目录,则添加到数组if [[ ! " ${SPECIAL_DIRECTORIES[@]} " =~ " $dir " ]]; thenSPECIAL_DIRECTORIES+=("$dir")fi;;*)echo "程序目录 $dir 不是特定目录。";;esac
done# 输出特定目录数组
echo "分支为: $BRANCH, 最新的特定目录为: ${SPECIAL_DIRECTORIES[@]}" && sleep 1# 在这里你可以使用 SPECIAL_DIRECTORIES 数组中的每个目录进行后续的操作
# 循环进行执行
for special_dir in "${SPECIAL_DIRECTORIES[@]}"; doecho "处理特定目录:$special_dir"# 这里添加你需要执行的命令即可
done

2.2 Demo推送代码及测试

#Demo推送代码及测试
下图所示,最后过滤到了特定目录,非特定目录不会显示的.

在这里插入图片描述

3.小结

#小结
此脚本可以配合,Jenkins工具进行部署程序项目.

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/156861.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

MCU 的 TOP 15 图形GUI库:选择最适合你的图形用户界面(一)

在嵌入式系统开发中,选择一个合适的图形用户界面(GUI)库是至关重要的。在屏幕上显示的时候,使用现成的图形库,这样开发人员就不需要弄清楚底层任务,例如如何绘制像素、线条、形状,如果再高级一点…

Java LinkedList链表、HashSet、HashMap

一、Java LinkedList: 链表(LinkedList)是一种常见的基础数据结构,是一种线性表,在每一个节点里存储下一个节点的地址。链表分为单向链表和双向链表。单向链表包含两个值:当前节点的值和指向下一个节点的链…

基于骑手优化算法优化概率神经网络PNN的分类预测 - 附代码

基于骑手优化算法优化概率神经网络PNN的分类预测 - 附代码 文章目录 基于骑手优化算法优化概率神经网络PNN的分类预测 - 附代码1.PNN网络概述2.变压器故障诊街系统相关背景2.1 模型建立 3.基于骑手优化优化的PNN网络5.测试结果6.参考文献7.Matlab代码 摘要:针对PNN神…

2021秋招-总目录

2021秋招-目录 知识点总结 预训练语言模型: Bert家族 1.1 BERT、attention、transformer理解部分 B站讲解–强烈推荐可视化推倒结合代码理解代码部分常见面试考点以及问题: word2vec 、 fasttext 、elmo;BN 、LN、CN、WNNLP中的loss与评价总结 4.1 loss_function&#xff1…

基础算法:大数除以除以13

基础算法:大数除以一个数 信息学奥赛:1175:除以13 时间限制: 1000 ms 内存限制: 65536 KB 【题目描述】 输入一个大于0的大整数N,长度不超过100位,要求输出其除以13得到的商和余数。 【输入】 一个大于0的大整数&…

基于AVR单片机的移动目标视觉追踪系统设计与实现

基于AVR单片机的移动目标视觉追踪系统是一种常见的应用领域,旨在通过摄像头采集图像数据并使用图像处理和追踪算法实现对移动目标的实时追踪。本文将介绍基于AVR单片机的移动目标视觉追踪系统的设计原理和实现步骤,并提供相应的代码示例。 1. 设计概述 …

C语言中的大端字节序和小端字节序是什么?如何进行字节序的转换?

C语言中的大端字节序和小端字节序以及字节序的转换 引言 在计算机科学中,字节序是指多字节数据在存储或传输过程中字节的排列顺序。在C语言中,特别是在涉及二进制数据的处理、网络通信以及硬件相关的编程中,了解大端字节序和小端字节序的概…

QJsonObject经过哪些转换才能发送到UDP端口

一、QJsonObject转换为QJsonDocument 二、将 QJsonDocument 转换为 JSON 字符串,以便输出或传输 三、将 QString 转换为 QByteArray 四、发送到UDP端口 // 将 QJsonObject 转换为 QJsonDocument QJsonDocument jsonDocument(jsonobj); // 将 QJsonDocument 转换为 J…

基于SSM的校内互助交易平台设计

末尾获取源码 开发语言:Java Java开发工具:JDK1.8 后端框架:SSM 前端:Vue 数据库:MySQL5.7和Navicat管理工具结合 服务器:Tomcat8.5 开发软件:IDEA / Eclipse 是否Maven项目:是 目录…

使用 AWS boto3 库从 s3 桶中批量下载数据

文章目录 一、Boto3 快速安装二、账户配置三、代码示例3.1 下载单个文件3.2 下载文件夹内全部文件 官方文档 一、Boto3 快速安装 安装 Boto3 之前,先安装 Python 3.8 或更高版本;对 Python 3.6 及更早版本的支持已弃用。 通过 pip 安装最新的 Boto3 版…

MAX/MSP SDK学习04:Messages selector的使用

其实消息选择器在simplemax示例中就接触到了,但这文档非要讲那么抽象。目前为止对消息选择器的理解是:可判断接收过来的消息是否符合本Object的处理要求,比如加法对象只可接收数值型的消息以处理,但不能接收t_symbol型的消息&…

Laravel/Lumen 任务调度简易入门说明

前提 Laravel 中任务调度简化了服务器系统中 Cron 的操作,使得 计划任务 的实现更为简便。 这里主要以 Laravel 自带的消息队列进行说明,了解其间运行关系可以让我们更清晰的进行代码实现。 下方代码以 Lumen 9.x 框架进行举例,与 Laravel…

【Spring Boot】如何在Linux系统中快速启动Spring Boot的jar包

在Linux系统中先安装java的JDK 然后编写下列service.sh脚本,并根据自己的需求只需要修改export的log_path、exec_cmd参数即可 # 配置运行日志输出的路径 export log_path/usr/local/project/study-pro/logs # 当前服务运行的脚本命令 export exec_cmd"nohup /u…

算法训练营一刷 总结篇

今天就是Day60了,坚持了两个月的算法训练营在今天结束了。这两个月中,学习、练习了许许多多的算法,坚持每天完成博客来打卡,养成了写C的习惯,现在相比于Python我反而更喜欢思路严谨的C。感谢这个平台,感谢C…

【DevOps】Git 图文详解(七):标签管理

Git 图文详解(七):标签管理 标签(Tags)指的是某个分支某个特定时间点的状态,是对某一个提交记录的 固定 “指针” 引用。一经创建,不可移动,存储在工作区根目录下 .git\refs\tags。可…

Ajax相关知识

目录 一.前后端传输数据的编码格式(contentType) 1.form表单 2.编码格式 3.Ajax 4.代码演示 后端 前端HTML 二.Ajax发送JSON格式数据 1.引入 后端 前端 2.后端 接收到的数据为空 解决办法 3.request方法判断Ajax 4.总结 前端在通过ajax…

【网络通信】浅析UDP与TCP协议的奥秘

在现代互联网中,UDP(用户数据报协议)和TCP(传输控制协议)是两种最常用的传输协议,它们被广泛应用于网络数据传输。尽管这两种协议都可以用来在网络上传输数据,但它们在设计目标、特点和适用场景…

如何用 GPTs 帮你写科研项目申请书?

(注:本文为小报童精选文章,已订阅小报童或加入知识星球「玉树芝兰」用户请勿重复付费) 需求 学生们往往会觉得,写开题报告是个苦差事。但他们或许不知道,老师们写起科研项目申请书,压力远比他们…

如何将Docker的构建时间减少40%

与许多公司类似,我们为产品中使用的所有组件构建docker映像。随着时间的推移,其中一些映像变得越来越大,我们的CI构建花费的时间也越来越长。我的目标是CI构建不超过5分钟——差不多是喝杯咖啡休息的理想时间。如果构建花费的时间超过这个时间…

OpenGeometry 开源社区特聘子虔科技云CAD专家 共建云几何内核

11月5日,由广东省工业和信息化厅、广东省科学技术厅、广东省教育厅、深圳市人民政府主办的2023工业软件生态大会在广东省深圳市召开。 开幕式上,备受关注的云几何内核开源平台——OpenGeometry开源社区正式发布。这意味着在几何引擎领域将通过开源这个模…