DEV Community

Alfredo Salzillo
Alfredo Salzillo

Posted on • Edited on

1

Meeting the Octocat

Once upon a time there was a Denosaur...

Welcome gentl-octocats, today I wanted to create a Github Action to use IFTTT Webhooks and i know that all i need will be a simple curl in any Linux container, but, I'm a developer, and i like to try new thinks. And at the moment of the writing what is the hottest news in the Javascript environment?

You guess right! Deno.

So let's start building a github action with a Deno runner.

The image of the Denosaur

First of all we need an image with Deno, and after a simple research i have found hayd/alpine-deno:1.1.0.

So let's start writing the Dockerfile

FROM hayd/alpine-deno:1.1.0

WORKDIR /app

# Prefer not to run as root.
USER deno

# These steps will be re-run upon each file change in your working directory:
ADD . .
# Compile the main app so that it doesn't need to be compiled each startup/entry.
RUN deno cache main.ts

CMD ["run", "--allow-net", "--allow-env", "/app/main.ts"]
Enter fullscreen mode Exit fullscreen mode

Using the Denosaur

The actions it's a simple ts file how will fetch a request to the webhook like this

const input = (key: string) => Deno.env.get(`INPUT_${key}`);

const eventName = input('EVENT');
const key = input('KEY');
const value1 = input('VALUE1');
const value2 = input('VALUE2');
const value3 = input('VALUE3');

console.log(`calling webhook for ${eventName} with`, value1, value2, value3);

await fetch(`https://maker.ifttt.com/trigger/${eventName}/with/key/${key}`, {
  method: 'POST',
  headers: {
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({ value1, value2, value3 }),
});
Enter fullscreen mode Exit fullscreen mode

The Octocat Action

End last but not least the github action definition

# action.yml
name: 'IFTTT Webhook'
description: 'Call an IFTTT Webhook'
inputs:
  event:  # id of input
    description: 'IFTTT webhook event'
    required: true
  key:
     description: 'IFTTT webhook key'
     required: true
  value1:
     description: 'IFTTT webhook optional parameter'
     required: false
  value2:
     description: 'IFTTT webhook optional parameter'
     required: false
  value3:
     description: 'IFTTT webhook optional parameter'
     required: false
runs:
  using: 'docker'
  image: 'Dockerfile'
Enter fullscreen mode Exit fullscreen mode

End of the story

And at the end of the story, in only 5 minutes I have made ifttt-webhook-action using Deno.

ifttt-webhook-action

A GitHub action that triggers an IFTTT webhooks event. This is useful for example when you want to trigger a IFTTT webhook after your deployment succeeds.

Usage

See action.yml

steps:
  - uses: alfredosalzillo/ifttt-webhook-action@master
    with:
      event: your-webhook-event
      key: your-webhook-secret-key
      value1: optional-value
      value2: optional-value
      value3: optional-value
Enter fullscreen mode Exit fullscreen mode

AWS GenAI LIVE image

Real challenges. Real solutions. Real talk.

From technical discussions to philosophical debates, AWS and AWS Partners examine the impact and evolution of gen AI.

Learn more

Top comments (1)

Collapse
 
craigmorten profile image
Craig Morten

Nice one!

(FYI I think you have the brackets the wrong way round for your links! 🙃)

A Workflow Copilot. Tailored to You.

Pieces.app image

Our desktop app, with its intelligent copilot, streamlines coding by generating snippets, extracting code from screenshots, and accelerating problem-solving.

Read the docs

👋 Kindness is contagious

Please leave a ❤️ or a friendly comment on this post if you found it helpful!

Okay