LoginSignup
2
1

More than 5 years have passed since last update.

Discordにファイルをアップロードするactionsを作成してみた

Posted at

はじめに

技術書典で本を書いています
Re:VIEWでビルドするworkflowをgithub actionsで作成していますが、ビルドしたPDFをDiscordへアップロードする部分をactionとして公開してみました(おもしろそうだったので)

作ったもの

sinshutu/upload-to-discord: A GitHub Action that uploads a file to Discord channel.

作り方

簡単には以下の3つの手順です
1. entrypoint.shを作成
2. Dockerfileを作成
3. workflowに組み込む

entrypoint.shを作成

Discordへファイルをアップロードする方法を調べる

webhookのurlをcurlで叩くのがシンプルそうなのでそれを調べる
cURL · Discord Webhooks Guide を参考にcurlコマンドで送信

curlでファイルを送信する場合は -F オプションが使える
ファイルを指定する場合は curl -F "file=@/path/to/file" のように @を付ける必要がある
curl option 覚え書き - Qiita

結果として以下のような感じで送信するように

curl -H 'Content-Type: multipart/form-data' \
-X POST \
-F "file=@$1" $DISCORD_WEBHOOK

$1 はコマンドの第一引数
$DISCORD_WEBHOOK はGithubのSecretsに登録した環境変数が読み込まれる

Dockerfileを作成する

curlが実行できるDockerイメージを作成するだけなのでベースには alpine を使う
actionに使われるLABELの設定と先ほど作成したentrypoint.shをCOPYする

FROM alpine:latest
LABEL author="@sinshutu"

LABEL "com.github.actions.name"="Upload to Discord"
LABEL "com.github.actions.description"="Uploads a file to Discord channel."
LABEL "com.github.actions.icon"="package"
LABEL "com.github.actions.color"="blue"

RUN apk add --no-cache curl

COPY entrypoint.sh /usr/bin/entrypoint.sh

ENTRYPOINT ["entrypoint.sh"]

workflowに組み込む

README を参照ください

おわりに

以外と簡単に作れました
この程度ならactionにする必要ないのでは?って思ってたりする

Slackへファイルアップロードするのも欲しいかも

参考

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1