How to schedule a Function and Job Template
Whether you created a new function or Job Template to automate a task in your DevOps process, or installed a function based solution from the DevOps Exchange, you can now schedule it to run automatically at a specified time and frequency.
In this post you will learn how to schedule a function and job template to run automatically, saving you time from manually executing them.
An example use case is to automate the cleanup of git branches which is a solution available in the DevOps Exchange. This solution includes a function that you can schedule on a weekly basis. For this use case we will leverage a scheduled flow, job template and the Actions API.
Let’s take a look at how to set up the scheduling!
- Have a Copado API Key in Account Summary tab
- Have a Job Template
- The cleanup git branches solution includes a standalone function, you’ll need to create a Job Template and then add a Function step by selecting the branch cleanup function.
Creating the Flow
1. Create a Copado Actions API Key
The execution of the job template requires an authentication process. Go ahead and create a Copado API Key to enable secure access to schedule the execution.
- Navigate to Copado Actions API tab
- Click on New
- Select Run Job Template action
- Set expiration to 365 days
- Click Save
2. Register the Copado API Endpoint for callouts
The job template scheduled execution requires doing a callout to the Copado API and flows enforce that callouts happen only with authorized endpoints. Go ahead and create a named credential to authorize the Copado API Endpoint.
- Navigate to Setup -> Named Credentials
- Click on New
- Enter a name, like Copado API Credential
- Enter your Copado Instance URL. Navigate to Account Summary tab to copy it
- For example: https://app-api.copado.com
- Leave the identity type as Anonymous
- Click Save
3. Create the Scheduled Flow
The scheduled flow enables you to specify a time and frequency in which the flow needs to be executed.
- Navigate to Setup -> Flows
- Click on New Flow
- Select Scheduled Triggered Flow option
- Click Create
- Click Set Schedule
- Specify the start date and start time
- Specify the frequency
The flow will look like this when finished with the process
4. Define the scheduled execution parameters
To execute the job template, we’ll use the Copado Actions REST API endpoint. This requires a set of parameters, like for example which job template should be executed and what is the API Key for authentication. We’ll store the parameters in a formula resource, encode it and then pass it as a parameter when executing the job template in a later step.
- Click on New Resource
- Select type Text Template
- Enter a name, like JSONPayload
- Select View as Plain Text
- Copy and paste the payload or body
- Enter the job template API Name. This can be found in the job template record API Name field
- The payload parameter runAfterInstantiation must be equal to true
The REST API endpoint’s GET method requires that the payload is sent as URL Encoded. We’ll create a new formula resource to encode the payload.
- Click on New Resource
- Select type Formula
- Enter a name, like Encoded Payload
- Use the URLEncode function to encode the payload variable
5. Add New Action
- Click on the plus icon in the flow diagram and select Action
- In the modal, click on HTTP Callout Action
- Enter a name with no spaces, like CopadoActionsAPI
- Select the Named Credential
- Click Next
- Enter a name for the endpoint, like Execute Job Template
- Select HTTP Method Get
- Copy and paste the Run Job Template endpoint from the API Guide
- Add 2 query parameters
- webhookKey (type String)
- Payload (type String)
- Click on Provide Sample Response
- Copy and paste the 200 response from API Guide.
- Replace any null values with empty string “”. This is only applicable with the Flow HTTP action. If you’re testing the API with other tools, continue to use null.
- If using Copado version v20.14 or later, the JSON response is exactly as in the screenshot. If using an older version, the response is inside an array - starts with an opening bracket [ and finishes with a closing bracket ].
- Click Done to close the Response modal
- Click Done again to close the HTTP service modal
- Next, enter a name for the action, like Execute Job Template
- Copy the key from the Copado Actions API tab and paste it in the webhookKey parameter
- Select the encoded payload variable in the payload parameter
- Click Done to close the modal. And you’re done! This is how the finished flow looks like:
6. Test the Flow Execution
Confirm that the flow configuration is correct by testing the execution in debug mode.
- Click Debug
- Click Run on the Debug Flow modal
- Confirm response is successful 200
Scheduling a Function and Job Template execution is straightforward. By leveraging flows, you also have the option to implement advanced use cases like, for example, querying and updating records before and after executing the job template.
If you would like to inspect the scheduled executions, simply navigate to the Job Template record and select the Job Executions subtab:
Interested in learning more? Check out these resources
About the Author
David Venegas is a product leader driving innovation of the Copado Platform SDK & API capabilities for users to extend and automate CICD DevOps processes.