
WebHookは、GOで記述された軽量設定可能なツールであり、サーバーにHTTPエンドポイント(フック)を簡単に作成できます。これを使用して、構成されたコマンドを実行できます。また、HTTPリクエスト(ヘッダー、ペイロード、クエリ変数など)からコマンドにデータを渡すこともできます。また、WebHookを使用すると、フックをトリガーするために満たす必要があるルールを指定することもできます。
たとえば、GithubまたはBitbucketを使用している場合、Webhookを使用して、プロジェクトのマスターブランチに変更をプッシュするたびに、ステージングサーバーでプロジェクトの再展開スクリプトを実行するフックをセットアップできます。
MattersomsまたはSlackを使用する場合は、「発信Webhook統合」または「スラッシュコマンド」を設定して、サーバー上でさまざまなコマンドを実行できます。これにより、「着信Webhook統合」または適切な応答本体を使用して直接報告できます。
WebHookは、それがすべき以上のことをすることを目指しています。それは次のとおりです。
他のすべては、コマンドの著者の責任です。
| スクリプト可能なWebhookゲートウェイは、サーバーでカスタムビルド、展開、プロキシスクリプトを安全に実行します。 | 確実に摂取、検証、キュー、変換、フィルタリング、検査、監視、およびWebhooksを再生するためのイベントゲートウェイ。 |
開始するには、最初にGO 1.21以下の環境を適切に設定してから実行してください。
$ go build github.com/adnanh/webhookWebhookの最新バージョンを作成します。
Ubuntu Linux(17.04以降)を使用している場合は、コミュニティパッケージバージョンをインストールするsudo apt-get install webhookを使用してWebhookをインストールできます。
Debian Linux(「ストレッチ」以降)を使用している場合は、https://packages.debian.org/sid/webhookからコミュニティパッケージバージョン(@freekanayakaに感謝)をインストールするsudo apt-get install webhookを使用してWebhookをインストールできます。
FreeBSDを使用している場合は、 pkg install webhookを使用してWebHookをインストールできます。
さまざまなアーキテクチャ用の事前に構築されたバイナリは、GitHubリリースで入手できます。
次のステップは、Webhookに提供するフックを定義することです。 WebHookはJSONまたはYAML構成ファイルをサポートしていますが、次の例では主にJSONに焦点を当てます。 hooks.jsonという名前の空のファイルを作成することから始めます。このファイルには、Webhookが提供するフックの配列が含まれます。フックの定義ページをチェックして、フックに含まれるプロパティとそれらの使用方法の詳細な説明を確認してください。
/var/scripts/redeploy.shにあるredeployスクリプトを実行するredeploy-webhookという名前の単純なフックを定義しましょう。バッシュスクリプトに#!/bin/sh shebangが上にあることを確認してください。
私たちのhooks.jsonファイルは次のようになります:
[
{
"id" : " redeploy-webhook " ,
"execute-command" : " /var/scripts/redeploy.sh " ,
"command-working-directory" : " /var/webhook "
}
]注: YAMLを好む場合、同等のhooks.yamlファイルは次のとおりです。
- id : redeploy-webhook
execute-command : " /var/scripts/redeploy.sh "
command-working-directory : " /var/webhook "これでWebhookを使用して実行できます
$ /path/to/webhook -hooks hooks.json -verboseデフォルトのポート9000で起動し、1つのHTTPエンドポイントを提供します
http://yourserver:9000/hooks/redeploy-webhookWebhookパラメーターページをチェックして、Webhookを起動するときに、IP、ポート、およびHook Hotreload、Verbose Outputなどのその他の設定をオーバーライドする方法を確認します。
単純なHTTP GetまたはPost Requestをそのエンドポイントに実行することにより、指定されたRedeployスクリプトが実行されます。きちんとした!
ただし、そのように定義されているフックは、エンドポイントを知っている人なら誰でもリクエストを送信してコマンドを実行できるため、システムにセキュリティの脅威をもたらす可能性があります。それを防ぐために、フック用の"trigger-rule"プロパティを使用して、フックがトリガーされる正確な状況を指定できます。たとえば、それらを使用して、フックを正常にトリガーするためにパラメーターとして提供する必要がある秘密を追加できます。利用可能なルールとその使用の詳細なリストについては、フックルールページをご覧ください。
WebHookは、マルチパートフォームデータの解析を制限されたサポートを提供します。マルチパートフォームデータには、値とファイルの2種類のパーツを含めることができます。すべてのフォーム値がpayloadスコープに自動的に追加されます。 parse-parameters-as-json設定を使用して、特定の値をJSONとして解析します。次の基準のいずれかと一致しない限り、すべてのファイルは無視されます。
Content-Typeヘッダーはapplication/jsonです。parse-parameters-as-json命名されています。どちらの場合でも、指定されたファイルパーツはJSONとして解析され、 payloadマップに追加されます。
WebHookは、 -template CLIパラメーターが与えられた場合、Hooks構成ファイルをGOテンプレートとして解析できます。テンプレートの使用の詳細については、テンプレートページを参照してください。
WebHookは、デフォルトでHTTPを使用してフックを提供します。 webhookをHTTPSを使用して安全なコンテンツを提供する場合は、Webhookを起動する際に-secureフラグを使用できます。証明書を含むファイルとサーバーの秘密鍵を一致させるファイルは、 -cert /path/to/cert.pemおよび-key /path/to/key.pemフラグを使用して提供する必要があります。証明書が証明書当局によって署名されている場合、証明書ファイルは、サーバーの証明書の後にCAの証明書を連結する必要があります。
TLSバージョンと暗号スイートの選択フラグは、コマンドラインから入手できます。利用可能な暗号スイートをリストするには、 -list-cipher-suitesフラグを使用します。 -tls-min-versionフラグは-list-cipher-suitesで使用できます。
Webhookは、「リバースプロキシ」の背後に実行される場合があります。これは、クライアントからのリクエストを受け入れ、[WebHook] [H]に転送するApache HTTPDやNGINXなどの別のWeb面サーバーです。通常のTCPポートまたはUNIXドメインソケット( -socket Flag)でWebHookをリッスンさせ、そのポートまたはソケットを介して特定のホスト名またはサブパスのリクエストを送信するようにプロキシを構成します。
このモードで実行する場合、 ip-whitelistトリガールールは、クライアントではなくプロキシのアドレスをチェックするため、予想どおりに機能しないことに注意してください。クライアントのIP制限は、Webhookにリクエストを転送するかどうかを決定する前に、プロキシ内で実施する必要があります。
CORSヘッダーを設定する場合は、Webhookを起動しながら-header name=valueフラグを使用して、各応答で返される適切なCORSヘッダーを設定できます。
systemdの下で実行されますSystemDを使用するプラットフォームでは、WebHookはソケットのアクティベーションメカニズムをサポートしています。 WebHookがSystemDマネージドソケットから起動されたことを検出すると、独自のリスニングポートを開く代わりに自動的に使用します。詳細については、SystemDページを参照してください。
次のDocker画像のいずれかを使用するか、独自の画像を作成します(このディスカッションをお読みください)。
フックのより複雑な例については、フックの例ページをご覧ください。
Webhookコミュニティによって貢献されたWebhookに関連するツールとヘルパーのコレクションについては、WebHook-Contribリポジトリを参照してください。
既存の問題をチェックして、他の誰かが同じ問題を抱えているかどうかを確認するか、新しい問題を開きます。
DigitalOceanは、開発者向けに設計されたシンプルで堅牢なクラウドコンピューティングプラットフォームです。
BrowserStackは、ユーザーが仮想マシン、デバイス、またはエミュレーターをインストールすることなく、さまざまなオペレーティングシステムやモバイルデバイスのさまざまなブラウザーで開発者がWebサイトをテストできるようにするクラウドベースのクロスブラウザーテストツールです。
スポンサーになることにより、このプロジェクトをサポートします。あなたのロゴは、あなたのウェブサイトへのリンクでここに表示されます。
このプロジェクトは、貢献するすべての人々のおかげで存在します。貢献する!。
すべての支援者に感謝します!
MITライセンス(MIT)
Copyright(c)2015 Adnan Hajdarevic [email protected]
このソフトウェアと関連するドキュメントファイル(「ソフトウェア」)のコピーを入手して、制限なしにソフトウェアを扱うために、このソフトウェアを制限する権利を含め、ソフトウェアのコピーをコピー、変更、公開、配布、販売する、ソフトウェアのコピーを許可する人を許可する人を許可することを含めて、許可が無料で許可されます。
上記の著作権通知とこの許可通知は、ソフトウェアのすべてのコピーまたはかなりの部分に含まれるものとします。
このソフトウェアは、商品性、特定の目的への適合性、および非侵害の保証を含むがこれらに限定されない、明示的または黙示的なものを保証することなく、「現状のまま」提供されます。いかなる場合でも、著者または著作権所有者は、契約、不法行為、またはその他の訴訟、ソフトウェアまたはソフトウェアの使用またはその他の取引に関連する、またはその他の契約、またはその他の請求、またはその他の責任について責任を負いません。