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

circleci小ネタ集 / circleci_tips

circleci小ネタ集 / circleci_tips

コード改善 meetup #1 http://kaizen.connpass.com/event/31378/

Jun Watanabe

May 26, 2016
Tweet

More Decks by Jun Watanabe

Other Decks in Programming

Transcript

  1. circleciখωλू
    2016/05/26 ίʔυվળ meetup #1
    Jun Watanabe

    View Slide

  2. Jun Watanabe @rela1470
    • ΃ͪͺʔ6೥໨
    • ORATTA, Inc Chief Engineer
    • http://rela.red/
    ʘWe are hiring!ʗ

    View Slide

  3. ίʔυվળͱ͍͑͹
    CIπʔϧ͔ͳ

    View Slide

  4. ઌ݄ɺ
    ΦϯϓϨJenkins͔Β
    circleciʹ׬શҠߦ͠·ͨ͠!

    View Slide

  5. https://speakerdeck.com/
    rela1470/jenkins-kill

    View Slide

  6. ஻Βͳ͔ͬͨ͜ͱ
    +
    ͦͷޙࠔͬͨ͜ͱ
    ΍ͬͨ͜ͱ

    View Slide

  7. PHP 5.5
    PHPUnit
    GitHub
    circleci FREE Plan

    View Slide

  8. ෩࿊෦(ࣾ಺੍౓)
    िʹ3࣌ؒձٞࣨʹ࿜ͬͯ
    ͻͨ͢Βۀ຿վળɾٕज़ௐࠪ
    ORATTA Frontier TechͷଏশΒ͍͠

    View Slide

  9. ෳ਺GitͷClone

    View Slide

  10. 1ϓϩδΣΫτ
    5ͭ͘Β͍ͷgitʹ
    ෼͔Ε͍ͯΔ

    View Slide

  11. ϓϩδΣΫτͷgit഑ஔྫ
    multi [multi.git] //ࣗࣾϑϨʔϜϫʔΫ
    !system
    ɹ"addon
    ɹ#ɹ!asuka [asuka.git] //ϓϩδΣΫτຖͷಠ࣮ࣗ૷ιʔε
    ɹ#ɹɹ"master [asuka-master.git]ɹ//ΞΠςϜ౳ͷϚελʔઃఆ
    ɹ#ɹɹ!web [asuka-web.git]ɹ//ը૾΍Ի੠౳
    ɹ!lib[lib.git] //ࣗࣾϥΠϒϥϦ

    View Slide

  12. Jenkins͸
    Multiple SCMs Plugin

    View Slide

  13. circleciͰ͸Ͳ͏͢Δ͔

    View Slide

  14. circle.ymlͰؤுΔ

    View Slide

  15. git cloneͯ͠
    ࣗ෼Ͱ഑ஔ͠ͳ͓͢
    checkout:
    post:
    - "git clone -b ${CIRCLE_BRANCH} [email protected]:oratta-inc/
    multi.git /home/ubuntu/multi"
    - "git clone -b ${CIRCLE_BRANCH} [email protected]:oratta-inc/
    lib.git /home/ubuntu/multi/system/lib"
    - "mkdir /home/ubuntu/multi/system/addon"
    test:
    pre:
    - "cp -a /home/ubuntu/${CIRCLE_PROJECT_REPONAME}/ /home/ubuntu/
    multi/system/addon/${CIRCLE_PROJECT_REPONAME}"
    - "git clone -b ${CIRCLE_BRANCH} [email protected]:oratta-inc/
    asuka-master.git /home/ubuntu/multi/system/addon/asuka/master"

    View Slide

  16. ݖݶͲ͏ͳͬͯΔͷ?

    View Slide

  17. Deploy keysΛ࢖͏ͱ
    ౰֘1ϦϙδτϦͷΈ

    View Slide

  18. user keyʹࠩ͠ସ͑ͯ
    Ϣʔβʹඥ෇͍ͨݖݶΛऔಘ

    View Slide

  19. user keyʹࠩ͠ସ͑ͯ
    Ϣʔβʹඥ෇͍ͨݖݶΛऔಘ

    View Slide

  20. αϒϞδϡʔϧԽ
    ΍Ζ͏ͱͯ͠·͢
    @ࠓ೥த͘Β͍...

    View Slide

  21. Ϗϧυͷखಈ࣮ߦ

    View Slide

  22. εέδϡʔϧϏϧυ
    खಈϏϧυ
    Ͱ͖ͳ͘ͳΔͷ?

    View Slide

  23. ͔ͨ͠ʹWebUI͸ͳ͍

    View Slide

  24. RestAPI͕͋Δ!

    View Slide

  25. ՝ۚػೳҎ֎͸શ෦Ͱ͖ΔΑ!

    View Slide

  26. branchΛࢦఆͯ͠
    ৽ϏϧυΛߦ͏API
    curl -X POST https://circleci.com/api/v1/project/:username/:project/
    tree/:branch?circle-token=:token

    View Slide

  27. εέδϡʔϧϏϧυ
    cronͰୟ͘
    खಈϏϧυ
    खͰୟ͘

    View Slide

  28. ΧόϨοδूܭ

    View Slide

  29. ΧόϨοδूܭ͍ͨ͠
    දͰݟ͍ͨ

    View Slide

  30. XdebugΛONʹ
    sed -i 's/^;//' ~/.phpenv/versions/$(phpenv global)/etc/conf.d/
    xdebug.ini

    View Slide

  31. --coverage-html Ͱ
    $CIRCLE_ARTIFACTS
    ʹग़ྗͨ͠ΒOK

    View Slide

  32. ͻͱͭ໰୊͕...

    View Slide

  33. View Slide

  34. View Slide

  35. Ϗϧυʹ20෼

    View Slide

  36. pushͷ౓ʹ20෼଴ͪ͸

    ͕͢͞ʹࠔΔ...

    View Slide

  37. ۚͰԥΔͷ͸࠷ޙͷखஈ

    View Slide

  38. Ϗϧυ࣌ؒͷ୹ॖ

    View Slide

  39. ผʹPush࣌
    ຖճ΍Βͳͯ͘΋
    ि1͘Β͍Ͱྑ͍

    View Slide

  40. Ҿ਺Ͱ໌ࣔతʹ

    ͚ͨ࣌ͩ͠
    ΧόϨοδूܭ

    View Slide

  41. ͜ΜͳγΣϧεϓϦΫτ
    ࡞Γ·ͨ͠
    test:
    override:
    - sh test.sh
    if [[ -v RUN_COVERAGE ]]
    then
    sed -i 's/^;//' ~/.phpenv/versions/$(phpenv global)/etc/conf.d/
    xdebug.ini
    phpunit -c phpunit.xml --coverage-html=${CIRCLE_ARTIFACTS}
    else
    phpunit -c phpunit.xml
    fi
    circle.yml
    test.sh

    View Slide

  42. XdebugΛONʹ͢Δͱ
    PHPUnit͕ॏ͘ͳΔ

    View Slide

  43. औಘ͢Δ͚࣌ͩ
    XdebugΛONʹ͢Δ

    View Slide

  44. REST APIͰbuild_parameters
    Λ෇༩ͯ͠Ϗϧυ
    curl -X POST --header "Content-Type: application/json" -d
    '{"build_parameters": {"RUN_COVERAGE": "true"}}' https://
    circleci.com/api/v1/project/username/reponame/tree/branch?circle-
    token=hogehoge

    View Slide

  45. ݄༵ͷேʹ
    cronͰճͯ͠·͢

    View Slide

  46. γεςϜ؆ུԽ

    View Slide

  47. ͜ΜͳγΣϧεϓϦΫτ
    ࡞Γ·ͨ͠
    test:
    override:
    - sh test.sh
    if [[ -v RUN_COVERAGE ]]
    then
    sed -i 's/^;//' ~/.phpenv/versions/$(phpenv global)/etc/conf.d/
    xdebug.ini
    phpunit -c phpunit.xml --coverage-html=${CIRCLE_ARTIFACTS}
    else
    phpunit -c phpunit.xml
    fi
    circle.yml
    test.sh

    View Slide

  48. ࣮͸circle.yml͚ͩͰग़དྷΔ
    test:
    override:
    - |
    if [[ -v RUN_COVERAGE ]]
    then
    sed -i 's/^;//' ~/.phpenv/versions/$(phpenv global)/etc/
    conf.d/xdebug.ini
    phpunit -c /home/ubuntu/multi/system/addon/$
    {CIRCLE_PROJECT_REPONAME}/phpunit.xml -d memory_limit=1024M --
    coverage-html=${CIRCLE_ARTIFACTS}
    else
    phpunit -c /home/ubuntu/multi/system/addon/$
    {CIRCLE_PROJECT_REPONAME}/phpunit.xml -d memory_limit=1024M

    View Slide

  49. yamlͷϒϩοΫελΠϧ
    վߦΛอଘ
    |
    |+
    |-
    վߦΛ൒֯εϖʔεʹ
    >
    >+
    >-
    Πϯσϯτࢦఆ
    |1
    >1

    View Slide

  50. circle.yml
    ͚ͩͰग़དྷΔ

    View Slide

  51. 1ϑΝΠϧͰ
    ग़དྷΔͳΒ
    ޾ͤ

    View Slide

  52. σάϨΔ͜ͱͳ͘
    ׬શҠߦग़དྷ·ͨ͠(^o^)

    View Slide

  53. http://connpass.com/event/32338/

    View Slide

  54. ʘWe are hiring!ʗ
    http://www.oratta.net/

    View Slide