LoginSignup
0
0

More than 1 year has passed since last update.

ラズパイでJenkinsを動かしてGitHubのWebhookでPipelineを実行する

Last updated at Posted at 2021-09-24

GitHubのWebhookでラズパイ上のJenkinsでPipelineを動かしたい

GitHubのWebhookではJenkinsが動いているサーバーを指定しないといけません。
しかし、自宅で動かしているラズパイを指定するには固定のグローバルアドレスを付与したり、やりたければドメイン名も設定したり面倒です。
特にルーターを設定して外部からの通信を許可しなきゃいけないので、セキュリティ的に自信がありませんでした。
image.png

そこで何かいい方法がないかと探していたら、GitHubが提供しているsmee.ioというサービスがあったので、JenkinsがWebhookを受け取るところまでの手順を書いていこうと思います。
Jenkinsのブログ1で紹介されていたので、こちらも参考にしていただければと思います。

smee.ioとは

公式サイト2に一言で書いてありました。

Webhook payload delivery service
Receives payloads then sends them to your locally running application.

Webhookを受け取ってローカルで動いているアプリケーションに送る届けるサービスらしいです。
smee.ioを使うとこんな感じで自宅のラズパイにWebhookのpayloadを送れます。
image.png

導入する

Jenkinsの設定

1.Dash Board > New Item でPipelineを選択する

適当な名前をつけてPipelineを選択してOKを押します。
new_item.png

2.Pipelineを設定する

  • Build Triggersで「GitHub hook trigger for GITScm polling」を選択
  • Pipelineで画像のように選択して、Repository URLにリポジトリのURLを入れる

jenkins_config.png

smee.ioの設定

3.smeeサーバーのURLを発行する

https://smee.io/ で「Start a new channel」をクリックするとURLが発行されます。
後にそのURLにGitHubからWebhookを投げることになります。

4.smeeクライアントをラズパイにインストールする

$ npm install --global smee-clientで ラズパイにsmeeクライアントをインストールします

5.smeeクライアントを動かすためのユニットファイルを書く

systemdを使っていることを想定しています。これはどっちでもいいですがあると楽なので。

[Unit]
Description=foo

[Service]
Type=simple
ExecStart=/usr/local/bin/smee --url https://smee.io/<id> --path /github-webhook/ --port 8080
Restart=always

[Install]
WantedBy=multi-user.target

GitHubの設定

6.Webhookを送るURLを設定する

リポジトリを選んで、Settings > Webhook で3で生成したsmeeサーバーのURLを入れる。
これで設定は終わりです!

動かしてみる

pushしてWebhookが投げられると、3で作ったsmeeサーバーのURLでWebhookの履歴が見れます。
ここでWebhookが動いていることが分かるので便利。
image.png

また、JenkinsでPipelineが動いていることがわかります。
jenkins_build.png


  1. Jenkinsのブログ ここにほとんどやり方載ってます 

  2. smee.io 

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