Jenkins EC2



     @bluepapa32
      2011/04/26
@bluepapa32
http://d.hatena.ne.jp/bluepapa32/



    AWS      Jenkins                ...
      Java   Groovy Ruby
...
Jenkins   ...

    EC2
...




(            )




     --Martin Fowler
Jenkins   ...




                ...
WAR

                                       ...


                                             ...

                        java -jar jenkins.war
http://jenkins-ci.org
Windows
Mac OS X
Linux / Unix
...
EC2
SSH
EC2

→


→


→


→
...



SSH




      EC2
...

EC2




EC2
...


EC2

Jenkins
...




http://www.slideshare.net/kentamagawa/3aws
EC2
http://www.slideshare.net/kentamagawa/3amazon-ec2
CPU
→



→
...
...




      ...
/




AWS Management Console
Root Device   ...

   Elastic
   Block
   Store
EBS



      ...
...
1
    ...
5
1

       12
     60
12


            ...
Root Device   ...

   Elastic
   Block
   Store
Jenkins
WAR

                                       ...




                        java -jar jenkins.war
http://jenkins-ci.org
EC2

...
...
EC2 API Tools


          ..
Amazon EC2 API Tools
ZIP

                                                  ...




http://s3.amazonaws.com/ec2-downloads/ec2-api-tools.zip
X.509



  cert-XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX.pem
export JAVA_HOME=/Library/Java/Home
export EC2_HOME=/usr/local/ec2-api-tools
export PATH=$EC2_HOME/bin:$PATH

export EC2_URL=https://ap-northeast-1.ec2.amazonaws.com
export EC2_PRIVATE_KEY=$HOME/.ec2/pk-XXXXXXXXXXXX.pem
export EC2_CERT=$HOME/.ec2/cert-XXXXXXXXX.pem
Instance ID
ec2-start-instances [Instance ID]
ec2-describe-instances [Instance ID]
ec2-stop-instances [Instance ID]
#!/bin/bash
# Usage: jenkins-slave.sh [Instance ID]
trap "ec2-stop-instances $1" 15
ec2-start-instances $1
HOST=`ec2-describe-instances $1 | grep INSTANCE | cut -f 4`
curl -s http://localhost:8080/jnlpJars/slave.jar |       
ssh -i $HOME/.ssh/ec2.pem -o StrictHostKeyChecking=false 
$USER@$HOST "cat > slave.jar"
ssh -i $HOME/.ssh/ec2.pem -o StrictHostKeyChecking=false 
root@$HOST "java -jar slave.jar"
EC2




EC2
Jenkins@EC2 による 継続的インテグレーション

Jenkins@EC2 による 継続的インテグレーション