LoginSignup
5
5

More than 5 years have passed since last update.

Google Assistantに話しかけるだけでJenkinsでビルドする

Last updated at Posted at 2018-01-09

やること

Google HomeやAndroidスマホ等のGoogle Assistant搭載デバイスに「ビルドして」と話しかけるだけで、Jenkinsでビルドします。なお、各サービスどうしの連携はIFTTTを利用します。

前提

  • Jenkinsの実行環境があること
  • Google HomeやAndroidスマホ等のGoogle Assistant搭載デバイスがあること

構成1. IFTTTのWebhookから直接Jenkinsビルド

構成としては以下の通りです。IFTTTのWebhookにJenkinsのビルドリクエストを直接指定します。

w.png

以下はIFTTTの設定です。左がGoogle Assistant、右がWebhooksになります。

1515500488.jpg

上記設定により、Google HomeやAndroidスマホ等のGoogle Assistant搭載デバイスに
「ビルドして」と話しかけると(左の設定)、
http://user:APIトークン@35.184.206.154//jenkins/job/test_build/build?token=testtoken 」 にアクセスし(右の設定)、ビルドが開始されます。

構成2. IFTTTのWebhook→FaaS→Jenkinsビルド

構成としては以下の通りです。IFTTTのWebhookにAWS LambdaやGCPのCloud FunctionsのようなFaaSを指定して、そこからJenkinsにビルドリクエストを送ります。ここでは、「Google Cloud FunctionsからSlackへ通知を送る」で使ったFunctionを利用して行いました。この構成にすることで、コールバック処理を指定することも可能となります。

無題.png

IFTTTの設定は「構成1」と同じです。ただし、Webhook側はFaaSのURLを指定します。
Cloud Functions側のソースは以下のような感じです。

index.js
const request = require('request');

exports.build= function build(req, res) {

    var headers = {
        'Content-Type':'text/plain'
    }

    var options = {
        url: 'http://user:APIトークン@35.184.206.154/jenkins/job/test_build/build?token=testtoken',
        method: 'GET',
        headers: headers
    }

    request(options, function (error, response, body) {
      // コールバック処理
    })

    res.status(200).send('Success');
};
package.json
{
    "name": "sample-http",
    "version": "0.0.1",
    "dependencies": {
        "request": "^2.81.0"
    }
}

以上です。
実務で利用できるかどうかは別として、何かの参考になればと思います。

参考

Jenkinsのビルドジョブのリモート実行に関しては、以下を参考にしました。
https://tomokazu-kozuma.com/how-to-execute-jenkins-job-remotely/
http://symfoware.blog68.fc2.com/blog-entry-1902.html

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