部署单仓库多目录项目

部署单仓库多目录项目

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" ]]; then
  git 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 " ]]; then
        SPECIAL_DIRECTORIES+=("$dir")
      fi
      ;;
    *)
      echo "程序目录 $dir 不是特定目录。"
      ;;
  esac
done

# 输出特定目录数组
echo "分支为: $BRANCH, 最新的特定目录为: ${SPECIAL_DIRECTORIES[@]}" && sleep 1

# 在这里你可以使用 SPECIAL_DIRECTORIES 数组中的每个目录进行后续的操作
# 循环进行执行
for special_dir in "${SPECIAL_DIRECTORIES[@]}"; do
  echo "处理特定目录:$special_dir"
  # 这里添加你需要执行的命令即可
done

2.2 Demo推送代码及测试

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

在这里插入图片描述

3.小结

#小结
此脚本可以配合,Jenkins工具进行部署程序项目.
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值