ようへいの日々精進XP

よかろうもん

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

はじめに

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

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 が欲しいところだったけど...サンキューベリマッチ。


リンク


改めて

何するものか?

  • 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 なのにファイルを置き忘れたりすると...

f:id:inokara:20150404163715p:plain

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

f:id:inokara:20150404161615p:plain

Jenkins 先生も寂しそう。

成功する

成功すると...

f:id:inokara:20150404162324p:plain

Jenkins 先生も嬉しそう。

ということで...

お礼

  • メール下さった Ebrahim さん、本当に有難うございました

気になること

  • こういう gem の場合にデバッグってどうするんだろう... gem 作ってアップして動作確認はありえないんだけどな...→今回は gem 作ってから動作確認した