如何在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 号上午。如果条件不满足,直接退出任务。

以下是一个示例:

yaml 复制代码
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 确保任务定时触发,而脚本中的逻辑提供额外的保障,避免错误触发。

相关推荐
blog-elvin-vip15 天前
飞书lark机器人 自动化发版
jenkins·cicd
朱友斌1 个月前
【软件安装】Linux服务器中部署gitlab-runner实现CICD流水线
gitlab·cicd·gitlab-runner·runner部署·部署runner·gitlab流水线
一只往上爬的蜗牛2 个月前
【CICD】CICD 持续集成与持续交付在测试中的应用
自动化测试·webhook·cicd
迷茫运维路2 个月前
docker搭建Jenkins2.346.3版本及常用工具集成配置(ldap、maven、ansible、npm等)
运维·docker·jenkins·cicd
探索云原生3 个月前
ArgoWorkflow教程(八)---基于 LifecycleHook 实现流水线通知提醒
linux·jenkins·devops·cicd·tekton·argoworkflow
探索云原生3 个月前
ArgoWorkflow教程(七)---高效的步骤间文件共享策略
linux·jenkins·devops·cicd·tekton·argoworkflow
研究司马懿3 个月前
【云原生】Kubernetes部署Jenkins静动Slave
云原生·自动化·jenkins·cicd·pod·slave·动静slave
小哈里3 个月前
【后端开发】自动化部署、服务管理、问题排查工具(cicd流水线,k8s集群,ELK日志)
elk·kubernetes·自动化·cicd·teamcity
探索云原生3 个月前
ArgoWorkflow教程(六)---无缝实现步骤间参数传递
jenkins·devops·cicd·tekton·argoworkflow