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 対応した

cloudpack

cloudpackは、Amazon EC2やAmazon S3をはじめとするAWSの各種プロダクトを利用する際の、導入・設計から運用保守を含んだフルマネージドのサービスを提供し、バックアップや24時間365日の監視/障害対応、技術的な問い合わせに対するサポートなどを行っております。
AWS上のインフラ構築およびAWSを活用したシステム開発など、案件のご相談はcloudpack.jpよりご連絡ください。