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