/teams-incoming-webhook-action

GitHub Action that sends an AdaptiveCard notification to an MS Teams Incoming Webhook

Primary LanguageJavaScriptMIT LicenseMIT

teams-incoming-webhook-action

Build and Test

Sends an AdaptiveCard notification to an MS Teams Incoming Webhook from a GitHub Action Workflow

This action requires a secret to be set up with your Teams Incoming Webhook URL named MS_TEAMS_WEBHOOK_URL (official docs for creating secrets in your repo)

Inputs

  • github-token
    • required: true
    • type: string
    • description: GitHub Token for API operations (see examples for how to reference)
    • example: github-token: ${{ github.token }}
  • webhook-url
    • required: true
    • type: string
    • description: MS Teams Incoming Webhook URL
    • example: webhook-url: ${{ secrets.MS_TEAMS_WEBHOOK_URL }}
  • title
    • required: true
    • type: string
    • description: Message title or heading
    • example: title: "Test Message Heading"
  • message
    • required: false
    • type: string
    • default: ""
    • description: Message to be sent (not used for workflow status notifications)
    • example: message: "This is some test message content for a simple notification"
  • color
    • required: false
    • type: string
    • default: "default"
    • description: Background color of the heading in the message - accepts default, info, success, failure, warning as values
    • example: color: "info"
  • deploy-card
    • required: false
    • type: boolean
    • default: false
    • description: Sends a workflow notification that is built dynamically from commit and repo info
    • example: deploy-card: true
  • timezone
    • required: false
    • type: string
    • default: "America/New_York"
    • description: Timezone to use for timestamps in messages
    • example: timezone: "Europe/Rome"

Example Usage

This action was built with the intention of sending workflow status notifications but also supports a simple message style

Simple Notification

The following sends a simple notification with a title and message

- name: Send simple notification
  uses: mikesprague/teams-incoming-webhook-action@v1
  with:
    github-token: ${{ github.token }}
    webhook-url: ${{ secrets.MS_TEAMS_WEBHOOK_URL }}
    title: "Notification Test"
    message: "This is an example of a simple notification with a title and a body"

Simple Notification Example

Workflow Status Notifications

The following examples show how to send notifications based on your workflow status

Info Notification

Include as first step in workflow to notify workflow run has started

- name: Deploy Started Notification
  uses: mikesprague/teams-incoming-webhook-action@v1
  with:
    github-token: ${{ github.token }}
    webhook-url: ${{ secrets.MS_TEAMS_WEBHOOK_URL }}
    deploy-card: true
    title: "Deployment Started"
    color: "info"

Deploy Notification Example - Info

Cancel Notification

Include anywhere in steps to notify workflow run has been cancelled

- name: Cancelled Notification
  if: ${{ cancelled() }}
  uses: mikesprague/teams-incoming-webhook-action@v1
  with:
    github-token: ${{ github.token }}
    webhook-url: ${{ secrets.MS_TEAMS_WEBHOOK_URL }}
    deploy-card: true
    title: "Deployment Cancelled"
    color: "warning"

Deploy Notification Example - Info

Failure Notification

Include anywhere in steps to notify when a workflow run fails

- name: Failure Notification
  if: ${{ failure() }}
  uses: mikesprague/teams-incoming-webhook-action@v1
  with:
    github-token: ${{ github.token }}
    webhook-url: ${{ secrets.MS_TEAMS_WEBHOOK_URL }}
    deploy-card: true
    title: "Deployment Failed"
    color: "failure"

Deploy Notification Example - Info

Success Message

Include anywhere in steps to notify when workflow run is successful

- name: Success Notification
  if: ${{ success() }}
  uses: mikesprague/teams-incoming-webhook-action@v1
  with:
    github-token: ${{ github.token }}
    webhook-url: ${{ secrets.MS_TEAMS_WEBHOOK_URL }}
    deploy-card: true
    title: "Deployment Successful"
    color: "success"

Deploy Notification Example - Success

Possible Future Enhancements

Ideas for future enhancements and improvements

  • Support custom payloads/messages