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

CIハンズオン@PHPカンファレンス福岡-開発

 CIハンズオン@PHPカンファレンス福岡-開発

Kaz Watanabe

June 27, 2015
Tweet

More Decks by Kaz Watanabe

Other Decks in Programming

Transcript

  1. $",&1)1ͰֶͿ
    ܧଓతΠϯςάϨʔγϣϯϋϯζΦϯ
    ։ൃฤ
    @PHPΧϯϑΝϨϯε෱Ԭ
    2015/6/27

    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. ಈ࡞؀ڥ

    View Slide

  5. BeHat
    • ϏϔΠϏΞ(ৼ෣)ۦಈ։ൃ
    (BDD:Behaviour Driven Development)
    • ετʔϦʔϕʔεͷςεςΟϯάϑϨʔϜϫʔΫ

    View Slide

  6. BeHat
    'FBUVSFͷهड़ྫ

    View Slide

  7. BeHat
    'FBUVSFͷ࣮ߦྫ

    View Slide

  8. BeHat
    #%%։ൃϓϩηε

    View Slide

  9. ࠷ॳͷεϓϦϯτ͕
    ऴΘΔॴἬϫʔϓ͠·͢

    View Slide

  10. ࠷ॳͷεϓϦϯτ͕
    ׬ྃͨ͠ঢ়ଶΛ࡞੒
    host $ vagrant ssh develop
    $ cd /var/www/application/current/app
    $ git merge origin/step2
    $ composer install --dev

    View Slide

  11. DATABASEΛMigration

    View Slide

  12. DATABASEΛMigration
    $ cd /var/www/application/current/app
    $ Console/cake Migrations.migration run all

    View Slide

  13. http://192.168.33.10/posts

    View Slide

  14. UnitTest
    $ cd /var/www/application/current/app
    $ Console/cake Test app AllTests

    View Slide

  15. View Slide

  16. StoryTest
    $ cd /var/www/application/current/app
    $ Console/cake Bdd.story

    View Slide

  17. View Slide

  18. Jenkinsʹ૊ࠐΜͰ͍͖·͢ʂ

    View Slide

  19. ͦͷલʹ…
    $ git update-index --add --chmod=+x Console/cake
    $ git add -u
    $ git commit -m “cakeίϚϯυʹ࣮ߦݖΛ෇༩”
    $ git push origin master

    View Slide

  20. BUILDπʔϧΛಋೖ
    — phingΛಋೖ
    $ cd /var/www/application/current/app
    $ composer require --dev "phing/phing:~2.8"

    View Slide

  21. PHINGͷઆ໌

    View Slide

  22. BUILDπʔϧΛಋೖ
    — मਖ਼Λίϛοτ
    $ git add composer.json composer.lock
    $ git commit -m 'PhingΛ௥Ճ'

    View Slide

  23. BUILDͷઃఆ


























    /var/www/application/current/build.xml

    View Slide

  24. BUILDπʔϧΛಋೖ
    — ϏϧυΛ࣮ߦ
    $ cd /var/www/application/current
    $ app/Vendor/bin/phing

    View Slide

  25. BUILDπʔϧΛಋೖ
    — मਖ਼Λίϛοτ
    $ git add build.xml
    $ git commit -m ‘ϏϧυϑΝΠϧΛ௥Ճ'
    $ git push origin master

    View Slide

  26. BUILDπʔϧΛಋೖ

    View Slide

  27. BUILDπʔϧΛಋೖ

    View Slide

  28. BUILDπʔϧΛಋೖ
    cd ${WORKSPACE}/app
    composer install --dev
    cd ${WORKSPACE}
    app/Vendor/bin/phing -logger phing.listener.DefaultLogger

    View Slide

  29. ϏϧυΛ࣮ߦʂ

    View Slide

  30. UnitTest݁ՌΛදࣔ

    View Slide

  31. UnitTest݁ՌΛදࣔ͢Δ
    — build.xmlΛमਖ਼

    output="${logdir}/caketest.log" checkreturn="true">










    View Slide

  32. UnitTest݁ՌΛදࣔ͢Δ
    — मਖ਼Λίϛοτ
    $ git add build.xml
    $ git commit -m 'Ϣχοτςετͷ݁ՌΛϑΝΠϧ
    ʹग़ྗ'
    $ git push origin master

    View Slide

  33. UnitTest݁ՌΛදࣔ͢Δ

    View Slide

  34. UnitTest݁ՌΛදࣔ͢Δ
    app/reports/unittest.xml

    View Slide

  35. UnitTest݁ՌΛදࣔ͢Δ

    View Slide

  36. UnitTest݁ՌΛදࣔ͢Δ
    app/reports/
    app/reports/coverage.xml
    मਖ਼ͨ͠Βอଘͯ͠Ϗϧυ࣮ߦ
    νΣοΫ͢Δ

    View Slide

  37. UnitTest݁ՌΛදࣔ͢Δ

    View Slide

  38. UnitTest݁ՌΛදࣔ͢Δ
    ConfigσΟϨΫτϦͷΧόϨοδ͕௿͍ʂ

    View Slide

  39. UnitTest݁ՌΛදࣔ͢Δ
    — app/phpunit.xmlΛमਖ਼(ΧόϨοδͷআ֎ઃఆΛ௥Ճ)



    Plugin
    Test
    Vendor

    Config/bootstrap
    Config/database.php
    <-- ͜͜·Ͱ௥Ճ -->



    View Slide

  40. UnitTest݁ՌΛදࣔ͢Δ
    — मਖ਼Λίϛοτ
    $ git add app/phpunit.xml
    $ git commit -m 'ΧόϨοδআ֎ର৅Λ௥Ճ'
    $ git push origin master

    View Slide

  41. UnitTest݁ՌΛදࣔ͢Δ
    ΧΠθϯͨ͠ʂ

    View Slide

  42. Behatͷ݁ՌΛදࣔ͢Δ
    — build.xmlΛमਖ਼






    output="${logdir}/behat.log" checkreturn="true">






    View Slide

  43. Behatͷ݁ՌΛදࣔ͢Δ
    — मਖ਼Λίϛοτ
    $ git add build.xml
    $ git commit -m 'BehatςετΛ௥Ճ'
    $ git push origin master

    View Slide

  44. Behatͷ݁ՌΛදࣔ͢Δ
    app/reports/*.xml ʹमਖ਼
    मਖ਼ͨ͠Βอଘͯ͠Ϗϧυ࣮ߦ

    View Slide

  45. Behatͷ݁ՌΛදࣔ͢Δ

    View Slide

  46. ੩తղੳͷઃఆΛ͢Δ

    View Slide

  47. ੩తղੳͷઃఆΛ͢Δ
    $ cd /var/www/application/current/app
    $ composer require --dev "cakephp/cakephp-codesniffer:0.1.*"
    $ composer require --dev "phpmd/phpmd:2.*"
    $ composer require --dev "sebastian/phpcpd:2.*"

    View Slide

  48. ੩తղੳͷઃఆΛ͢Δ
    — मਖ਼Λίϛοτ
    $ git add composer.json composer.lock
    $ git commit -m 'ΠϯεϖΫγϣϯπʔϧͷ௥Ճ'
    $ git push origin master

    View Slide

  49. ੩తղੳͷઃఆΛ͢Δ
    — build.xmlΛमਖ਼(1)








    depends="prepare,caketest,behat,phpcs,phpmd,phpcpd"/>

    View Slide

  50. ੩తղੳͷઃఆΛ͢Δ
    — build.xmlΛमਖ਼(2) - PHPCodeSnifferͷઃఆΛ௥Ճ
















    View Slide

  51. ੩తղੳͷઃఆΛ͢Δ
    — build.xmlΛमਖ਼(3) - PHPMDͷઃఆΛ௥Ճ


    output="${logdir}/phpmd.log">







    View Slide

  52. ੩తղੳͷઃఆΛ͢Δ
    — build.xmlΛमਖ਼(4) - PHPCPDͷઃఆΛ௥Ճ


    output="${logdir}/phpcpd.log">








    View Slide

  53. ੩తղੳͷઃఆΛ͢Δ
    — मਖ਼Λίϛοτ
    $ git add build.xml
    $ git commit -m 'ΠϯεϖΫγϣϯͷ࣮ߦΛ௥Ճ'
    $ git push origin master

    View Slide

  54. ੩తղੳͷઃఆΛ͢Δ
    app/reports/checkstyle.xml
    app/reports/phpmd.xml
    app/reports/phpcpd.xml

    View Slide

  55. ੩తղੳͷઃఆΛ͢Δ
    MigrationͱSchemaʹܯࠂ

    View Slide

  56. ੩తղੳͷઃఆΛ͢Δ
    — build.xmlΛमਖ਼(5) - PHPMDͷআ֎σΟϨΫτϦ௥Ճ


    output="${logdir}/phpmd.log">









    View Slide

  57. ੩తղੳͷઃఆΛ͢Δ
    — मਖ਼Λίϛοτ
    $ git add build.xml
    $ git commit -m 'PMDͷআ֎σΟϨΫτϦΛ௥Ճ'
    $ git push origin master

    View Slide

  58. ੩తղੳͷઃఆΛ͢Δ
    ΧΠθϯͨ͠ʂ

    View Slide

  59. υΩϡϝϯτΛੜ੒͢Δ
    — build.xmlΛमਖ਼(1)

    depends=“prepare,caketest,behat,phpcs,phpmd,phpcpd,phpdoc"/>



    checkreturn="true">








    View Slide

  60. υΩϡϝϯτΛੜ੒͢Δ
    $ git add build.xml
    $ git commit -m 'υΩϡϝϯτੜ੒ͷ࣮ߦΛ௥Ճ'
    $ git push origin master

    View Slide

  61. υΩϡϝϯτΛੜ੒͢Δ

    View Slide

  62. υΩϡϝϯτΛੜ੒͢Δ
    ௥ՃΛԡͯ͠ҎԼͷΑ͏ʹઃఆ
    app/reports/doc/ index.html API Documentation

    View Slide

  63. υΩϡϝϯτΛੜ੒͢Δ

    View Slide

  64. υΩϡϝϯτΛੜ੒͢Δ
    app/Model/Post.phpʹҎԼͷ༷ʹίϝϯτΛ௥Ճ
    App::uses('AppModel', 'Model');
    /**
    * Post Model
    *
    * ϒϩάهࣄ༻ϞσϧͰ͢
    *
    * @copyright php_ci_book
    * @link https://github.com/phpcibook/blogapp/blob/master/app/Model/Post.php
    * @since 1.0
    * @auther ࡞੒ऀͷ໊લ
    *
    */
    class Post extends AppModel {

    View Slide

  65. υΩϡϝϯτΛੜ੒͢Δ
    app/Model/Post.phpʹҎԼͷ༷ʹίϝϯτΛ௥Ճ
    class Post extends AppModel {
    /**
    * Ұཡදࣔ࣌ͷλΠτϧʹ࢖༻͢ΔΧϥϜ໊
    *
    * @var string
    */
    public $displayField = 'title';
    /**
    * όϦσʔγϣϯϧʔϧ
    *
    * @var array
    */
    public $validate = [

    View Slide

  66. υΩϡϝϯτΛੜ੒͢Δ
    $ git add app/Model/Post.php
    $ git commit -m 'DocBlockίϝϯτΛ௥Ճ'
    $ git push origin master
    मਖ਼ͨ͠Βอଘͯ͠Ϗϧυ࣮ߦ

    View Slide

  67. υΩϡϝϯτΛੜ੒͢Δ

    View Slide

  68. ຊ൪؀ڥʹDEPLOY͢Δ

    View Slide

  69. ຊ൪؀ڥʹDEPLOY͢Δ
    $ vagrant ssh deploy
    $ ssh-keygen
    อଘ৔ॴ,ύεϑϨʔζೖྗ(ۭͰվߦͰ)
    $ cat ~/.ssh/id_rsa.pub
    ެ։伴Λίϐʔ

    View Slide

  70. ຊ൪؀ڥʹDEPLOY͢Δ
    Add deploy keyΛΫϦοΫͯ͠ެ։伴Λ௥Ճ

    View Slide

  71. ຊ൪؀ڥʹDEPLOY͢Δ
    $ cd /var/www/application/current
    $ mkdir deploy
    $ cd deploy
    $ cap install
    CapistranoͷDeployεΫϦϓτͷͻͳܗΛ࡞੒

    View Slide

  72. ຊ൪؀ڥʹDEPLOY͢Δ
    deploy/config/deploy/production.php
    Environment::configure('production', true, [
    'MYSQL_DB_HOST' => 'localhost',
    'MYSQL_USERNAME' => 'webapp',
    'MYSQL_PASSWORD' => 'passw0rd',
    'MYSQL_DB_NAME' => 'blog',
    'MYSQL_PREFIX' => '',
    'debug' => 0,
    ], function() {
    });
    ຊ൪αʔόʔ༻ͷઃఆϑΝΠϧΛ௥Ճ

    View Slide

  73. ຊ൪؀ڥʹDEPLOY͢Δ
    $ cd /var/www/application/current/deploy/config/deploy
    $ vim production.rb
    server '192.168.33.200',
    roles: %w{web app db},
    user: 'vagrant',
    ssh_options: {
    password: fetch(:password)
    },
    cake_env: "production",
    app_config:'production.php',
    group: 'vagrant'
    Deployઌͷઃఆ

    View Slide

  74. ຊ൪؀ڥʹDEPLOY͢Δ
    $ cd /var/www/application/current/deploy/
    $ vim reploy.rb
    — 5ߦ໨ͷϦϙδτϦURLΛ֤ࣗमਖ਼
    set :repo_url, '[email protected]:phpcibook/blogapp.git' # (2)
    DeployεΫϦϓτΛमਖ਼
    ϑΝΠϧͷৄࡉ͸ stypi_ deploy.rbࢀর

    View Slide

  75. ຊ൪؀ڥʹDEPLOY͢Δ
    $ cd /var/www/application/current/deploy/
    $ cap production deploy
    Please enter Server password: (): vagrant

    View Slide

  76. ։ൃฤ
    Fin
    @kaz_29

    View Slide