DEV Community

Cover image for How to Schedule Workflows in GitHub Actions
CiCube for CICube

Posted on • Edited on • Originally published at cicube.io

How to Schedule Workflows in GitHub Actions


cicube.io

Introduction

You will be able to use the schedule event in GitHub Actions to trigger the execution of your workflows at selected times based on the cron schedule that you will define. In fact, that could help with automating things to happen on a regular schedule without any action on your end.

Also remember that workflows are bound to the default branch. So, if you're scheduling something, make sure it's on the right branch. If for some reason a scheduled workflow isn't running anymore, that could be either because the repository has become inactive, or else the last person who edited the cron schedule has been removed from the repo. A quick fix for this would be to have someone with access update the cron settings.

How Cron Syntax Works

Cron uses a series of five values to define time:

  1. Minute (0–59)
  2. Hour (0–23)
  3. Day of the month (1–31)
  4. Month (1–12)
  5. Day of the week (0–6, where Sunday is 0)

Here’s an example:

on:
  schedule:
    - cron: '30 5 * * *' # the workflow runs every day at 5:30 UTC.
Enter fullscreen mode Exit fullscreen mode

You can utilize all manner of neat tools that help generate your cron syntax and confirm what time it will run. Here's a decent one: crontab guru, and here are some crontab guru examples to help you get started with your first few entries.

Multiple Schedule Triggers

You could have multiple schedule triggers for one workflow. This further opens a whole field of flexibility: every different kind of time could be scheduled on different days. For example:

on:
  schedule:
    - cron: '30 5 * * 1,3' # runs workflow every Monday and Wednesday at 5:30 UTC.
    - cron: '30 5 * * 2,4' # runs workflow every Tuesday and Thursday at 5:30 UTC.

    # note: skipping certain tasks on Mondays and Wednesdays.
Enter fullscreen mode Exit fullscreen mode

Monitoring GitHub Actions Workflows

CICube is a GitHub Actions monitoring tool that provides you with detailed insights into your workflows to further optimize your CI/CD pipeline. With CICube, you will be able to track your workflow runs, understand where the bottlenecks are, and tease out the best from your build times. Go to cicube.io now and create a free account to better optimize your GitHub Actions workflows!

CICube GitHub Actions Workflow Duration Monitoring


Handling Workflow Delays

One thing to keep in mind is that this workflow will be delayed when the system is under heavy load, especially at the start of the hour. The best time to schedule such workflows - 15 minutes and 45 minutes - is when it's odd. You can also trigger a workflow multiple times a day on using cron expressions.

Important Notes:

  • If the last user who edited a scheduled workflow gets removed from the repository, the workflow automatically gets disabled. For this to be re-enabled again, a person needs to change the cron schedule with write permissions.
  • Scheduling workflows Automatically disables workflows that scheduled in public repositories if there's no activity in the repository for 60 days

Conclusion

Properly scheduling workflows in GitHub Actions will go a long way in improving efficiency and automation for your CI/CD. You will be able to run the workflow at the best time using cron syntax so that the tasks will be carried out on a regular basis without manual input. Furthermore, with careful planning around peak times, delays or dropped jobs will be less likely, and your pipeline will remain smooth. Moreover, it keeps you updated on how GitHub handles/repositories' inactivity and workflow edits so that your scheduled workflows are always active and working. In the end, all of these above-mentioned strategies save a lot of time and increase productivity by ensuring reliable automation of projects.

Top comments (0)