2
0

More than 1 year has passed since last update.

Red Hat OpenShift LocalでWebhooksの機能を試す

Last updated at Posted at 2022-11-06

はじめに

Red Hat OpenShift Container Platform(OCP) には GitHubなどのリポジトリにあるソースコードからコンテナイメージをビルド&デプロイしてくれるSource-to-Image(S2I)や、Webhookを使ってGitHubへのpushをトリガーに自動でビルド&デプロイする機能が備わっており、動作も簡単に確認することが可能です。

気になる方は こちらのハンズオン をお試しください。

しかし、開発目的などでローカルPCで実行可能な Red Hat OpenShift Local(旧Red Hat CodeReady Containers)でWebhookを試したい場合、 GitHubからOpenShift Local(localhost)にPOSTリクエストを送信できない(宛先不明になる)ため一手間加える必要があります。

本記事ではWebhookのパブリックエンドポイントを開発環境に簡単に設定できる UltraHook を用いて解決をしていきます。

1. 環境構築

Macの場合は Terminal 、Windowsの場合は PowerShell 7 で動作確認をしています。
特にWindowsを利用している方はPowerShelのバージョンに注意して実施ください。(5系でUltraHookの動作確認をした際、文字のエンコーディングの違いによるエラーが発生しました)

UltraHookを利用するために、まずはRuby環境を用意し、gemでUltraHookをインストールします。
既にRuby環境がある方はRubyの章をスキップしてください。

環境があるかわからない場合は下記コマンドを実行し、以下の様にRubyのバージョンが表示されるかを確認してください。

# 例)v2.6.8の出力結果
$ ruby -v
ruby 2.6.8p205 (2021-07-07 revision 67951) [universal.x86_64-darwin21]

1-1. Ruby

Windowsの場合は、RubyInstallerのインストーラーをダウンロードして実行してください。
Macの場合は、下記コマンドを実行してください。

$ brew install rbenv
$ rbenv install -l
2.6.10
2.7.6
3.0.4
3.1.2
jruby-9.3.9.0
mruby-3.1.0
picoruby-3.0.0
rbx-5.0
truffleruby-22.3.0
truffleruby+graalvm-22.3.0

Only latest stable releases for each Ruby implementation are shown.
Use 'rbenv install --list-all / -L' to show all local versions.
$ rbenv install x.x.x # x.x.xは一番大きな数字のバージョンを選択 > 3.1.2
$ rbenv global x.x.x # x.x.xはinstallと同じバージョンを指定 > 3.1.2

1-2. UltraHook

下記コマンドを実行してください。

$ sudo gem install ultrahook

以上で環境構築は完了です。

2. UltraHookの設定

https://www.ultrahook.com/register にサインアップし、UltraHookのAPI Keyを取得します。
image.png
表示されるコマンドecho "api_key: xxxxxxxxx" > ~/.ultrahookを実行します。
image.png

3. UltraHookの起動

OpenShift Localのコンソール画面でS2Iを試した後、Developer > ビルド > ビルド名のリンク とクリックし、シークレットの使用によるURLのコピーをクリックします。
image.png
下記コマンドでUltraHookを起動します。
%1には好きな名前(今回はsample)
%2には先ほどコピーした シークレット付きのWebhook URL

$ ultrahook %1 %2
# 例)
# ultrahook sample https://api.crc.testing:6443/apis/build.openshift.io/v1/namespaces/test/buildconfigs/openshift-s-2-i-lab-git/webhooks/xxxxxxx/github

起動できると以下の様に https://xxx-yyy.ultrahook.com -> シークレット付きのWebhook URL と表示されるので https://xxx-yyy.ultrahook.com の部分をコピーします。

Authenticated as qiitasample
Forwarding activated...
https://qiitasample-sample.ultrahook.com -> https://api.crc.testing:6443/apis/build.openshift.io/v1/namespaces/test/buildconfigs/openshift-s-2-i-lab-git/webhooks/xxxxxxx/github
# https://qiitasample-sample.ultrahook.com をコピー

GitHubのWebhook追加画面に移動し、Payload URLに先ほど UltraHookにて生成されたURL、Content typeに application/jsonを設定し、Add webhookをクリックします。
image.png

以上で設定は完了です。
実際にリポジトリを更新し、それをトリガーにOpenShift Local上のビルドが走っていることを確認しましょう!

4. UltraHookの停止

コマンドラインでctrl + cを実行するとUltraHookを停止することができます。

2
0
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
0