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

相关推荐
小鱼,10 天前
Jenkins构建完成后发送飞书通知消息
jenkins·cicd
我爱吃土豆118 天前
从零给个人项目搭一套 CI/CD
阿里云·部署·cicd
Java后端的Ai之路23 天前
一文搞懂 GitHub Actions-CICD
开发语言·大模型·github·cicd·action
深念Y1 个月前
Makefile vs go run:Go 项目构建方式对比
java·开发语言·golang·k8s·编译·流水线·cicd
潘正翔1 个月前
jenkins构建cicd流水线
运维·服务器·ci/cd·容器·自动化·jenkins·cicd
meijinmeng2 个月前
EKS 集群 ArgoCD `v3.0.6 → v3.1.x → v3.2.x` 备份,恢复,升级,巡检手册
argocd·cicd
小玮看世界4 个月前
【技术成长实录】北京地铁12号线数据分析系统:从一个观察到一个完整项目的演进之路
python·人机交互·学习方法·cicd·项目交付
齐潇宇4 个月前
DevOps介绍与工具链全解析
运维·devops·cicd
终端行者5 个月前
Jenkins Pipeline 企业级用法 参数化构建+Ansible发布---上
docker·ansible·jenkins·cicd
雨声不在5 个月前
gitlab ci Runner 配置
gitlab·cicd