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

如何在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_task

check_date:
  stage: check_date
  script:
    - 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; fi

run_task:
  stage: run_task
  script:
    - 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.kler.cn/a/507285.html

相关文章:

  • 接口测试自动化实战(超详细的)
  • 【算法学习笔记】30:埃氏筛(Sieve of Eratosthenes)和线性筛(Linear Sieve)
  • 换了城市ip属地会变吗?为什么换了城市IP属地不变
  • DAMA CDGA 备考笔记(二)
  • 11-1.Android 项目结构 - androidTest 包与 test 包(单元测试与仪器化测试)
  • RabbitMQ的工作模式
  • 我的世界-与门、或门、非门等基本门电路实现
  • 70_Redis数据结构-RedisObject
  • 有效提取激光雷达点云平面点
  • 字符串dp系列
  • SC34018 免提手柄式扬声电话系统
  • 生产管理看板助力节能科技公司实现数据自动化管理
  • PostMan测试webSocket接口(保姆级教程)
  • 浅谈云计算16 | 存储虚拟化技术
  • 力扣第 54 题: 螺旋矩阵
  • Js:正则表达式及其方法
  • 基于单片机的语音控制玩具汽车的设计
  • UE5 gas制作平A,冷却,打击伤害
  • Fabric区块链网络搭建:保姆级图文详解
  • C#在Json序列化时将key和value转为对应的中文
  • jmeter事务控制器-勾选Generate Parent Sample
  • 基于单片机的智能计步器电路设计
  • Flink Standalone 方案中解决挂机问题
  • 树莓派5--系统问题汇总
  • Qt 线程常用通信方式
  • 【LeetCode】每日一题 2024_1_14 超过阈值的最少操作数 I(简单模拟)