当前位置: 首页 > news >正文

如何在gitlab cicd中实现每月10号上午执行

在 GitLab CI/CD 中,可以通过设置定时触发器(Schedules)和脚本中的时间判断逻辑结合,确保任务只在每月 10 号的上午运行。

以下是实现的步骤:


1. 设置定时触发器

GitLab 提供了 Schedules 功能,可以指定每天定时运行某个任务。你可以设置一个定时任务,每天在上午运行一次,例如早上 8 点。

操作步骤:

  1. 进入项目的 CI/CD -> Schedules 页面。
  2. 点击 New schedule
  3. 设置 Schedule 时间为每天上午,比如 08:00
  4. Cron 表达式中选择合适的时间间隔。
  5. 保存设置。

2. .gitlab-ci.yml 文件中添加时间判断逻辑

在 GitLab CI 的脚本中,通过 date 命令检查当前是否是每月 10 号上午。如果条件不满足,直接退出任务。

以下是一个示例:

stages:- check_date- run_taskcheck_date:stage: check_datescript:- echo "Checking if it's the 10th and before noon..."# 获取当前时间信息- TODAY=$(date +%d)- HOUR=$(date +%H)# 判断是否是10号且上午- if [ "$TODAY" -eq 10 ] && [ "$HOUR" -lt 12 ]; then echo "Proceeding with the task"; else echo "Not the 10th morning, exiting..."; exit 0; firun_task:stage: run_taskscript:- echo "Running the main task..."- # 在这里放置实际任务脚本needs:- check_date

3. 解释代码逻辑

  1. date 命令

    • date +%d 获取当前日期(例如 10)。
    • date +%H 获取当前小时(24 小时制,0-23)。
  2. 判断逻辑

    • 如果当前日期是 10 且小时小于 12,继续执行任务。
    • 否则打印信息并退出任务(exit 0),退出不会标记任务失败。
  3. 分阶段执行

    • check_date 阶段检查日期。
    • 如果日期条件不符合,整个管道会安全结束,不运行后续任务。

示例输出

如果是每月 10 号上午

Checking if it's the 10th and before noon...
Proceeding with the task
Running the main task...

如果不是每月 10 号上午

Checking if it's the 10th and before noon...
Not the 10th morning, exiting...

总结

通过结合 Schedules 和脚本中的日期判断逻辑,可以确保任务只在每月 10 号上午执行。Schedules 确保任务定时触发,而脚本中的逻辑提供额外的保障,避免错误触发。

http://www.lryc.cn/news/521027.html

相关文章:

  • SimpleFOC |SimpleFOC学习笔记汇总
  • OpenArk64:Windows 系统分析与逆向工程工具详解
  • 数据储存与管理【大数据导论】
  • 《从零到一:搭建高效体育直播网站的全流程技术指南》
  • 松散比较(PHP)(小迪网络安全笔记~
  • 一文了解如何使用 DBeaver 管理 DolphinDB
  • 网络基础知识指南|1-20个
  • 01.09周四F34-Day50打卡
  • Linux简介和环境搭建
  • 在移动端开发图表,uniapp+echarts,需要特殊处理,使用renderjs
  • SpringBoot之LazyInitializationBeanFactoryPostProcessor类源码学习
  • United States of America三种表示
  • OpenCV基于均值漂移算法(pyrMeanShiftFiltering)的水彩画特效
  • 【C++】拷贝构造函数与运算符重载
  • 2024年开发语言热度排名
  • CryptoMamba:利用状态空间模型实现精确的比特币价格预测
  • MQTTX客户端使用
  • 网管平台(进阶篇):路由器的管理实践
  • 基于微信小程序的智能停车场管理系统设计与实现(LW+源码+讲解)
  • 【Vue】父组件向子组件传递参数;子组件向父组件触发自定义事件
  • 搜广推校招面经七
  • Leetcode 518. 零钱兑换 II 动态规划
  • 【EI 会议征稿】第四届材料工程与应用力学国际学术会议(ICMEAAE 2025)
  • 集合的线程安全
  • 《深入理解Mybatis原理》Mybatis中的缓存实现原理
  • C# 数据拟合教程:使用 Math.NET Numerics 的简单实现
  • C# 中对 Task 中的异常进行捕获
  • Android车机DIY开发之软件篇(九)默认应用和服务修改
  • SimpleFOC01|基于STM32F103+CubeMX,移植核心的common代码
  • web.xml常用配置