GitHub Actions can do a lot of things and can be triggered by different methods. Typically, you want a workflow to be executed on a push or a pull-request or an issue.
So, Where does scheduling a task fit in?
- For Tracking good health of your software, you can perform scheduled testing.
- Publishing the Nightly Build of your library, framework or software.
Scheduling doesn't require a change to be made into code. It will keep running on the unchanged or changed code on scheduled time. Scheduling a GitHub Workflow is done using cron. For those who don't know what cron is,
The software utility cron also known as a cron job is a time-based job scheduler in Unix-like computer operating systems.
Here is an example of scheduling a task.
# Give the workflow a name. name: Nightly Build # Trigger Workflow every midnight UTC on: schedule: - cron: '0 0 * * *' workflow_dispatch: #workflow_dispatch helps run workflow anytime with a single click. # A workflow run is made up of one or more jobs that can run sequentially or in parallel jobs: build: name: Scheduling # make sure to run this action in Linux env (say ubuntu) runs-on: ubuntu-latest # Steps represent a sequence of tasks that will be executed as part of the job steps: # Write all the steps you want to schedule
For creating nightly build use create-release action with the above workflow. Make sure to use a dynamic naming format while creating tags & to set
prerelease: true. Use the YYYYMMDD date format in the tag
Defining a cron schedule is a tougher task than one might expect. crontab.guru is a website which converts cron schedule into human-readable format. eg.
0 0 * * * means midnight according to UTC.