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

相关推荐
习惯就好zz18 小时前
在 Ubuntu 18.04 旧系统上部署新版 GitHub Actions Runner 的终极方案
linux·ubuntu·github·cicd·action
梁萌7 天前
Jenkins自动化部署(docker)
docker·自动化·jenkins·流水线·cicd·smartadmin
一念一花一世界14 天前
降本增效,安全可控:Arbess如何加速软件发布周期
安全·cicd·arbess
一念一花一世界16 天前
Arbess零基础学习 - 使用自定义权限优化流水线管理
权限·cicd·arbess
探索云原生20 天前
Buildah 简明教程:让镜像构建更轻量,告别 Docker 依赖
linux·docker·云原生·go·cicd
一念一花一世界20 天前
Arbess从基础到实践(25) - 集成GitLab+阿里云OSS实现Java项目自动化构建并将制品上传Aliyun OSS
java·阿里云·gitlab·cicd·arbess
一念一花一世界21 天前
Arbess从基础到实践(23) - 集成GitLab+Hadess实现Java项目构建并上传制品
java·gitlab·cicd·arbess·制品库
一念一花一世界21 天前
Arbess从基础到实践(20) - 集成GitHub+SonarQube实现Java项目自动化部署
java·github·cicd·arbess
一念一花一世界1 个月前
Arbess从基础到实践(5) - 集成GitLab+SonarQube搭建Java项目自动化部署
java·gitlab·sonarqube·cicd·arbess
一念一花一世界1 个月前
一文了解CI/CD工具Arbess安装与配置
ci/cd·安装配置·cicd·arbess