部署单仓库多目录项目

部署单仓库多目录项目

文章目录

  • 部署单仓库多目录项目
    • 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)库是至关重要的。在屏幕上显示的时候,使用现成的图形库,这样开发人员就不需要弄清楚底层任务,例如如何绘制像素、线条、形状,如果再高级一点…

基于骑手优化算法优化概率神经网络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…

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

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

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

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

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

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

【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…

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

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

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

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

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

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

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

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

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

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

设计模式—命令模式

1.什么是命令模式? 命令模式是一种行为型设计模式,核心是将每种请求或操作封装为一个独立的对象,从而可以集中管理这些请求或操作,比如将请求队列化依次执行、或者对操作进行记录和撤销。 命令模式通过将请求的发送者&#xff0…

梨花声音教育,美食视频配音再次挑战味蕾

在为美食视频进行配音时,配音艺术家的目标是通过声音来激活观众的感官,唤起他们对美味佳肴的渴望,同时展现食物的诱人特色和烹饪的艺术性。配音应当能够描绘美食的丰富细节,传达烹饪的趣味性以及食材的高品质。以下是一些为美食视…

iOS越狱检测总结

文章目录 前言检测越狱文件私有目录检测检测越狱软件检测系统目录是否变为链接动态库检测环境变量检测系统调用检测指令集调用检测其他方式检测 前言 在之前的文章中,已经带大家一起制作了一个屏蔽越狱检测的Tweak。本文就和大家一起学习整理一下iOS系统中有哪些越…

NGINX缓存详解之服务端缓存

服务端缓存 proxy cache属于服务端缓存,主要实现 nginx 服务器对客户端数据请求的快速响应。 nginx 服务器在接收到被代理服务器的响应数据之后,一方面将数据传递给客户端,另一方面根据proxy cache的配置将这些数据缓存到本地硬盘上。 当客户端再次访问相同的数据时,nginx…

【Java系列】SpringBoot 集成MongoDB 详细介绍

目录 写在前面 一、步骤介绍 步骤 1: 添加 MongoDB 依赖 步骤 2: 配置 MongoDB 连接信息 步骤 3: 创建实体类 步骤 4: 创建 Repository 接口 步骤 5: 使用 Repository 进行操作 二、特殊处理 写在前面 在Spring Boot中集成MongoDB的过程相对简单,以下是一个…

架构探索之路-第一站-clickhouse | 京东云技术团队

一、前言 架构, 软件开发中最熟悉不过的名词, 遍布在我们的日常开发工作中, 大到项目整体, 小到功能组件, 想要实现高性能、高扩展、高可用的目标都需要优秀架构理念辅助. 所以本人尝试编写架构系列文章, 去剖析市面上那些经典优秀的开源项目, 学习优秀的架构理念来积累架构设…

移远通信推出六款新型天线,为物联网客户带来更丰富的产品选择

近日,移远通信重磅推出六款新型天线,覆盖5G、非地面网络(NTN)等多种新技术,将为物联网终端等产品带来全新功能和更强大的连接性能。 移远通信COO张栋表示:“当前,物联网应用除了需要高性能的天线…

【libGDX】使用Mesh绘制三角形

1 Mesh 和 ShaderProgram 简介 1.1 创建 Mesh 1)Mesh 的构造方法 public Mesh(boolean isStatic, int maxVertices, int maxIndices, VertexAttribute... attributes) public Mesh(boolean isStatic, int maxVertices, int maxIndices, VertexAttributes attribut…