SlideShare ist ein Scribd-Unternehmen logo
1 von 28
継続的インテグレーション
  3分クッキング
~検証ビルド環境をつくろう~
       @cointoss1973
       2012/07/08(日)
 アジャイルサムライ読書会#8
  #agilesamurai #新宿道場
自己紹介
• こいんとす @cointoss1973

  – Programming Language
     • C, C++, Python
  – OS
     • VxWorks
          – HP-UX, Tru64 UNIX, Solaris, Ubuntu, Windows
  – Activity
     •   #47redmine スタッフ
     •   #scmbc サポータ
     •   #TokyoMercurial
     •   #日本鼻メガネの会
告知
• 8月あたりに TDD+ペアプロ+DVCS を練習
  する初心者向け勉強会(仮) #devstart の開催
  を計画中です。
 – スタッフ募集中!!
 – 来週の日曜日に大森駅近辺でスタッフで素振
   り予定
本日つくるものは…
• こんな困ったことありませんか?
 – pullしたソースコードがビルドできない!
 – pullしたソースコードがテストで落ちる
   • もちろん、一人でも使えますが複数人での同時開
     発する場合にとても有効な構成になります
• JenkinsとMercurialと使って、ビルドやテス
  トが通ったものだけを中央リポジトリに
  push構成のつくりかたをご紹介します
検証ビルドの位置づけ
作業              Subversionの場合のコ 検証済みビルド
                ミット後にJenkinsでビル (今回)
                ド

編集・マージ          開発者               開発者
コミット(SVN)       開発者               開発者
ビルド             事前に開発者が必ず実施       Jenkinsに任せることも可能
                コミット後Jenkinsが実施
テスト             事前に開発者が必ず実施       Jenkinsに任せられる
                コミット後Jenkinsが実施


      せっかくJenkinsがあるのに毎回開発者がビ
       ルドテストしないといけないの(´・ω・`)
完成イメージ
トッピングと味付け
• 言語
 – C++
 – コンパイラ(MSBuild)
    • Visual Studio 2010 Express


• 内容
 – fizzbuzz
    • 第1引数で、最大値を指定可能とします
材料
• ハードウェア
 – OS : Windows XP SP3 を使います
 – ご家庭にある使わなくなった古いマシンでOKです
 – CドライブにWindows 、Dドライブがあるとベターです

• ソフトウェア
   • Jenkins 1.473 (最新版) http://jenkins-ci.org/
   • TortoiseHg 2.4.2 (最新版) http://tortoisehg.bitbucket.org/ja/
   • Apache(HTTP Server) 2.2.22 (安定版)
       – http://httpd.apache.org/download.cgi#apache22
   • Cygwin 1.7.15 (最新版) http://www.cygwin.com/
            » wget を使いたいだけなので代わりのものでもOK。
   • Visual C++ 2010 Express
   • Python 2.7.3
   • PuTTY
作り方
• 4~5人前
 1. Windows マシンに
    Jenkins, TortoiseHg, Apache, Python , VisualStu
    dioをインストールします
      1. Cドライブと、Dドライブがあると理想的
 2.   Jenkins を起動し、プラグインを入れます
 3.   MercurialとApacheを連携します
 4.   Mercurialのhookスクリプトを設定します
 5.   JenkinsにJOB設定をします
Jenkins
• インストール先
 – D:Jenkins にインストールしておくと無難
 – ビルド結果のファイルをある程度保存しておくと良い
• インストール完了後
 – インストール後下記URLで自動でブラウザが開いてエラー画面が出る
   が慌てない(Jenkinsさんが起動中である)
 – http://localhost:8080/
• プラグイン
 – JenkinsのGUIから下記プラグイン達を導入(簡単)
 – Mercurial plugin
     • polling 設定を忘れずに。pollingの期間は@dailyでOK
         – 実際のトリガは、Mercurialのtestingリポジトリへのhookで行う
 – MSBuild plugin
     • Visual Studioコンパイルしやすくする。なくても
 – Warnings plugin
     • C/C++のコンパイラの警告集計
TortoiseHg
• インストーラをダウンロードして実行す
  るだけ
 – お好みで日本語メニューにどうぞ
 – hg コマンドも同梱されます、PATH環境変数
   にも自動で追加されます
 – ssh用のクライアントも同梱されてるみたい
• インストール先
 – C:Program FilesTortoiseHg
PuTTY
• sshキー作成用にPuTTYをインストール
  • http://www.chiark.greenend.org.uk/~sgtatham/putty/
Mercurial
 • D:repos にtestingリポジトリをおく
 • hg init D:reposfizzbuzz_testing
 • .hg/hgrc に下記hookを追加
[hooks]
incoming.jenkins = wget -q
http://zion:8080/mercurial/notifyCommit?url=http://zion/repos/hgweb.cgi/fizzbuzz_testing/
Python
• Pythonはバージョンがくつかあります
 – Python 2.7.3 とする(TortoiseHgと合わせておく
   と無難)
 – C:Python27
• 環境変数 PATH に”追加”
 – C:Python27;C:Python27Scripts
Apache
• D:repos 以下に公開リポジトリをおきます

• hgweb.cgi にて連携します
Apache (httpd.conf)
• httpd.conf
    # AddHandler allows you to map certain file extensions to "handlers":
    # actions unrelated to filetype. These can be either built into the server
    # or added with the Action directive (see below)
    #
    # To use CGI scripts outside of ScriptAliased directories:
    # (You will also need to add "ExecCGI" to the "Options" directive.)
    #
    AddHandler cgi-script .cgi
  Alias /repos D:/repos
  <Directory "D:/repos">
    Options +ExecCGI
    Order allow,deny
    Allow from all
    DirectoryIndex hgweb.cgi
  </Directory>
Apache (.config)
• D:repos.config
    [web]
    templates = C:/Program Files/TortoiseHg/templates
    push_ssl = False
    allow_push = *

    [paths]
    / = D:/repos/*


• .config
           – ドットで始まるファイルは、Windowsではコマンドプロ
             ンプト上で echo aaa > .config で作ってください(ダサい)
Apache (hgweb.cgi)
• D:reposhgweb.cgi

   [web]
   templates = C:/Program Files/TortoiseHg/templates
   push_ssl = False
   allow_push = *

   [paths]
   / = D:/repos/*
Apache restart
• apache を Restart
Visual Studio 2010 Express
• 普通にダウンロードしてインストール

• 検証ビルドで本当に必要なのはコンパイ
  ラ(MSBuild.exe)だけなので、.NETフレー
  ムワークだけインストールでもOK(未確
  認)
 C:WINDOWSMicrosoft.NETFrameworkv4.0.30319MSBuild.exe
実食(実演)
• 実際に開発者のマシン(matrix)から、検証
  ビルドサーバ(zion) に push してみます




    本日は Oracle Virtual Box上にインストール、
    セットアップ済みのマシンWindows XP SP3
            を用意してあります
            (下ごしらえ済み)
食べ方
• 開発者A
   •   bitbucketなど中央リポジトリからcloneする
   •   ソースコード追加・修正・変更など
   •   コミットする
   •   ビルドサーバにpushする
• 開発者B                                  おそらく開発者Aが
                                         コミットした
   •   ソースコード修正                           changeset
   •   コミット
   •   push ( pull して merge してと表示される)
   •   pull して merge
   •   push
良い点
• ビルドサーバ側で、pushされたchangesetの
  検証内容を決めることができます。
 – まずはビルドだけでOK
   • 欲張らない
 – なお、中央リポジトリにはJenkinsからのみ
   pushできるようにしておくと確実

• アレンジ
 – 開発者側の変更無しで、”アレンジ”可能
アレンジ
• 自動テストを実施してテストが通らない
  コードを通さない
• コードの静的検査が不適合のコードは通
  さない
• コミットログにチケット番号が入ってい
  ない場合(ry
• push –f したマージしていないコード(ry
• 追加されたchangesetをメールで飛ばす
    チームのポリシーやお好みに応じて、クリーンコードから外れ
       る良くない変更は事前に防止することができます
注意点
• 開発者が必ず検証ビルドを通すように環境を
  構築する
 – 直接中央リポジトリにpushさせない


• “検証ビルド”に時間がかかると、継続的イン
  テグレーションの旨みであるこまめに統合す
  る機会が少なくなります
 – 10分以内が理想。15分が限界
  • ビルドマシンを強化する
  • コンパイルをインクリメンタルビルドにする
課題
– Mercurialのリポジトリを公開する方法( Apache
  + Mercurial の連携)はもっとcoolな方法がある
  と思います。
   – http://mercurial.selenic.com/wiki/PublishingRepositories
今日できなかったこと
• SSHの連携
 – jenkinsさんから ssh で bitbucket.org に接続すると、
   (おそらく)入力待ちで止まってしまうため hg
   clone ssh://… ができなかった
   • 仕方なく https を使うが .hg/hgrc ファイルに平文で
     password を書くのでセキュリティ的アレ
• ビルドエラー時のrollback
 – アイデアとしては、ビルド開始時にファイルを作
   成しておき、ビルドが正常に完了後、ビルド完了
   時にファイルがあったらビルドが失敗したと判断
   して rollback する
ご清聴ありがとうございます
• JenkinsとMercurial(DVCS)を連携して、ク
  リーンなリポジトリに保とう
• 自動化大事
• Windows環境でもめげない
 – CygwinやMinGW/MSYSなどPOSIX環境を用意
   することでなんとかなることも多い

Weitere ähnliche Inhalte

Was ist angesagt?

アプリ屋もDockerをドカドカ使おう ~ Docker入門
アプリ屋もDockerをドカドカ使おう ~ Docker入門アプリ屋もDockerをドカドカ使おう ~ Docker入門
アプリ屋もDockerをドカドカ使おう ~ Docker入門Hori Tasuku
 
テスト環境まるごとAwsにのっけてみた
テスト環境まるごとAwsにのっけてみたテスト環境まるごとAwsにのっけてみた
テスト環境まるごとAwsにのっけてみたKazuaki Fujikura
 
Jjug ccc 2016 spring i 5 javaデスクトッププログラムを云々
Jjug ccc 2016 spring i 5 javaデスクトッププログラムを云々Jjug ccc 2016 spring i 5 javaデスクトッププログラムを云々
Jjug ccc 2016 spring i 5 javaデスクトッププログラムを云々torutk
 
2014年を振り返る 今年の技術トレンドとDockerについて
2014年を振り返る 今年の技術トレンドとDockerについて2014年を振り返る 今年の技術トレンドとDockerについて
2014年を振り返る 今年の技術トレンドとDockerについてMasahito Zembutsu
 
Keycloak で SSO #渋谷java
Keycloak で SSO #渋谷javaKeycloak で SSO #渋谷java
Keycloak で SSO #渋谷javaYoshimasa Tanabe
 
OpenJDK コミュニティに参加してみよう #jjug
OpenJDK コミュニティに参加してみよう #jjugOpenJDK コミュニティに参加してみよう #jjug
OpenJDK コミュニティに参加してみよう #jjugYuji Kubota
 
JenkinsとjMeterで負荷テストの自動化
JenkinsとjMeterで負荷テストの自動化JenkinsとjMeterで負荷テストの自動化
JenkinsとjMeterで負荷テストの自動化Satoshi Akama
 
とある社内ビックデータ基盤にバッチ用コンテナ基盤を構築してみた
とある社内ビックデータ基盤にバッチ用コンテナ基盤を構築してみたとある社内ビックデータ基盤にバッチ用コンテナ基盤を構築してみた
とある社内ビックデータ基盤にバッチ用コンテナ基盤を構築してみたHiroshi Toda
 
明日から始める Chef 入門 #bpstudy
明日から始める Chef 入門 #bpstudy明日から始める Chef 入門 #bpstudy
明日から始める Chef 入門 #bpstudyTakeshi Komiya
 
自動化ーニバルだよ!GDC16に見る自動化技術とテストのトレンド
自動化ーニバルだよ!GDC16に見る自動化技術とテストのトレンド自動化ーニバルだよ!GDC16に見る自動化技術とテストのトレンド
自動化ーニバルだよ!GDC16に見る自動化技術とテストのトレンドTakehara Ryo
 
Nseg20120929
Nseg20120929Nseg20120929
Nseg20120929hiro345
 
Docker基礎+docker0.9, 0.10概要
Docker基礎+docker0.9, 0.10概要Docker基礎+docker0.9, 0.10概要
Docker基礎+docker0.9, 0.10概要Kazuyuki Mori
 
脆弱性もバグ、だからテストしよう PHPカンファンレス2015
脆弱性もバグ、だからテストしよう PHPカンファンレス2015脆弱性もバグ、だからテストしよう PHPカンファンレス2015
脆弱性もバグ、だからテストしよう PHPカンファンレス2015ichikaway
 
大規模な負荷でもドキドキしない為のJava EE
大規模な負荷でもドキドキしない為のJava EE大規模な負荷でもドキドキしない為のJava EE
大規模な負荷でもドキドキしない為のJava EETaiichilow Nagase
 
JavaScriptでWebDriverのテストコードを書きましょ
JavaScriptでWebDriverのテストコードを書きましょJavaScriptでWebDriverのテストコードを書きましょ
JavaScriptでWebDriverのテストコードを書きましょKohki Nakashima
 
Jenkins 2.0 Pipeline & Blue Ocean
Jenkins 2.0 Pipeline & Blue OceanJenkins 2.0 Pipeline & Blue Ocean
Jenkins 2.0 Pipeline & Blue OceanAkihiko Horiuchi
 
Java デバッガ活用術 ~勘デバッグ・print デバッグから抜けだそう~ #jjug_ccc #ccc_h4
Java デバッガ活用術 ~勘デバッグ・print デバッグから抜けだそう~ #jjug_ccc #ccc_h4Java デバッガ活用術 ~勘デバッグ・print デバッグから抜けだそう~ #jjug_ccc #ccc_h4
Java デバッガ活用術 ~勘デバッグ・print デバッグから抜けだそう~ #jjug_ccc #ccc_h4Yusuke Yamamoto
 
JRebel for Android 1.0 を試食してみた
JRebel for Android 1.0 を試食してみたJRebel for Android 1.0 を試食してみた
JRebel for Android 1.0 を試食してみたkimukou_26 Kimukou
 

Was ist angesagt? (20)

Jenkins と groovy
Jenkins と groovyJenkins と groovy
Jenkins と groovy
 
アプリ屋もDockerをドカドカ使おう ~ Docker入門
アプリ屋もDockerをドカドカ使おう ~ Docker入門アプリ屋もDockerをドカドカ使おう ~ Docker入門
アプリ屋もDockerをドカドカ使おう ~ Docker入門
 
テスト環境まるごとAwsにのっけてみた
テスト環境まるごとAwsにのっけてみたテスト環境まるごとAwsにのっけてみた
テスト環境まるごとAwsにのっけてみた
 
Jjug ccc 2016 spring i 5 javaデスクトッププログラムを云々
Jjug ccc 2016 spring i 5 javaデスクトッププログラムを云々Jjug ccc 2016 spring i 5 javaデスクトッププログラムを云々
Jjug ccc 2016 spring i 5 javaデスクトッププログラムを云々
 
2014年を振り返る 今年の技術トレンドとDockerについて
2014年を振り返る 今年の技術トレンドとDockerについて2014年を振り返る 今年の技術トレンドとDockerについて
2014年を振り返る 今年の技術トレンドとDockerについて
 
Keycloak で SSO #渋谷java
Keycloak で SSO #渋谷javaKeycloak で SSO #渋谷java
Keycloak で SSO #渋谷java
 
OpenJDK コミュニティに参加してみよう #jjug
OpenJDK コミュニティに参加してみよう #jjugOpenJDK コミュニティに参加してみよう #jjug
OpenJDK コミュニティに参加してみよう #jjug
 
JenkinsとjMeterで負荷テストの自動化
JenkinsとjMeterで負荷テストの自動化JenkinsとjMeterで負荷テストの自動化
JenkinsとjMeterで負荷テストの自動化
 
Niigata.pm #1
Niigata.pm #1Niigata.pm #1
Niigata.pm #1
 
とある社内ビックデータ基盤にバッチ用コンテナ基盤を構築してみた
とある社内ビックデータ基盤にバッチ用コンテナ基盤を構築してみたとある社内ビックデータ基盤にバッチ用コンテナ基盤を構築してみた
とある社内ビックデータ基盤にバッチ用コンテナ基盤を構築してみた
 
明日から始める Chef 入門 #bpstudy
明日から始める Chef 入門 #bpstudy明日から始める Chef 入門 #bpstudy
明日から始める Chef 入門 #bpstudy
 
自動化ーニバルだよ!GDC16に見る自動化技術とテストのトレンド
自動化ーニバルだよ!GDC16に見る自動化技術とテストのトレンド自動化ーニバルだよ!GDC16に見る自動化技術とテストのトレンド
自動化ーニバルだよ!GDC16に見る自動化技術とテストのトレンド
 
Nseg20120929
Nseg20120929Nseg20120929
Nseg20120929
 
Docker基礎+docker0.9, 0.10概要
Docker基礎+docker0.9, 0.10概要Docker基礎+docker0.9, 0.10概要
Docker基礎+docker0.9, 0.10概要
 
脆弱性もバグ、だからテストしよう PHPカンファンレス2015
脆弱性もバグ、だからテストしよう PHPカンファンレス2015脆弱性もバグ、だからテストしよう PHPカンファンレス2015
脆弱性もバグ、だからテストしよう PHPカンファンレス2015
 
大規模な負荷でもドキドキしない為のJava EE
大規模な負荷でもドキドキしない為のJava EE大規模な負荷でもドキドキしない為のJava EE
大規模な負荷でもドキドキしない為のJava EE
 
JavaScriptでWebDriverのテストコードを書きましょ
JavaScriptでWebDriverのテストコードを書きましょJavaScriptでWebDriverのテストコードを書きましょ
JavaScriptでWebDriverのテストコードを書きましょ
 
Jenkins 2.0 Pipeline & Blue Ocean
Jenkins 2.0 Pipeline & Blue OceanJenkins 2.0 Pipeline & Blue Ocean
Jenkins 2.0 Pipeline & Blue Ocean
 
Java デバッガ活用術 ~勘デバッグ・print デバッグから抜けだそう~ #jjug_ccc #ccc_h4
Java デバッガ活用術 ~勘デバッグ・print デバッグから抜けだそう~ #jjug_ccc #ccc_h4Java デバッガ活用術 ~勘デバッグ・print デバッグから抜けだそう~ #jjug_ccc #ccc_h4
Java デバッガ活用術 ~勘デバッグ・print デバッグから抜けだそう~ #jjug_ccc #ccc_h4
 
JRebel for Android 1.0 を試食してみた
JRebel for Android 1.0 を試食してみたJRebel for Android 1.0 を試食してみた
JRebel for Android 1.0 を試食してみた
 

Andere mochten auch

History_of_waterfall_append
History_of_waterfall_appendHistory_of_waterfall_append
History_of_waterfall_appendShin Semiya
 
Gradle a new Generation Build Tool
Gradle a new Generation Build ToolGradle a new Generation Build Tool
Gradle a new Generation Build ToolShinya Mochida
 
TDDBC 横浜 演習課題
TDDBC 横浜 演習課題TDDBC 横浜 演習課題
TDDBC 横浜 演習課題Hiroyuki Ohnaka
 
TDD Boot Camp 東京 for C++ 課題
TDD Boot Camp 東京 for C++ 課題TDD Boot Camp 東京 for C++ 課題
TDD Boot Camp 東京 for C++ 課題Takashi Imagire
 
ライフゲームでプログラミング
ライフゲームでプログラミングライフゲームでプログラミング
ライフゲームでプログラミングShinya Miyazaki
 
夏サミ 2012 [B-2]エンタープライズ開発におけるコラボレーション - JIRAによる顧客と開発チームのつなぎ方
夏サミ 2012 [B-2]エンタープライズ開発におけるコラボレーション - JIRAによる顧客と開発チームのつなぎ方夏サミ 2012 [B-2]エンタープライズ開発におけるコラボレーション - JIRAによる顧客と開発チームのつなぎ方
夏サミ 2012 [B-2]エンタープライズ開発におけるコラボレーション - JIRAによる顧客と開発チームのつなぎ方Yusuke Suzuki
 
ソーシャルゲームにおけるAWS/MongoDB利用事例
ソーシャルゲームにおけるAWS/MongoDB利用事例ソーシャルゲームにおけるAWS/MongoDB利用事例
ソーシャルゲームにおけるAWS/MongoDB利用事例Masakazu Matsushita
 
ペアプロワークショップ
ペアプロワークショップペアプロワークショップ
ペアプロワークショップYasui Tsutomu
 
Jenkins user conference 東京
Jenkins user conference 東京Jenkins user conference 東京
Jenkins user conference 東京Kohsuke Kawaguchi
 

Andere mochten auch (13)

About playdocja
About playdocjaAbout playdocja
About playdocja
 
History_of_waterfall_append
History_of_waterfall_appendHistory_of_waterfall_append
History_of_waterfall_append
 
Gradle a new Generation Build Tool
Gradle a new Generation Build ToolGradle a new Generation Build Tool
Gradle a new Generation Build Tool
 
TDDBC 横浜 演習課題
TDDBC 横浜 演習課題TDDBC 横浜 演習課題
TDDBC 横浜 演習課題
 
TDD Boot Camp 東京 for C++ 課題
TDD Boot Camp 東京 for C++ 課題TDD Boot Camp 東京 for C++ 課題
TDD Boot Camp 東京 for C++ 課題
 
MongoDB Oplog入門
MongoDB Oplog入門MongoDB Oplog入門
MongoDB Oplog入門
 
ライフゲームでプログラミング
ライフゲームでプログラミングライフゲームでプログラミング
ライフゲームでプログラミング
 
夏サミ 2012 [B-2]エンタープライズ開発におけるコラボレーション - JIRAによる顧客と開発チームのつなぎ方
夏サミ 2012 [B-2]エンタープライズ開発におけるコラボレーション - JIRAによる顧客と開発チームのつなぎ方夏サミ 2012 [B-2]エンタープライズ開発におけるコラボレーション - JIRAによる顧客と開発チームのつなぎ方
夏サミ 2012 [B-2]エンタープライズ開発におけるコラボレーション - JIRAによる顧客と開発チームのつなぎ方
 
ソーシャルゲームにおけるAWS/MongoDB利用事例
ソーシャルゲームにおけるAWS/MongoDB利用事例ソーシャルゲームにおけるAWS/MongoDB利用事例
ソーシャルゲームにおけるAWS/MongoDB利用事例
 
ペアプロワークショップ
ペアプロワークショップペアプロワークショップ
ペアプロワークショップ
 
coderetreat
coderetreatcoderetreat
coderetreat
 
Jenkins user conference 東京
Jenkins user conference 東京Jenkins user conference 東京
Jenkins user conference 東京
 
Linuxシステム管理入門
Linuxシステム管理入門Linuxシステム管理入門
Linuxシステム管理入門
 

Ähnlich wie 継続的インテグレーション3分クッキング

テスト勉強会よしおか100311 1
テスト勉強会よしおか100311 1テスト勉強会よしおか100311 1
テスト勉強会よしおか100311 1Hiro Yoshioka
 
Visual Studioで始めるTypeScript開発入門
Visual Studioで始めるTypeScript開発入門Visual Studioで始めるTypeScript開発入門
Visual Studioで始めるTypeScript開発入門Narami Kiyokura
 
TDDBC osaka 2012/06/02
TDDBC osaka 2012/06/02TDDBC osaka 2012/06/02
TDDBC osaka 2012/06/02Hiro Yoshioka
 
大規模ソフトウェア開発とテストの経験について
大規模ソフトウェア開発とテストの経験について大規模ソフトウェア開発とテストの経験について
大規模ソフトウェア開発とテストの経験についてRakuten Group, Inc.
 
ビルドサーバで使うDocker
ビルドサーバで使うDockerビルドサーバで使うDocker
ビルドサーバで使うDockerMasashi Shinbara
 
ALMツールたべくらべ
ALMツールたべくらべALMツールたべくらべ
ALMツールたべくらべKaoru NAKAMURA
 
Firefoxの開発プロセス
Firefoxの開発プロセスFirefoxの開発プロセス
Firefoxの開発プロセスMakoto Kato
 
Code igniterでテスト駆動開発 資料作成中
Code igniterでテスト駆動開発 資料作成中Code igniterでテスト駆動開発 資料作成中
Code igniterでテスト駆動開発 資料作成中Takako Miyagawa
 
オープン・ソースで構築するARMマイコン開発環境 ―― GCC,Eclipse,OpenOCDで統合開発環境,JTAGデバッグもできる!
オープン・ソースで構築するARMマイコン開発環境 ―― GCC,Eclipse,OpenOCDで統合開発環境,JTAGデバッグもできる!オープン・ソースで構築するARMマイコン開発環境 ―― GCC,Eclipse,OpenOCDで統合開発環境,JTAGデバッグもできる!
オープン・ソースで構築するARMマイコン開発環境 ―― GCC,Eclipse,OpenOCDで統合開発環境,JTAGデバッグもできる!Masaki Muranaka
 
【BS13】チーム開発がこんなにも快適に!コーディングもデバッグも GitHub 上で。 GitHub Codespaces で叶えられるシームレスな開発
【BS13】チーム開発がこんなにも快適に!コーディングもデバッグも GitHub 上で。 GitHub Codespaces で叶えられるシームレスな開発【BS13】チーム開発がこんなにも快適に!コーディングもデバッグも GitHub 上で。 GitHub Codespaces で叶えられるシームレスな開発
【BS13】チーム開発がこんなにも快適に!コーディングもデバッグも GitHub 上で。 GitHub Codespaces で叶えられるシームレスな開発日本マイクロソフト株式会社
 
170622 02
170622 02170622 02
170622 02openrtm
 
Spring Boot の Web アプリケーションを Docker に載せて AWS ECS で動かしている話
Spring Boot の Web アプリケーションを Docker に載せて AWS ECS で動かしている話Spring Boot の Web アプリケーションを Docker に載せて AWS ECS で動かしている話
Spring Boot の Web アプリケーションを Docker に載せて AWS ECS で動かしている話JustSystems Corporation
 
PostgreSQLではじめるOSS開発@OSC 2014 Hiroshima
PostgreSQLではじめるOSS開発@OSC 2014 HiroshimaPostgreSQLではじめるOSS開発@OSC 2014 Hiroshima
PostgreSQLではじめるOSS開発@OSC 2014 HiroshimaShigeru Hanada
 
Developers Summit 2023 9-D-1「もう悩まされない開発環境、プロジェクトで統一した環境をいつでもどこでも」
Developers Summit 2023 9-D-1「もう悩まされない開発環境、プロジェクトで統一した環境をいつでもどこでも」Developers Summit 2023 9-D-1「もう悩まされない開発環境、プロジェクトで統一した環境をいつでもどこでも」
Developers Summit 2023 9-D-1「もう悩まされない開発環境、プロジェクトで統一した環境をいつでもどこでも」Kazumi IWANAGA
 
密着!わたしのコンソールアプリ開発環境
密着!わたしのコンソールアプリ開発環境密着!わたしのコンソールアプリ開発環境
密着!わたしのコンソールアプリ開発環境Fumihito Yokoyama
 
Aspnet mvc 6の今を紹介
Aspnet mvc 6の今を紹介Aspnet mvc 6の今を紹介
Aspnet mvc 6の今を紹介Makoto Nishimura
 

Ähnlich wie 継続的インテグレーション3分クッキング (20)

Jenkinsstudy#4kokawa
Jenkinsstudy#4kokawaJenkinsstudy#4kokawa
Jenkinsstudy#4kokawa
 
テスト勉強会よしおか100311 1
テスト勉強会よしおか100311 1テスト勉強会よしおか100311 1
テスト勉強会よしおか100311 1
 
Visual Studioで始めるTypeScript開発入門
Visual Studioで始めるTypeScript開発入門Visual Studioで始めるTypeScript開発入門
Visual Studioで始めるTypeScript開発入門
 
TDDBC osaka 2012/06/02
TDDBC osaka 2012/06/02TDDBC osaka 2012/06/02
TDDBC osaka 2012/06/02
 
大規模ソフトウェア開発とテストの経験について
大規模ソフトウェア開発とテストの経験について大規模ソフトウェア開発とテストの経験について
大規模ソフトウェア開発とテストの経験について
 
ビルドサーバで使うDocker
ビルドサーバで使うDockerビルドサーバで使うDocker
ビルドサーバで使うDocker
 
ALMツールたべくらべ
ALMツールたべくらべALMツールたべくらべ
ALMツールたべくらべ
 
Firefoxの開発プロセス
Firefoxの開発プロセスFirefoxの開発プロセス
Firefoxの開発プロセス
 
Code igniterでテスト駆動開発 資料作成中
Code igniterでテスト駆動開発 資料作成中Code igniterでテスト駆動開発 資料作成中
Code igniterでテスト駆動開発 資料作成中
 
オープン・ソースで構築するARMマイコン開発環境 ―― GCC,Eclipse,OpenOCDで統合開発環境,JTAGデバッグもできる!
オープン・ソースで構築するARMマイコン開発環境 ―― GCC,Eclipse,OpenOCDで統合開発環境,JTAGデバッグもできる!オープン・ソースで構築するARMマイコン開発環境 ―― GCC,Eclipse,OpenOCDで統合開発環境,JTAGデバッグもできる!
オープン・ソースで構築するARMマイコン開発環境 ―― GCC,Eclipse,OpenOCDで統合開発環境,JTAGデバッグもできる!
 
恋するJenkins
恋するJenkins恋するJenkins
恋するJenkins
 
190925 python-windows
190925 python-windows190925 python-windows
190925 python-windows
 
20170124 linux basic_2
20170124 linux basic_220170124 linux basic_2
20170124 linux basic_2
 
【BS13】チーム開発がこんなにも快適に!コーディングもデバッグも GitHub 上で。 GitHub Codespaces で叶えられるシームレスな開発
【BS13】チーム開発がこんなにも快適に!コーディングもデバッグも GitHub 上で。 GitHub Codespaces で叶えられるシームレスな開発【BS13】チーム開発がこんなにも快適に!コーディングもデバッグも GitHub 上で。 GitHub Codespaces で叶えられるシームレスな開発
【BS13】チーム開発がこんなにも快適に!コーディングもデバッグも GitHub 上で。 GitHub Codespaces で叶えられるシームレスな開発
 
170622 02
170622 02170622 02
170622 02
 
Spring Boot の Web アプリケーションを Docker に載せて AWS ECS で動かしている話
Spring Boot の Web アプリケーションを Docker に載せて AWS ECS で動かしている話Spring Boot の Web アプリケーションを Docker に載せて AWS ECS で動かしている話
Spring Boot の Web アプリケーションを Docker に載せて AWS ECS で動かしている話
 
PostgreSQLではじめるOSS開発@OSC 2014 Hiroshima
PostgreSQLではじめるOSS開発@OSC 2014 HiroshimaPostgreSQLではじめるOSS開発@OSC 2014 Hiroshima
PostgreSQLではじめるOSS開発@OSC 2014 Hiroshima
 
Developers Summit 2023 9-D-1「もう悩まされない開発環境、プロジェクトで統一した環境をいつでもどこでも」
Developers Summit 2023 9-D-1「もう悩まされない開発環境、プロジェクトで統一した環境をいつでもどこでも」Developers Summit 2023 9-D-1「もう悩まされない開発環境、プロジェクトで統一した環境をいつでもどこでも」
Developers Summit 2023 9-D-1「もう悩まされない開発環境、プロジェクトで統一した環境をいつでもどこでも」
 
密着!わたしのコンソールアプリ開発環境
密着!わたしのコンソールアプリ開発環境密着!わたしのコンソールアプリ開発環境
密着!わたしのコンソールアプリ開発環境
 
Aspnet mvc 6の今を紹介
Aspnet mvc 6の今を紹介Aspnet mvc 6の今を紹介
Aspnet mvc 6の今を紹介
 

Kürzlich hochgeladen

論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A surveyToru Tamaki
 
論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNetToru Tamaki
 
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Yuma Ohgami
 
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する       2024/04/19 の勉強会で発表されたものですSOPを理解する       2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものですiPride Co., Ltd.
 
TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdfTSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdftaisei2219
 
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムスマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムsugiuralab
 
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略Ryo Sasaki
 
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)Hiroki Ichikura
 
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...Toru Tamaki
 

Kürzlich hochgeladen (9)

論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey
 
論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet
 
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
 
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する       2024/04/19 の勉強会で発表されたものですSOPを理解する       2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものです
 
TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdfTSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdf
 
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムスマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システム
 
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
 
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
 
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
 

継続的インテグレーション3分クッキング

  • 1. 継続的インテグレーション 3分クッキング ~検証ビルド環境をつくろう~ @cointoss1973 2012/07/08(日) アジャイルサムライ読書会#8 #agilesamurai #新宿道場
  • 2. 自己紹介 • こいんとす @cointoss1973 – Programming Language • C, C++, Python – OS • VxWorks – HP-UX, Tru64 UNIX, Solaris, Ubuntu, Windows – Activity • #47redmine スタッフ • #scmbc サポータ • #TokyoMercurial • #日本鼻メガネの会
  • 3. 告知 • 8月あたりに TDD+ペアプロ+DVCS を練習 する初心者向け勉強会(仮) #devstart の開催 を計画中です。 – スタッフ募集中!! – 来週の日曜日に大森駅近辺でスタッフで素振 り予定
  • 4. 本日つくるものは… • こんな困ったことありませんか? – pullしたソースコードがビルドできない! – pullしたソースコードがテストで落ちる • もちろん、一人でも使えますが複数人での同時開 発する場合にとても有効な構成になります • JenkinsとMercurialと使って、ビルドやテス トが通ったものだけを中央リポジトリに push構成のつくりかたをご紹介します
  • 5. 検証ビルドの位置づけ 作業 Subversionの場合のコ 検証済みビルド ミット後にJenkinsでビル (今回) ド 編集・マージ 開発者 開発者 コミット(SVN) 開発者 開発者 ビルド 事前に開発者が必ず実施 Jenkinsに任せることも可能 コミット後Jenkinsが実施 テスト 事前に開発者が必ず実施 Jenkinsに任せられる コミット後Jenkinsが実施 せっかくJenkinsがあるのに毎回開発者がビ ルドテストしないといけないの(´・ω・`)
  • 7. トッピングと味付け • 言語 – C++ – コンパイラ(MSBuild) • Visual Studio 2010 Express • 内容 – fizzbuzz • 第1引数で、最大値を指定可能とします
  • 8. 材料 • ハードウェア – OS : Windows XP SP3 を使います – ご家庭にある使わなくなった古いマシンでOKです – CドライブにWindows 、Dドライブがあるとベターです • ソフトウェア • Jenkins 1.473 (最新版) http://jenkins-ci.org/ • TortoiseHg 2.4.2 (最新版) http://tortoisehg.bitbucket.org/ja/ • Apache(HTTP Server) 2.2.22 (安定版) – http://httpd.apache.org/download.cgi#apache22 • Cygwin 1.7.15 (最新版) http://www.cygwin.com/ » wget を使いたいだけなので代わりのものでもOK。 • Visual C++ 2010 Express • Python 2.7.3 • PuTTY
  • 9. 作り方 • 4~5人前 1. Windows マシンに Jenkins, TortoiseHg, Apache, Python , VisualStu dioをインストールします 1. Cドライブと、Dドライブがあると理想的 2. Jenkins を起動し、プラグインを入れます 3. MercurialとApacheを連携します 4. Mercurialのhookスクリプトを設定します 5. JenkinsにJOB設定をします
  • 10. Jenkins • インストール先 – D:Jenkins にインストールしておくと無難 – ビルド結果のファイルをある程度保存しておくと良い • インストール完了後 – インストール後下記URLで自動でブラウザが開いてエラー画面が出る が慌てない(Jenkinsさんが起動中である) – http://localhost:8080/ • プラグイン – JenkinsのGUIから下記プラグイン達を導入(簡単) – Mercurial plugin • polling 設定を忘れずに。pollingの期間は@dailyでOK – 実際のトリガは、Mercurialのtestingリポジトリへのhookで行う – MSBuild plugin • Visual Studioコンパイルしやすくする。なくても – Warnings plugin • C/C++のコンパイラの警告集計
  • 11. TortoiseHg • インストーラをダウンロードして実行す るだけ – お好みで日本語メニューにどうぞ – hg コマンドも同梱されます、PATH環境変数 にも自動で追加されます – ssh用のクライアントも同梱されてるみたい • インストール先 – C:Program FilesTortoiseHg
  • 12. PuTTY • sshキー作成用にPuTTYをインストール • http://www.chiark.greenend.org.uk/~sgtatham/putty/
  • 13. Mercurial • D:repos にtestingリポジトリをおく • hg init D:reposfizzbuzz_testing • .hg/hgrc に下記hookを追加 [hooks] incoming.jenkins = wget -q http://zion:8080/mercurial/notifyCommit?url=http://zion/repos/hgweb.cgi/fizzbuzz_testing/
  • 14. Python • Pythonはバージョンがくつかあります – Python 2.7.3 とする(TortoiseHgと合わせておく と無難) – C:Python27 • 環境変数 PATH に”追加” – C:Python27;C:Python27Scripts
  • 16. Apache (httpd.conf) • httpd.conf # AddHandler allows you to map certain file extensions to "handlers": # actions unrelated to filetype. These can be either built into the server # or added with the Action directive (see below) # # To use CGI scripts outside of ScriptAliased directories: # (You will also need to add "ExecCGI" to the "Options" directive.) # AddHandler cgi-script .cgi Alias /repos D:/repos <Directory "D:/repos"> Options +ExecCGI Order allow,deny Allow from all DirectoryIndex hgweb.cgi </Directory>
  • 17. Apache (.config) • D:repos.config [web] templates = C:/Program Files/TortoiseHg/templates push_ssl = False allow_push = * [paths] / = D:/repos/* • .config – ドットで始まるファイルは、Windowsではコマンドプロ ンプト上で echo aaa > .config で作ってください(ダサい)
  • 18. Apache (hgweb.cgi) • D:reposhgweb.cgi [web] templates = C:/Program Files/TortoiseHg/templates push_ssl = False allow_push = * [paths] / = D:/repos/*
  • 20. Visual Studio 2010 Express • 普通にダウンロードしてインストール • 検証ビルドで本当に必要なのはコンパイ ラ(MSBuild.exe)だけなので、.NETフレー ムワークだけインストールでもOK(未確 認) C:WINDOWSMicrosoft.NETFrameworkv4.0.30319MSBuild.exe
  • 21. 実食(実演) • 実際に開発者のマシン(matrix)から、検証 ビルドサーバ(zion) に push してみます 本日は Oracle Virtual Box上にインストール、 セットアップ済みのマシンWindows XP SP3 を用意してあります (下ごしらえ済み)
  • 22. 食べ方 • 開発者A • bitbucketなど中央リポジトリからcloneする • ソースコード追加・修正・変更など • コミットする • ビルドサーバにpushする • 開発者B おそらく開発者Aが コミットした • ソースコード修正 changeset • コミット • push ( pull して merge してと表示される) • pull して merge • push
  • 23. 良い点 • ビルドサーバ側で、pushされたchangesetの 検証内容を決めることができます。 – まずはビルドだけでOK • 欲張らない – なお、中央リポジトリにはJenkinsからのみ pushできるようにしておくと確実 • アレンジ – 開発者側の変更無しで、”アレンジ”可能
  • 24. アレンジ • 自動テストを実施してテストが通らない コードを通さない • コードの静的検査が不適合のコードは通 さない • コミットログにチケット番号が入ってい ない場合(ry • push –f したマージしていないコード(ry • 追加されたchangesetをメールで飛ばす チームのポリシーやお好みに応じて、クリーンコードから外れ る良くない変更は事前に防止することができます
  • 25. 注意点 • 開発者が必ず検証ビルドを通すように環境を 構築する – 直接中央リポジトリにpushさせない • “検証ビルド”に時間がかかると、継続的イン テグレーションの旨みであるこまめに統合す る機会が少なくなります – 10分以内が理想。15分が限界 • ビルドマシンを強化する • コンパイルをインクリメンタルビルドにする
  • 26. 課題 – Mercurialのリポジトリを公開する方法( Apache + Mercurial の連携)はもっとcoolな方法がある と思います。 – http://mercurial.selenic.com/wiki/PublishingRepositories
  • 27. 今日できなかったこと • SSHの連携 – jenkinsさんから ssh で bitbucket.org に接続すると、 (おそらく)入力待ちで止まってしまうため hg clone ssh://… ができなかった • 仕方なく https を使うが .hg/hgrc ファイルに平文で password を書くのでセキュリティ的アレ • ビルドエラー時のrollback – アイデアとしては、ビルド開始時にファイルを作 成しておき、ビルドが正常に完了後、ビルド完了 時にファイルがあったらビルドが失敗したと判断 して rollback する
  • 28. ご清聴ありがとうございます • JenkinsとMercurial(DVCS)を連携して、ク リーンなリポジトリに保とう • 自動化大事 • Windows環境でもめげない – CygwinやMinGW/MSYSなどPOSIX環境を用意 することでなんとかなることも多い