Upgrade to Pro — share decks privately, control downloads, hide ads and more …

CakePHPで学ぶ継続的インテグレーション ハンズオン@大阪 環境構築編

Kaz Watanabe
November 01, 2014

CakePHPで学ぶ継続的インテグレーション ハンズオン@大阪 環境構築編

環境構築編

Kaz Watanabe

November 01, 2014
Tweet

More Decks by Kaz Watanabe

Other Decks in Programming

Transcript

  1. $",&1)1ͰֶͿ
    ܧଓతΠϯςάϨʔγϣϯϋϯζΦϯ
    ؀ڥߏஙฤ
    @DevLoveؔ੢

    2014/11/1

    View Slide

  2. WHO?
    • Θͨͳ΂͔ͣͻΖ(@kaz_29)

    • ߹ಉձࣾ decr (decr.jp)

    • PHP(CakePHP)ͰWebΞϓϦ։ൃ

    • Πϯϑϥߏஙɾӡ༻

    • iOSΞϓϦ։ൃ
    #beer #iosdev #cakephp #cat #camp!
    #golf #chef #vagrant

    View Slide

  3. WHO?

    View Slide

  4. QUESTION?

    View Slide

  5. QUESTION?
    VagrantΛ࢖ͬͨࣄ͕͋Δਓ

    View Slide

  6. QUESTION?
    chefΛ࢖ͬͨࣄ͕͋Δਓ

    View Slide

  7. ಈ࡞؀ڥ
    • VirtualBox

    • Vagrant

    • chef-solo(+knife-solo)

    • berkshelf

    View Slide

  8. ಈ࡞؀ڥ
    ։ൃ؀ڥ
    EFWFMPQ

    $*؀ڥ
    DJ

    ຊ൪؀ڥ
    EFQMPZ

    ؀ڥઃఆ
    TIBSFEGPMEFS
    ޷͖ͳΤσΟλ*%&Ͱ։ൃ
    QVTI
    QVMM
    ·ͣ͸͜͜ͷ࿩

    View Slide

  9. http://bit.ly/1DdQHx8
    ͜͜ͰςΩετΛڞ༗͠·͢

    View Slide

  10. ඞཁͳ΋ͷ
    • VitrtualBox - https://www.virtualbox.org/

    • Vagrant - https://www.vagrantup.com/

    • ChefDK - https://downloads.getchef.com/chef-dk/
    ग़དྷΔ͚ͩ࠷৽Λ࢖͏

    View Slide

  11. BOXFILE௥Ճ
    $ vagrant box add opscode-ubuntu-14.04 \

    ~/Desktop/opscode_ubuntu-14.04_chef-provisionerless.box
    ͖ͬ͞USB͔Βίϐʔͨ͠΋ͷΛ࢖͍ͬͯͩ͘͞ʂ

    View Slide

  12. Vagrant PluginͷΠϯετʔϧ
    !
    $ vagrant plugin install vagrant-omnibus

    $ vagrant plugin install vagrant-cachier

    View Slide

  13. ؀ڥઃఆϦϙδτϦΛऔಘ
    !
    $ git clone https://github.com/phpcibook/php_ci_env phpci_handson

    $ cd phpci_handson

    $ mkdir application

    View Slide

  14. cookbookΛΠϯετʔϧ
    !
    $ berks vendor cookbooks

    View Slide

  15. ։ൃ༻αʔόͷىಈ
    !
    $ vagrant up develop

    View Slide

  16. Vagrantfileͷղઆ

    config.vm.define :develop do |develop|
    develop.omnibus.chef_version = :latest
    develop.vm.hostname = "develop"
    develop.vm.box = "opscode-ubuntu-14.04"
    develop.vm.box_url = "http://opscode-vm-bento.s3.amazonaws.com/
    vagrant/virtualbox/opscode_ubuntu-14.04_chef-provisionerless.box"
    develop.vm.network :private_network, ip: "192.168.33.10"
    !
    develop.vm.synced_folder "application", "/var/www/application/
    current",
    id: "vagrant-root", :nfs => false,
    :owner => "vagrant",
    :group => "www-data",
    :mount_options => ["dmode=775,fmode=775"]

    View Slide

  17. Vagrantfileͷղઆ

    develop.vm.provision :chef_solo do |chef|
    chef.log_level = "debug"
    chef.cookbooks_path = "./cookbooks"
    chef.json = {
    nginx: {
    docroot: {
    owner: "vagrant",
    group: "vagrant",
    path: "/var/www/application/current/app/webroot",
    force_create: true
    },
    default: {
    fastcgi_params: { CAKE_ENV: "development" }
    },
    test: {
    available: true,
    fastcgi_params: { CAKE_ENV: "test" }
    }
    }
    }
    chef.run_list = %w[
    recipe[apt]
    recipe[phpenv::default]
    recipe[phpenv::composer]
    recipe[phpenv::develop]
    recipe[capistrano]
    ]
    end

    View Slide

  18. PHPENV COOKBOOKͷղઆ
    site-cookbooks/phpenv/recipes/default.rb

    View Slide

  19. PHPENV COOKBOOKͷղઆ
    site-cookbooks/phpenv/recipes/composer.rb

    View Slide

  20. PHPENV COOKBOOKͷղઆ
    site-cookbooks/phpenv/recipes/develop.rb

    View Slide

  21. PHPENV COOKBOOKͷղઆ
    site-cookbooks/phpenv/recipes/develop.rb

    View Slide

  22. capistrano cookbookͷղઆ
    site-cookbooks/capistrano/recipes/default.rb

    View Slide

  23. http://192.168.33.10/

    View Slide

  24. CIαʔόͷىಈ
    !
    $ vagrant up ci

    View Slide

  25. COOKBOOKͷղઆ

    View Slide

  26. http://192.168.33.100:8080/

    View Slide

  27. DEPLOYαʔόͷىಈ
    !
    $ vagrant up deploy

    View Slide

  28. COOKBOOKͷղઆ

    View Slide

  29. http://192.168.33.200/

    View Slide

  30. αϯϓϧΞϓϦ؀ڥͷߏங

    View Slide

  31. ։ൃ؀ڥ
    EFWFMPQ

    ಈ࡞؀ڥ
    $*؀ڥ
    DJ

    ຊ൪؀ڥ
    EFQMPZ

    ؀ڥઃఆ
    TIBSFEGPMEFS
    ޷͖ͳΤσΟλ*%&Ͱ։ൃ
    QVTI
    QVMM

    View Slide

  32. ಈ࡞؀ڥ

    View Slide

  33. MYSQL PWΛઃఆ
    !
    $ vagrant ssh develop

    mysql -uroot -ppassword

    !
    GRANT ALL PRIVILEGES ON *.* TO 'webapp'@'%' identified by 'passw0rd'
    WITH GRANT OPTION;

    FLUSH PRIVILEGES;

    CREATE DATABASE blog default character set utf8;

    CREATE DATABASE test_blog default character set utf8;

    !
    $ vagrant ssh ci

    $ vagrant ssh deploy

    View Slide

  34. BLOGAPPΛFORK͢Δ
    https://github.com/kaz29/blogapp

    View Slide

  35. 伴Λ࡞ͬͯొ࿥
    !
    $ vagrant ssh develop

    $ ssh-keygen

    Generating public/private rsa key pair.

    Enter file in which to save the key (/home/vagrant/.ssh/id_rsa):

    Enter passphrase (empty for no passphrase):

    Enter same passphrase again:



    !
    $ cat ~/.ssh/id_rsa.pub

    ެ։伴Λίϐʔ

    View Slide

  36. 伴Λ࡞ͬͯొ࿥
    setting -> SSH Keys
    ͜͜ʹެ։伴ΛೖΕΔ

    View Slide

  37. GITͷઃఆ
    $ git config --global user.name "Your Name"

    $ git config --global user.email [email protected]

    View Slide

  38. ΞϓϦέʔγϣϯΛॳظԽ
    !
    $ vagrant ssh develop

    $ cd /var/www/application/current

    $ rm -rf *

    $ git clone git://github.com/decr/blogapp.git . (<=υοτ)

    $ git checkout -b step1 origin/step1

    $ cd /var/www/application/current/app

    $ composer install --dev

    View Slide

  39. View Slide

  40. JenkinsʹJobΛొ࿥

    View Slide

  41. JenkinsʹJobΛొ࿥

    View Slide

  42. JenkinsʹJobΛొ࿥
    https://github.com/kaz29/blogapp.git

    View Slide

  43. JenkinsʹJobΛొ࿥
    4$.ΛϙʔϦϯάΛνΣοΫ
    )
    ઃఆ׬ྃͨ͠Βอଘ

    View Slide

  44. JenkinsʹJobΛొ࿥
    ϏϧυΛ࣮ߦ

    View Slide

  45. JenkinsʹJobΛొ࿥

    View Slide

  46. JenkinsʹJobΛొ࿥

    View Slide

  47. ؀ڥઃఆ׬ྃʂ
    !
    $ vagrant halt deploy
    ͠͹Β͘࢖Θͳ͍ͷͰམͱ͓͖ͯ͠·͢

    View Slide

  48. ؀ڥߏஙฤ

    Fin
    @kaz_29

    View Slide