In an earlier post, I showed how to use azure pipelines to build a gatsby site and deploy to netlify. But it was slightly limited. A live build was deployed only when a push was made to master. There was no way to have scheduled posts go live automatically.
There are 2 ways to approach this problem.
- By using an AWS Lambda or Azure Functions. This is what I had initially and you can see the codehere.
- By adding a new azure pipeline which runs on a schedule.
In this post, I will be using azure pipelines to deploy the site daily.
Note: We will be using the template files created in the Deploying a Gatsby site to Netlify using Azure Pipelinesso I would suggest reading that first. Go on, I will wait.
Adding a new pipeline to schedule posts
Good, you are back.
Let’s create a new file azure-pipelines.daily.yml.
name: 'Daily Release'
schedules:
- cron: '0 14 * * *'
displayName: Daily build
branches:
include:
- master
always: true
trigger:
batch: false
branches:
exclude:
- '*'
pr: none
variables:
- template: azure-pipelines.vars.yml
jobs:
- template: azure-pipelines.common.yml
parameters:
deployScriptParams: '--prod'
netlifySiteId: $(netlify.siteId)
netlifyToken: $(netlify.token)
message: 'Daily build'
- name : The name for this pipeline.
-
schedules : The schedule on which the pipeline should run.
- cron : The cron syntax defining the schedule.
- displayName : The display name for the schedule.
- branches : Include only the master branch so that only the master branch is built and deployed.
- always: true : Always run the pipeline.
-
trigger : Conditions for running the pipeline for when a push is made.
- branches : Exclude all branches so that the build is not triggered for commits on any branch including_master_.
- pr: none : Disable triggering the pipeline for when a PR is opened or changes pushed to an open PR. master.
- variables : We set a template file to get the environment variables.
-
jobs : The jobs to run.
- template : Use the job template created in azure-pipelines.common.yml.
-
parameters : The parameters to be passed to the job template
- netlifySiteId : The site ID from environment variables.
- netlifyToken : The token from environment variables.
- message : The message is hardcoded to Daily Build.
Gotchas
- The cron syntax is mm HH DD MM DW. You can find more details about the supported syntax here
- The timezone for schedules is UTC so the build times need to be adjusted accordingly.
- Don’t forget to set
always: true
. If you have it set to false, a build might not be triggered if you are schedulingposts a few days in advance.
Conclusion
With this setup, I can write posts and schedule them to go live in the future.
Top comments (0)