Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
Jenkins with Docker
13/12/20 第8回 Jenkins 勉強会
Kazuki Suda
Kazuki Suda
! @superbrothers
" github.com/superbrothers
Docker とは
LXC ベースの軽量仮想化
コピーオンライトのファイルシステム
aufs, devicemapper, btrfs...
仮想マシンと比べ軽量で通常のプロセス
のように高速にコンテナを起動できる
ジョブごとにクリーンな
実行環境を一瞬で作ることが
できる!
Jenkins おじさん

スレーブノード


 LXC




Jenkins マスタから Docker がインストールさ
れたスレーブに対してジョブを実行し、ジョブ
スクリプトでコンテナの作成、削除を行う。
# Dockerfile for nodejs
!

FROM ubuntu:12.04
!

RUN apt-get -q update; apt-get -y upgrade
RUN apt-get -y install build-ess...
# Docker イメージのビルド
!

docker build -t jenkins-with-docker/nodejs .

# ジョブスクリプト
!

docker run 
-v ${WORKSPACE}:/workspace  #...
省略...
もっと Docker を活用してみる

複数のコンテナをバッググラウンドで
同時に作成し、travis-ci のように複
数のバージョンでテストを同時に実行
する
# Dockerfile for nodejs
!

# nodejs
RUN bash
RUN bash
RUN bash

インストール
-c ". /.nvm/nvm.sh; nvm install 0.8”
-c ". /.nvm/nv...
VERSIONS=(0.8 0.10 0.11)

!

for ((i = 0; i < "${#VERSIONS[@]}"; i++)); do
VERSION="${VERSIONS[$i]}"

!

!

# ワークスペースをビルド番...
まとめ
Docker を使うことでクリーンな環境
が一瞬で手に入る
Jenkins と Docker を組み合わせると
工夫次第でもっと面白いことができる
かも?

Jenkins with Docker
Upcoming SlideShare
Loading in …5
×

Jenkins with Docker

21,380 views

Published on

2013/12/20 第8回 Jenkins勉強会
https://github.com/ydnjp/jenkins-with-docker-demo
http://techblog.yahoo.co.jp/event/jenkins-with-docker/

Published in: Technology
  • Follow the link, new dating source: ♥♥♥ http://bit.ly/369VOVb ♥♥♥
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • Dating for everyone is here: ❤❤❤ http://bit.ly/369VOVb ❤❤❤
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here

Jenkins with Docker

  1. 1. Jenkins with Docker 13/12/20 第8回 Jenkins 勉強会 Kazuki Suda
  2. 2. Kazuki Suda ! @superbrothers " github.com/superbrothers
  3. 3. Docker とは LXC ベースの軽量仮想化 コピーオンライトのファイルシステム aufs, devicemapper, btrfs... 仮想マシンと比べ軽量で通常のプロセス のように高速にコンテナを起動できる
  4. 4. ジョブごとにクリーンな 実行環境を一瞬で作ることが できる!
  5. 5. Jenkins おじさん スレーブノード   LXC   Jenkins マスタから Docker がインストールさ れたスレーブに対してジョブを実行し、ジョブ スクリプトでコンテナの作成、削除を行う。
  6. 6. # Dockerfile for nodejs ! FROM ubuntu:12.04 ! RUN apt-get -q update; apt-get -y upgrade RUN apt-get -y install build-essential sudo git-core ! # NVM インストール RUN git clone --depth 1 https://github.com/creationix/nvm.git ~/.nvm ! # nodejs インストール RUN bash -c ". /.nvm/nvm.sh; nvm install 0.10" ! # スクリプト実行ユーザの作成 RUN useradd -u 45678 -s /bin/bash -m worker ! # ワークスペースのマウント先を作成 RUN mkdir /workspace ! ENTRYPOINT ["/bin/bash", "-c"]
  7. 7. # Docker イメージのビルド ! docker build -t jenkins-with-docker/nodejs . # ジョブスクリプト ! docker run -v ${WORKSPACE}:/workspace # Workspace をマウント -w /workspace # Working Directory を指定 -u worker # 実行ユーザを指定 -e HOME=/home/worker # 環境変数を指定 jenkins-with-docker/nodejs "$(cat <<EOL # イメージを指定 source /.nvm/nvm.sh # 実行スクリプトを指定 nvm use 0.10 npm install npm test EOL )"
  8. 8. 省略...
  9. 9. もっと Docker を活用してみる 複数のコンテナをバッググラウンドで 同時に作成し、travis-ci のように複 数のバージョンでテストを同時に実行 する
  10. 10. # Dockerfile for nodejs ! # nodejs RUN bash RUN bash RUN bash インストール -c ". /.nvm/nvm.sh; nvm install 0.8” -c ". /.nvm/nvm.sh; nvm install 0.10” -c ". /.nvm/nvm.sh; nvm install 0.11" Dockerfile を修正して3つのバージョ ンをインストールしておく
  11. 11. VERSIONS=(0.8 0.10 0.11) ! for ((i = 0; i < "${#VERSIONS[@]}"; i++)); do VERSION="${VERSIONS[$i]}" ! ! # ワークスペースをビルド番号、言語バージョン単位で複製する _WORKSPACE="${WORKSPACE}.${BUILD_NUMBER}.${VERSION}" cp -R "${WORKSPACE}" "${_WORKSPACE}" CONTAINER_ID=$(docker run -d # コンテナをバッググラウンドで実行 -v "${_WORKSPACE}":/workspace # Workspace をマウント -w /workspace # Working Directory を指定 -u worker # 実行ユーザを指定 -e HOME=/home/worker # 環境変数を指定 jenkins-with-docker/nodejs "$(cat <<EOL source /.nvm/nvm.sh nvm use ${VERSION} # バージョンを指定する npm install npm test EOL )") # コンテナ ID をスペース区切りでまとめる CONTAINER_IDS="${CONTAINER_IDS} ${CONTAINER_ID}" done 細かいのであとで ゆったり眺めてください! ! # docker wait は複数のコンテナ ID を受け取り、全てのコンテナが終了ステータスを返すまで待つ # コンテナ ID の引数順に終了ステータスを出力する EXIT_STATUSES="$(docker wait ${CONTAINER_IDS})"
  12. 12. まとめ Docker を使うことでクリーンな環境 が一瞬で手に入る Jenkins と Docker を組み合わせると 工夫次第でもっと面白いことができる かも?
  13. 13.

×