はじめに
以前に勉強のつもりで作った...
だったけど地味に外国の方が使って下さっていて、以下のようなメールを貰ったので 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 作ってから動作確認した