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

Tenderness driven development for Redmine plugin

Sponsored · Your Podcast. Everywhere. Effortlessly. Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
Avatar for pinzolo pinzolo
July 12, 2014

Tenderness driven development for Redmine plugin

This slide has been published in RxTstudy 11th on 2014-07-12 at Osaka, Japan

Avatar for pinzolo

pinzolo

July 12, 2014
Tweet

More Decks by pinzolo

Other Decks in Programming

Transcript

  1. ࣗݾ঺հ 4 ໺ా ੣ਓ 4 גࣜձࣾ ۭ 4 Engineer 4

    @pinzolo 4 https://github.com/pinzolo
  2. Rubygems 4 detox 4 formup 4 logdup 4 mastar 4

    rails-flog 4 rails-render_hooks 4 tekido
  3. Redmine plugins 4 redmine_bx 4 Redmine ্Ͱςʔϒϧఆٛ΍ϦιʔεఆٛΛ؅ཧ͢Δ ʢ࡞Γͳ͓͢༧ఆʣ 4 redmine_persist_wfmt

    4 Wiki ͷϑΥʔϚοτอଘͱબ୒ 4 redmine_reminderz 4 Reminder λεΫΛͪΐͬͱ͚֦ͩுͨ͠΋ͷ
  4. Travis CI ͷϝϦοτ (1) ϏϧυϚτϦΫε Ruby: 1.9.3, 2.0.0, 2.1.2 Redmine:

    2.3.x, 2.4.x, 2.5.x ςετର৅: Redmineຊମ, ϓϥάΠϯ ͜ΕΒΛ૊Έ߹Θͤͨ؀ڥͷςετ͕؆୯ʹͰ͖Δ
  5. Travis CI ͷϝϦοτ (2) apt ͕࢖༻Մೳ apt ͕࢖͑ΔͷͰ CVS, Subversion,

    Mercurial ͳͲΛ࢖༻͠ ͨςετ͕Մೳ ͨͩ͠ɺDarcs ͸ඍົ ※ͪͳΈʹ Travis CI ͷ OS ͸ Ubuntu Server 12.04 LTS
  6. Travis CI ͷϝϦοτ (4) push Ҏ֎ͰͷϏϧυ Travis-CI Ͱ͸ Pull Request

    ΍ Release(λά)ʹରͯ͠΋Ϗ ϧυΛͯ͘͠ΕΔ
  7. TEST, CI ͕ਁಁ͢Ε͹ 4 ϓϥάΠϯͷ඼࣭޲্ 4 ίϯϑϦΫτ͠ͳ͍ϓϥάΠϯ։ൃͷϊ΢ϋ΢ͷ஝ੵ 4 ҆৺ײʹΑΔϓϥάΠϯར༻ͷଅਐ 4

    ͔ͬ͠Γϝϯς͞Εɺਓؾͱ࣮੷ͷ͋ΔϓϥάΠϯ͸ຊՈ ʹऔΓࠐ·ΕΔ͔΋ʁ → ͍͍͜ͱͩΒ͚
  8. ݱ࣮ (2) ϥΠϒϥϦͷόʔδϣϯ໰୊ 4 ϓϥάΠϯಉ࢜ͷόʔδϣϯিಥ 4 ຊମͱͷόʔδϣϯিಥ 4 ྫ͑͹ RSpec3

    ΛϓϥάΠϯͷςετʹར༻͢Δ͜ͱ͸ Ͱ͖·ͤΜ ʢࢀߟ: tail -f pinzo.log: Redmine ͷϓϥάΠϯΛ RSpec3 Ͱςετग़དྷͳ͍ʣ
  9. ݱ࣮ (3) Redmine ຊମͷςετ 4 ࠷ۙͷ Darcs Ͱ͸όʔδϣϯ͕৽ͯ͘͠ rake ci

    ͕ίέΔ 4 ൺֱతݹ͍όʔδϣϯΛϗετ͍ͯ͠Δ apt Ͱ΋μϝ 4 ࢖༻͢Δ SCM Λࢦఆͯ͠ςετΛ૸ΒͤΔ͜ͱ͕Ͱ͖ ΔΑ͏ʹͳͬͨͷ͸ Redmine 2.5 Ҏ߱
  10. ݱ࣮ (3) Redmine ຊମͷςετ 4 UI ͷςετ͸ issues_test.rb ͷ 10

    ςετέʔεͷΈ 4 Ϣχοτςετ͸໿2000݅ 4 ϑΝϯΫγϣφϧςετ͕1300݅ 4 ΠϯςάϨʔγϣϯςετ͕໿1000݅ 4 ci λεΫͰ͸࣮ߦ͞Εͳ͍
  11. ݱ࣮ (4) ܾͯ͠खް͍ͱ͸ݴ͑ͳ͍ Redmine ͷϓϥάΠϯαϙʔτ 4 View hook গͳ͍ &

    ภ͍ͬͯΔ 4 ը໘্͔ΒΠϯετʔϧ͢Δखஈ͕ͳ͍ 4 Α͏΍͘࠷৽͔Ͳ͏͔ΛνΣοΫ͢Δػೳ͕௥Ճ͞Εͨ (2.5.2ʙ) 4 Github ͳͲͷ SCM αʔϏεͱͷ࿈ܞ͕ແ͍ͨΊɺ໺ྑϓ ϥάΠϯ͕ଟ͍