DrevOps项目中Lagoon CLI命令的封装优化实践

DrevOps项目中Lagoon CLI命令的封装优化实践

drevops 💧 + 🐳 + 🏗️ + 🛠️ + 🧪️ Drupal project template drevops 项目地址: https://gitcode.com/gh_mirrors/dr/drevops

背景介绍

在DrevOps项目的部署流程中,开发团队发现Lagoon CLI命令的使用方式存在可读性和维护性方面的问题。原始的Lagoon命令包含了大量重复的参数和选项,使得脚本文件显得冗长且难以理解。这与项目中已经对Drush命令进行的优雅封装形成了鲜明对比。

问题分析

原始的Lagoon命令调用方式如下:

lagoon --force --skip-update-check -i "${DREVOPS_DEPLOY_SSH_FILE}" -l "${DREVOPS_DEPLOY_LAGOON_INSTANCE}" delete environment -p "${LAGOON_PROJECT}" -e "${DREVOPS_DEPLOY_BRANCH}"

这种写法存在几个明显问题:

  1. 命令过于冗长,可读性差
  2. 重复的参数在每个命令中都需要出现
  3. 维护困难,如果需要修改公共参数,需要修改多处

解决方案

团队决定采用函数封装的方式来优化Lagoon命令的调用。具体实现方式是在shell脚本中定义一个lagoon()函数:

lagoon() { 
  lagoon --force --skip-update-check -i "${DREVOPS_DEPLOY_SSH_FILE}" -l "${DREVOPS_DEPLOY_LAGOON_INSTANCE}" -p "${LAGOON_PROJECT}" "$@";
}

这样优化后,实际调用变得非常简洁:

lagoon delete environment -e "${DREVOPS_DEPLOY_BRANCH}" || true

技术实现细节

  1. 函数封装:通过shell函数将公共参数和选项封装起来
  2. 参数传递:使用"$@"将所有传入的参数原样传递给底层命令
  3. 错误处理:添加|| true确保命令失败不会中断脚本执行
  4. 作用范围:该优化应用于deploy-lagoon.shtask-custom-lagoon.sh两个关键脚本文件

实施效果

这种封装方式带来了多重好处:

  • 代码简洁性:显著减少了代码行数,提高了可读性
  • 维护便利性:公共参数只需在一处修改
  • 一致性:与项目中已有的Drush命令封装方式保持一致
  • 错误处理:更容易添加统一的错误处理逻辑

最佳实践建议

对于类似的项目,可以考虑以下实践:

  1. 对于频繁使用的CLI工具,考虑使用函数封装
  2. 将环境变量和常用选项封装在函数内部
  3. 保持一致的封装风格
  4. 在函数注释中说明封装的内容和目的
  5. 考虑添加统一的日志和错误处理机制

这种封装方式不仅适用于Lagoon CLI,也可以推广到项目中其他常用命令行工具的管理,是Shell脚本优化的一种有效模式。

drevops 💧 + 🐳 + 🏗️ + 🛠️ + 🧪️ Drupal project template drevops 项目地址: https://gitcode.com/gh_mirrors/dr/drevops

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

江熠垒Anita

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值