Movatterモバイル変換


[0]ホーム

URL:


8a1, profile picture
Uploaded by8a1
7,210 views

JenkinsとAnsibleを用いたサーバー運用効率化のススメ_"8a1"20141205発表資料

2014年12月5日(金)に開催した「JenkinsとAnsibleを用いたサーバー運用効率化のススメ」の資料です。 <勉強会はこちら> http://8a1-apc.connpass.com/event/10278/

Embed presentation

Downloaded 29 times
JenkinsとAnsibleを用いたサーバー運用効率化のススメAPC勉強会
アジェンダ・Jenkins導入・コードの統一化・Jenkinsによるビルド・テスト・Jenkinsによる分析・導入の実例
アジェンダ・Jenkins導入・コードの統一化・Jenkinsによるビルド・テスト・Jenkinsによる分析・導入の実例
Jenkins導入Jenkinsおさらい(主な使用用途)・コンパイルやテストを自動的に行なってくれる。・コンパイル、テスト失敗などを通知してくれる。・いろいろな分析結果を出してくれる
Jenkins導入インストール各OSでのインストール方法公式サイト http://jenkins-ci.org/対応OSが多いので余ってるサーバや開発者PCにも入れられます。
Jenkins導入インストール 例wget -q -O - http://pkg.jenkins-ci.org/debian/jenkins-ci.org.key | sudo apt-key add -deb http://pkg.jenkins-ci.org/debian binary/sudo apt-get updatesudo apt-get install jenkinssudo wget -O /etc/yum.repos.d/jenkins.repo http://pkg.jenkins-ci.org/redhat/jenkins.reposudo rpm --import http://pkg.jenkins-ci.org/redhat/jenkins-ci.org.keyyum install jenkinsUbuntu/DebianRed Hat/Fedora/CentOS公式サイトより
Jenkins導入インストール 例choco install jenkinsbrew install jenkinsWindows (Chocolatey使用)OSX (Homebrew使用)公式ではないが下記のパッケージ管理ソフトでも入れられるJenkinsは週1くらいの頻度で最新版が出るのでパッケージ管理の方が更新が楽
Jenkins導入インストール 例Webブラウザからでもインストールできます!https://wiki.jenkins-ci.org/display/JA/Meet+Jenkins#MeetJenkins-TestDrive
Jenkins導入インストール 例デフォルト設定ではhttp://localhost:8080後は設定でポートやパスを変えたり、Webサーバからリバースプロキシさせたり
アジェンダ・Jenkins導入・コードの統一化・Jenkinsによるビルド・テスト・Jenkinsによる分析・導入の実例
コードの統一化こんなことありませんか?・コミットする度に改行コードが変わってたりスペースがタブに、タブがスペースに(スペースも2だったり4だったり)最後に改行が入ったり入らなかったり・文字コードが統一されてなかったり・{}や, && ||の位置が統一されていない。修正の度にフォーマットが変わる。実際の修正と関係ないところが履歴として残って差分が見づらい。何故か?・開発者それぞれの好き嫌い・使っているOSやエディタ、エディタ設定が違うから
コードの統一化コーディング規約どうすれば・開発者それぞれの好き嫌い開発前に話し合って統一しておこう。コーディング規約は作るのが大変ならそれそれの言語標準・水晶のものや公開されてるものをそのまま流用するなど。簡単でもいいので何かしか決めておくと後でもめにくい好き嫌いはあるけど仕事だから・・・簡単な構文チェックならツールを使おう
コードの統一化コーディング規約JavaならCheck StyleRubyならruby-lintPHPならphplingJavaScriptならjslint、jshintなどなどJenkinsで定期的に出力する。既存プロダクトが大量の警告を出すようなら一気に片を付けずに少しずつ減らすように&増やさないように注意して無理なくコーディングしていく。減らすのが難しい問題に関しては除外設定を適宜行う
コードの統一化テキストエディタやIDE設定どうすれば・使っているOSやエディタ、エディタ設定が違うから開発者全員の開発環境をすべて統一しよう!それで全て解決!だけど・・・やっぱり使い慣れた環境で開発したい→ではどうするか
コードの統一化テキストエディタやIDE設定SCMの設定で解決できる問題もあるGitの場合・改行コード問題はgit configのcore.autocrlf、core.safecrlfSVNの場合・改行コード問題はsvn propsetのsvn:eol-styleとりあえずの解決策SCMに各エディタの設定ファイルも入れておく→みんなが同じエディタならそれで解決→バラバラのエディタが使いたければ各エディタの設定を全部入れる?→設定を変えるとき全エディタ分変えないといけない→各エディタの設定が同じであるか管理するのが大変
コードの統一化テキストエディタやIDE設定EditorConfigを使おう http://editorconfig.org/・ルートディレクトリに.editorconfigというファイルを入れ、それに設定を書いておけば良い。・Emacs,Vim,SublimeText,Atom,VisualStudio,IntelliJ等のJetBrains製IDEなどのエディタで対応。(各エディタでEditorConfig対応Pluginを入れる必要があります。)※Eclipse系はまだない?これで各々好きなエディタが使える!一々プロダクトごとにスタイルを覚えなくてもエディタが勝手にやってくれる!※コード規約までは面倒を見てくれません。
アジェンダ・Jenkins導入・コードの統一化・Jenkinsによるビルド・テスト・Jenkinsによる分析・導入の実例
Jenkinsによるビルド・テストJenkinsビルドのながれ1.ビルド対象の設定ソース取得先のSCMまたはファイルの場所を指定2.ビルドトリガー設定・一定の時間間隔でビルド(crontab的な設定が可能)・SCMをポーリングし変更があればビルド・WebUIから実行または、APIを叩いて実行など3.ビルド設定ここがメイン!(後述)4.ビルド後の設定・結果をメールする(失敗のときだけなど)・結果を集計する・成果物を保存する、どこかへアップロードするなど
Jenkinsによるビルド・テストJenkinsのビルドJenkinsは自動であれこれやってくれるがビルドが出来る状態にするのは開発者の仕事ソースがあるだけではビルドできないなにかしらビルドできる仕組みを入れる必要がある。ビルドの際は対応するPluginがあると便利PluginがなくてもシェルスクリプトやMS-DOSでもできる。Maven → Maven PluginGrunt、Gulp→NodeJS pluginBundle → Ruby Plugin必要なコンパイラやビルドツールのインストール、パスの設定も必要。Jenkinsを動かしているユーザで実行できるようにする必要がある。※インストールやパス設定はある程度jenkins上でもできる。なるべくそちらを使ったほうがパス関連の面倒が少ない。
Jenkinsによるビルド・テストJenkinsスレーブチーム共有のJenkins上でうまくビルドできない・・・俺のローカルではビルドできるのに!!!→他の環境でもビルドできるように頑張る(でもおそらく大変)→自分のPCをスレーブ化してビルドしよう!
Jenkinsによるビルド・テストJenkinsスレーブチーム共有のJenkins俺のPC上のJenkinsスレーブビルドしなさい結果でました
Jenkinsによるビルド・テストJenkinsスレーブ設定設定はとっても簡単JenkinsマスターからJenkinsの管理>ノードの管理>新規ノードの作成スレーブ側はJreだけあればOK・Jenkinsマスター(この場合はチーム共有Jenkins)からスレーブ側へssh接続が可能な場合sshの設定をノードに設定しておくだけ・Jenkinsマスターから直接接続できないが、スレーブ側からhttp接続可能な場合表示されたことをするだけ
Jenkinsによるビルド・テストJenkinsスレーブチーム共有のJenkinsチームメンバーの開発PC(Windows)検証用サーバ等(Linux)チームメンバーの開発PC(Mac)検証用サーバ等(WindowsServer)ジョブごとにビルドするスレーブを決めておけばJenkinsマスターが勝手に選んでビルドさせるオフラインのスレーブがあっても他のスレーブを選んでくれる
アジェンダ・Jenkins導入・コードの統一化・Jenkinsによるビルド・テスト・Jenkinsによる分析・導入の実例
Jenkinsによる分析テスト結果Jenkinsは標準でJUnit結果の集計Pluginがある。AntやMavenでtest実行するとJUnit結果がXMLで吐かれるのでそれが集計される。※JenkinsはJavaで作られているのでJavaにやさしいJava以外の言語でもJUnit結果のXMLフォーマットのレポートを出力できれば結果を取得できる。(そのようなライブラリがある)Pluginを入れれば他の形式も集計可能・NUnit Plugin・TAP(Test Anything Protocol) Pluginなど
Jenkinsによる分析テスト以外の分析・コードカバレッジ・未解決タスク(コード上のTODO、FIXMEなどの集計)・
アジェンダ・Jenkins導入・コードの統一化・Jenkinsによるビルド・テスト・Jenkinsによる分析・導入の実例
導入の実例1WebアプリケーションJava、Maven使用内容・コンパイル・テスト・CheckStyle・FindBugs・テストカバレッジ・未解決(TODO)タスク集計はじめはテストを書いていないプロダクトだったのでコードカバレッジ計測を導入。テストを書いていないクラスがどの程度残っているかの指標にして共通関数系を中心にテストを増やしていくようにしている
導入の実例2Webアプリケーション(UIなし、XML-RPC)Java、Maven使用内容・コンパイル・テスト・CheckStyle・FindBugs・テストカバレッジ・未解決(TODO)タスク集計このアプリケーション自体が多数の外部APIから情報を取得するので外部APIはダミーを作成。そのダミーが期待の値を返すかのテストもやってる。
導入の実例3WebアプリケーションJava、Maven使用フロント側にはGrunt使用内容・フロント側lessのコンパイル(Grunt)・フロント側jsのテスト(Grunt)・フロント側jsのcss,minify化(Grunt)・Java側のwebappに配置(Grunt)・Java側コンパイル、テスト(Maven)・warファイル作成(Maven)・検証用環境へデプロイ(ShellScript)検証環境はCloudnのPaaSを使用(本番も同じ環境)。PaaSにデプロイするツールもコードに含めShellScriptでデプロイ処理を実行している。gitへpushするだけで検証環境へ上がってくれるので一度構築すると非常に楽
導入の実例4WebアプリケーションNode.js Grunt使用内容・sassのコンパイル(Grunt)・クライアント・サーバのjsテスト(Grunt)・フロント側jsのcss,minify化(Grunt)・tar.gzに固める(Grunt)・デプロイスクリプトと一緒にscpで検証サーバへアップロード・sshで検証サーバのデプロイスクリプトを叩く。こちらもgitへpushで検証環境へデプロイされる
導入の実例5WebアプリケーションNode.js Grunt使用本番サーバへデプロイ内容・検証サーバにあるtar.gzとデプロイスクリプトを本番サーバ達へコピー・sshで本番サーバのデプロイスクリプトを叩く。(必要なサーバ分)検証環境で確認がとれたtar.gzを本番に上げるだけ。こちらは手動ビルド手動ビルドと言ってもWebUI上の「ビルド実行」を押すだけの簡単なお仕事
導入の実例6WebアプリケーションNode.js Grunt使用vagrant ansible使用内容・vagrant upを叩いてビルド・テスト用の仮想環境作成・vagrantのプロビジョニングでansible-playbookを実行させ、必要な環境を構築する。・ビルドテスト実行・vagrant haltvagrantさえ動けばスレーブの環境に依存せずどこでも実行可能。ここで使う仮想環境は開発にもそのまま使える。初回vagrant up がものすごく時間がかかるという問題がある。
導入の実例7各サーバへ同じコマンドを打つだけ内容・ansible-playbookを叩いて各サーバで同じことをさせる。Heart bleedやShell shockなどで地道に各サーバでアップデートコマンドを打つ日々を改善すべく作成必要なタスクを追加しSCMへコミットWebUI上の「ビルド実行」を押すだけの簡単なお仕事化に成功
導入の実例 例外別にjenkinsでなくてもいいけどこんな使い方もできるよというお話。内容・SCM上にコミットされたらメールを送る。とある理由で変更があったら通知が欲しいため設定。内容・バッチを定期実行crontab代わりに使用。
今後やってみたいこと今後やってみたいこと・UIのテストをやらせたい。Seleniumの勉強会が今度あるらしい。・vagrant、ansibleではなくdockerを使ってみるとどうか。・Herokuへのデプロイ

Recommended

PDF
「むしゃくしゃしたのでOpenDocumentで帳票テンプレート」 - 第13回関西LibreOffice勉強会 #LibOKansai
PDF
第4回品川Redmine勉強会資料「チケット駆動開発のフレームワーク~現場の経験知からパターン言語へ(ベータ版)」
PDF
サラリーマンでギョーミーなプログラマ(つまりオレ)でも片手間で作れるXFD
PDF
Jenkins 2を使った究極のpipeline ~ 明日もう一度来てください、本物のpipelineをお見せしますよ ~
 
PDF
Jenkins User Conference 2012 Tokyo 「SIerのJenkins事情」
PDF
Startup jenkins!
PDF
Shibuyatrac#13 scurmでやってみた
PDF
書類作成環境のあるべき論とは
PDF
Jenkinsではじめる継続的インテグレーション
PDF
よろしい、ならば自動化だっ! ~自動家の自動化哲学~ #AsianAA
PDF
世界一簡単なGithub入門(githubは無料で使用する場合、全てのファイルが公開されていることにご注意ください)
PDF
Jenkins に XFD を追加してみると
PDF
Jenkins 再入門
PDF
GitBucketで社内OSSしませんか?
PDF
邪道Jenkins
PDF
大容量ファイルもGitで管理。 Git LFSの使い方
PPTX
第9回Jenkins勉強会 超簡単Pipeline講座
PDF
「認定Jenkinsエンジニア(Certified Jenkins Engineer:CJE)試験」について調べてみた #jenkinsstudy
PDF
自動家(オートメーター)大地に立つ!! 〜オールドタイプの一年戦争〜
PDF
しゃべれて回れる「小人の執事さん」ったら地獄耳でもあるみたいですよ?(前編)
PDF
Jenkinsを導入する本当の理由を考えてみた
PDF
「実録!となりのJenkins2.0」 - 第7回大阪 / 第9回(東京)Jenkins勉強会 #jenkinsstudy
PPTX
20170809 start python_selenium
PDF
自動化パタンランゲージ
PDF
モックアップ共有のススメ
PDF
スクラムにおける事前期待のマネジメント - Customer Expectations Management of Scrum #sgt2016

More Related Content

PDF
「むしゃくしゃしたのでOpenDocumentで帳票テンプレート」 - 第13回関西LibreOffice勉強会 #LibOKansai
PDF
第4回品川Redmine勉強会資料「チケット駆動開発のフレームワーク~現場の経験知からパターン言語へ(ベータ版)」
PDF
サラリーマンでギョーミーなプログラマ(つまりオレ)でも片手間で作れるXFD
PDF
Jenkins 2を使った究極のpipeline ~ 明日もう一度来てください、本物のpipelineをお見せしますよ ~
 
PDF
Jenkins User Conference 2012 Tokyo 「SIerのJenkins事情」
PDF
Startup jenkins!
PDF
Shibuyatrac#13 scurmでやってみた
PDF
書類作成環境のあるべき論とは
「むしゃくしゃしたのでOpenDocumentで帳票テンプレート」 - 第13回関西LibreOffice勉強会 #LibOKansai
第4回品川Redmine勉強会資料「チケット駆動開発のフレームワーク~現場の経験知からパターン言語へ(ベータ版)」
サラリーマンでギョーミーなプログラマ(つまりオレ)でも片手間で作れるXFD
Jenkins 2を使った究極のpipeline ~ 明日もう一度来てください、本物のpipelineをお見せしますよ ~
 
Jenkins User Conference 2012 Tokyo 「SIerのJenkins事情」
Startup jenkins!
Shibuyatrac#13 scurmでやってみた
書類作成環境のあるべき論とは

Viewers also liked

PDF
Jenkinsではじめる継続的インテグレーション
PDF
よろしい、ならば自動化だっ! ~自動家の自動化哲学~ #AsianAA
PDF
世界一簡単なGithub入門(githubは無料で使用する場合、全てのファイルが公開されていることにご注意ください)
PDF
Jenkins に XFD を追加してみると
PDF
Jenkins 再入門
PDF
GitBucketで社内OSSしませんか?
PDF
邪道Jenkins
PDF
大容量ファイルもGitで管理。 Git LFSの使い方
PPTX
第9回Jenkins勉強会 超簡単Pipeline講座
PDF
「認定Jenkinsエンジニア(Certified Jenkins Engineer:CJE)試験」について調べてみた #jenkinsstudy
PDF
自動家(オートメーター)大地に立つ!! 〜オールドタイプの一年戦争〜
PDF
しゃべれて回れる「小人の執事さん」ったら地獄耳でもあるみたいですよ?(前編)
PDF
Jenkinsを導入する本当の理由を考えてみた
PDF
「実録!となりのJenkins2.0」 - 第7回大阪 / 第9回(東京)Jenkins勉強会 #jenkinsstudy
PPTX
20170809 start python_selenium
PDF
自動化パタンランゲージ
PDF
モックアップ共有のススメ
PDF
スクラムにおける事前期待のマネジメント - Customer Expectations Management of Scrum #sgt2016
Jenkinsではじめる継続的インテグレーション
よろしい、ならば自動化だっ! ~自動家の自動化哲学~ #AsianAA
世界一簡単なGithub入門(githubは無料で使用する場合、全てのファイルが公開されていることにご注意ください)
Jenkins に XFD を追加してみると
Jenkins 再入門
GitBucketで社内OSSしませんか?
邪道Jenkins
大容量ファイルもGitで管理。 Git LFSの使い方
第9回Jenkins勉強会 超簡単Pipeline講座
「認定Jenkinsエンジニア(Certified Jenkins Engineer:CJE)試験」について調べてみた #jenkinsstudy
自動家(オートメーター)大地に立つ!! 〜オールドタイプの一年戦争〜
しゃべれて回れる「小人の執事さん」ったら地獄耳でもあるみたいですよ?(前編)
Jenkinsを導入する本当の理由を考えてみた
「実録!となりのJenkins2.0」 - 第7回大阪 / 第9回(東京)Jenkins勉強会 #jenkinsstudy
20170809 start python_selenium
自動化パタンランゲージ
モックアップ共有のススメ
スクラムにおける事前期待のマネジメント - Customer Expectations Management of Scrum #sgt2016

JenkinsとAnsibleを用いたサーバー運用効率化のススメ_"8a1"20141205発表資料


[8]ページ先頭

©2009-2025 Movatter.jp