0.4.1 • Published 6 years ago
cloud-build-discord-notifier v0.4.1
🏗️ 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)
}