0.4.1 • Published 6 years ago

cloud-build-discord-notifier v0.4.1

Weekly downloads
3
License
Apache-2.0
Repository
github
Last release
6 years ago

🏗️ Cloud Build Discord Notifier

Unofficial utilities to publish build messages to Discord using Discord.js.

Getting Started

Install

npm install --save cloud-build-message discord.js cloud-build-discord-notifier

JavaScript

In a Google Cloud Function for Pub/Sub, you can decode a message and get an object with normalized data:

const pubsubCloudBuildMsg = require("cloud-build-message")
const discordNotifier = require("cloud-build-discord-notifier")

class MyDiscordChannelNotifier extends DiscordChannelNotifier {
  async sendMessage(channel, buildResult) {
    await channel.send({
      embed: {
        title: `Build ${buildResult.status}: ${buildResult.repoName}`
      }
    })
  }
}

exports.helloPubSub = (data, context) => {
  const decodedMessage = pubsubCloudBuildMsg.decodeMessage(data, context)
  const buildResult = pubsubCloudBuildMsg.extractProperties(decodedMessage)

  const discordConfig = {
    notifiers: [new MyDiscordChannelNotifier(process.env.DISCORD_GUILD_ID || "", process.env.DISCORD_CHANNEL_NAME || "")],
    token: process.env.DISCORD_BOT_TOKEN || "",
  }

  await discordNotifier.notifyDiscord(buildResult, discordConfig)
}

TypeScript

In a Google Cloud Function for Pub/Sub, you can decode a message and get an object with normalized data:

import { decodeMessage, extractResult, IBuildResult } from "cloud-build-message"
import Discord = require("discord.js")
import { DiscordChannelNotifier, notifyDiscord } from "cloud-build-discord-notifier"

class MyDiscordChannelNotifier extends DiscordChannelNotifier {
  public async sendMessage(channel: Discord.Channel, buildResult: IBuildResult) {
    if (!(channel instanceof Discord.TextChannel)) {
      return
    }

    await channel.send({
      embed: {
        title: `Build ${buildResult.status}: ${buildResult.repoName}`
      }
    })
  }
}

export function helloPubSub(data: any, context: any) {
  const decodedMessage = decodeMessage(data, context)
  const buildResult = extractResult(decodedMessage)

  const discordConfig = {
    notifiers: [new MyDiscordChannelNotifier(process.env.DISCORD_GUILD_ID || "", process.env.DISCORD_CHANNEL_NAME || "")],
    token: process.env.DISCORD_BOT_TOKEN || "",
  }

  await notifyDiscord(buildResult, discordConfig)
}

License

Apache-2.0 License

0.4.1

6 years ago

0.4.0

6 years ago

0.3.0

6 years ago

0.2.0

6 years ago

0.1.0

6 years ago