くりにっき

フルスタックキュアエンジニアです

wgetでPOSTする

tl;dr;

wget --post-data="key1=value1&key2=value2" https://example.com/webhook -O /dev/null

経緯

  • CIの実行中に通知用のwebhookをPOSTして通知をやりたかったんだけど、CIで使ってるDockerイメージに curl が入っていなくて困った
  • 素直に curl 入れればよかったんだけど、パッケージのインストールはスロービルドの原因になるのでなるべくインストールしたくなかった
  • curl はなかったけど wget は入ってたので wget でPOSTしてみた

解説

冒頭のコマンドが全てなのですが、特筆するとしたら最後の -O /dev/null 辺りです。

wgetするとPOSTであってもカレントディレクトリに webhook みたいなファイルを書き出すのですが、その状態でもう一度同じURLに対して wget すると( つまり1回のCIで同じwebhookを2回叩くと *1

wget: can't open 'webhook': File exists

のようなエラーになるので、2回目エラーにならないように出力を /dev/null に捨てています。

*1:自分の場合terraform applyの前後で通知をしようとしたらapply後の通知でエラーになった