November 17, 2022
New feature: Custom Actions 🛠
The transition to a more modular user interface allowed us to accommodate features in clear and compact space. With a hundred and fifty actions already in place covering most of the DevOps landscape, we now decided to give our users complete freedom with the ability do define their own fully customized actions. Of course, that doesn't mean we're not going to add new actions anymore – far from that. All we want to do is invite you to the party. 😎
How it works
Custom actions are defined in a special YAML file stored in your repository. All you need to do is push the definition and the icon of the action to the default branch, and, once successfully parsed, the action lands at the top of your action list in all splendour and glory, its tabs shining like your new Twitter badge, its inputs sparkling prompt messages, your very own custom icon shouting "look at me, it is I who did it". You are free to add any number of tabs and inputs, customize images, commands, and labels, and tune the action to whatever your workflow requires.
Custom actions on the action list
Here we can see the configuration of a simple action launched in the Node environment:
name: "My_Ping_Action" inputs: ip: required: true count: default: '1' execute_commands: - ping $ip -c $count docker_image_name: "node" docker_image_tag: "16"
- The action runs ping on the IP address defined by the user.
- The IP input is mandatory, and the default number of retries (
count) is set to 1.
- The titles of the inputs are reproduced into variables and used in the execution command as
Once added to the repository, the action is rendered top-to-bottom into the GUI:
A custom action rendered in the GUI
And here we can see the results of the execution in the action's logs. All works!
The log of the custom action
And here's a more real-life example. Let's assume that your team is using a task management system like Asana. The goal is to keep your team informed whenever an important pipeline fails by issuing a task in Asana with the link to the failed execution.
Normally, it would require running a method with curl in the Asana's API. However, the drawback of this solution is that you need to define API calls in actions such as Local Shell or Custom Build, and whenever something changes on the Asana's side, the scripts stop working and need to be updated manually. So, instead, you just need to define one action that will issue a task in Asana, and use it across the workspace.
A custom action issuing tasks in Asana
name: "new_task" inputs: title: type: TEXT default: "title" assignee: type: SELECT required: true options: - "Alexander" - "Mike" - "Anna" - "John" content: type: TEXTAREA required: true execute_commands: - run docker asana_custom docker_image_name: "my_company/asana_custom" docker_image_tag: "latest" tabs: projects: name: type: SELECT required: true options: - "Project-1" - "Project-2" - "Project-3" - "Project-4"
Customer Success Manager