mirror of
https://github.com/SethCohen/github-releases-to-discord
synced 2026-09-14 20:13:23 +00:00
feat: updated action
This commit is contained in:
@@ -1,19 +1,15 @@
|
||||
on: [push]
|
||||
on:
|
||||
release:
|
||||
types: [published]
|
||||
|
||||
jobs:
|
||||
hello_world_job:
|
||||
github-release-to-discord:
|
||||
runs-on: ubuntu-latest
|
||||
name: A job to say hello
|
||||
steps:
|
||||
# To use this repository's private action,
|
||||
# you must check out the repository
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v3
|
||||
- name: Hello world action step
|
||||
- name: Handle Release
|
||||
uses: ./ # Uses an action in the root directory
|
||||
id: hello
|
||||
id: release
|
||||
with:
|
||||
who-to-greet: 'Mona the Octocat'
|
||||
# Use the output from the `hello` step
|
||||
- name: Get the output time
|
||||
run: echo "The time was ${{ steps.hello.outputs.time }}"
|
||||
webhook_url: ${{ secrets.WEBHOOK_URL }}
|
||||
+4
-8
@@ -1,13 +1,9 @@
|
||||
name: 'Hello World'
|
||||
description: 'Greet someone and record the time'
|
||||
name: Github Releases To Discord
|
||||
description: Send automatic styled releases to Discord.
|
||||
inputs:
|
||||
who-to-greet: # id of input
|
||||
description: 'Who to greet'
|
||||
webhook_url:
|
||||
description: Discord's webhook url. Use GH repo secrets.
|
||||
required: true
|
||||
default: 'World'
|
||||
outputs:
|
||||
time: # id of output
|
||||
description: 'The time we greeted you'
|
||||
runs:
|
||||
using: 'node16'
|
||||
main: 'index.js'
|
||||
@@ -1,15 +1,52 @@
|
||||
const core = require('@actions/core');
|
||||
const github = require('@actions/github');
|
||||
|
||||
try {
|
||||
// `who-to-greet` input defined in action metadata file
|
||||
const nameToGreet = core.getInput('who-to-greet');
|
||||
console.log(`Hello ${nameToGreet}!`);
|
||||
const time = (new Date()).toTimeString();
|
||||
core.setOutput("time", time);
|
||||
// Get the JSON webhook payload for the event that triggered the workflow
|
||||
const payload = JSON.stringify(github.context.payload, undefined, 2)
|
||||
console.log(`The event payload: ${payload}`);
|
||||
} catch (error) {
|
||||
core.setFailed(error.message);
|
||||
}
|
||||
const fetch = require('node-fetch')
|
||||
|
||||
async function getContext () {
|
||||
const payload = github.context.payload
|
||||
|
||||
return {
|
||||
body: payload.release.body.length < 1500
|
||||
? payload.release.body
|
||||
: payload.release.body.substring(0, 1500) + ` ([...](${payload.release.html_url}))`,
|
||||
version: payload.release.tag_name,
|
||||
html_url: payload.release.html_url
|
||||
}
|
||||
}
|
||||
|
||||
async function run () {
|
||||
try {
|
||||
const webhookUrl = core.getInput('webhook_url')
|
||||
|
||||
if (!webhookUrl) {
|
||||
return core.setFailed('webhook_url not set. Please set it.')
|
||||
}
|
||||
|
||||
const content = await getContext()
|
||||
|
||||
const embedMsg = {
|
||||
color: 3447003,
|
||||
title: `Release ${content.version}`,
|
||||
description: content.body,
|
||||
url: content.html_url
|
||||
}
|
||||
|
||||
const body = { embeds: [embedMsg] }
|
||||
|
||||
const url = `${webhookUrl}?wait=true`
|
||||
|
||||
fetch(url, {
|
||||
method: 'post',
|
||||
body: JSON.stringify(body),
|
||||
headers: { 'Content-Type': 'application/json' }
|
||||
})
|
||||
.then(res => res.json())
|
||||
.then(data => core.info(JSON.stringify(data)))
|
||||
.catch(err => core.info(err))
|
||||
} catch (error) {
|
||||
core.setFailed(error.message)
|
||||
}
|
||||
}
|
||||
|
||||
run()
|
||||
Reference in New Issue
Block a user