New feature: Custom Actions 🛠

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 listCustom actions on the action list

Example

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 $ip and $count.

Once added to the repository, the action is rendered top-to-bottom into the GUI:

A custom action rendered in the GUIA 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 actionThe log of the custom action

Use case

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.

Action preview

A custom action issuing tasks in AsanaA custom action issuing tasks in Asana

Configuration

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"
In the example above, the call to the Asana API is baked in the Docker image from which the action is launched.
Buddy is 100% customer-driven. Let us know what integrations you need to take your automation game to the next level! If there’s a feature or integration you miss, talk to us on the live chat or drop us a line at support@buddy.works.

Share:

Alexander Kus

Alexander Kus

Customer Success Manager

A story-teller and conversation-lover, Alexander decided to invest his skills to help his friends at Buddy transform the cold language of patch notes into exciting narratives. Also: an avid gamer, hip-hop DJ, Liverpool FC fan, absentminded husband, and the father of two.