share facebook facebook twitter menu hatena pocket slack

2015.07.23 THU

Chef の実行結果を Jenkins に通知する chef-handler-jenkins_notifier を SSL 対応した

川原 洋平

WRITTEN BY 川原 洋平

はじめに

以前に勉強のつもりで作った…

qiita.com

だったけど地味に外国の方が使って下さっていて、以下のようなメールを貰ったので SSL 対応してリリースした。

Looks like your code does not support https… to support it we need to add the following:

http://ruby-doc.org/stdlib-2.2.1/libdoc/net/http/rdoc/Net/HTTP.html

HTTPS is enabled for an HTTP connection by #use_ssl=.
uri = URI(‘https://secure.example.com/some_path?query=string’)

Net::HTTP.start(uri.host, uri.port,
:use_ssl => uri.scheme == ‘https’) do |http|
request = Net::HTTP::Get.new uri

response = http.request request # Net::HTTPResponse object
end

pull request が欲しいところだったけど…サンキューベリマッチ。

リンク

  • Ruby – chef-handler-slack を使ってみたのと Jenkins に通知を飛ばすハンドラを作って gem で公開してみた – Qiita
  • chef-handler-jenkins_notifier → 汚いコードですいません。

改めて

何するものか?
  • Chef の実行結果を Jenkins の外部ジョブに通知する(だけ)
使い方
chef-handler-jenkins_notifier の設定

以下のようにレシピを書いておく。

chef_gem "chef-handler-jenkins_notifier" do
  action :upgrade
end

require 'chef/handler/jenkins_notifier'

chef_handler 'Chef::Handler::Jenkins_Notifier' do
  source 'chef/handler/jenkins_notifier'
  arguments [
    :host => 'jenkins_host',
    :port => 443,
    :path => '/jenkins/job/chef-test/postBuildResult',
    :user => 'user_name',
    :pass => 'password',
    :ssl => 'true',
  ]
  action :nothing

end.run_action(:enable)

0.0.4 からは SSL にも対応しているの HTTPS 経由で Jenkins にアクセスする環境でも大丈夫(なはず)

レシピの用意

include_recipe で通知用のレシピを読み込んでおく。

include_recipe "hoge::jenkins_notification"

cookbook_file "/tmp/hoge" do
  source "ahoaho"
  action :create
end
収束させる
knife solo cook kappa-chef_client01 -o 'hoge' -F
例えばコケる

例えば cookbook_file なのにファイルを置き忘れたりすると…

以下のように Jenkins 先生に告げ口される。

Jenkins 先生も寂しそう。

成功する

成功すると…

Jenkins 先生も嬉しそう。

ということで…

お礼
  • メール下さった Ebrahim さん、本当に有難うございました
気になること
  • こういう gem の場合にデバッグってどうするんだろう… gem 作ってアップして動作確認はありえないんだけどな…→今回は gem 作ってから動作確認した

元記事はこちら

Chef の実行結果を Jenkins に通知する chef-handler-jenkins_notifier を SSL 対応した