Deploy own runbot to build a dashboard

Public Channel / Odoo Experience 2016

Deploy your own runbot, and create a custom module for the runbot, like a custom dashboard
By Nicolas Seinlet - Technical Consultant

Share on Social Networks

Share Link

Use permanent link to share in social media

Share with a friend

Please login to send this presentation by email!

Embed in your website

Select page to start with

3. B u i l d a d a s h b o a r d

20. A d d y o u r f i r s t r e p o   : O d o o

21. A d d y o u r o w n r e p o   : p e t s t o r e

4. 1 I n t r o d u c t i o n

15. 3 C o n f i g u r e R u n b o t

9. 2 D e p l o y R u n b o t i n 4 s t e p s

32. 5 C o n c l u s i o n s

25. 5 C r e a t e o w n d a s h b o a r d

31. C o d e a v a i l a b l e o n h t t p s : / / g i t h u b . c o m / n s e i n l e t / r u n b o t _ i r F i n a l r e s u l t

17. G l o b a l p a r a m e t e r s P a r a m e t e r s a r e s h a r e d b y a l l i n s t a n c e s T i m e o u t v s M a x C P U t i m e R u n b o t d o m a i n v s F Q D N

23. U s e s t i c k y b r a n c h e s A l w a y s o n t o p N o b u i l d s k i p p e d L a s t b u i l d n o t k i l l e d

8. W h e n u s e R u n b o t S i n c e t h e v e r y b e g i n n i n g o f t h e p r o c e s s B e f o r e e v e r y m e r g e F o r e v e r y f u n c t i o n a l t e s t F o r a n e w f e a t u r e t e s t

22. U s e b r a n c h n a m e m a t c h i n g S a m e b r a n c h n a m e A P R w h o s e h e a d n a m e m a t c h M a t c h a b r a n c h w h i c h i s t h e d a s h e d ‐ p r e f i x o f c u r r e n t b r a n c h n a m e C o m m o n a n c e s t o r s ( g i t m e r g e ‐ b a s e )

2. S c h e d u l e I n t r o d u c t i o n D e p l o y a R u n b o t C o n f i g u r e R u n b o t C r e a t e o w n d a s h b o a r d C o n c l u s i o n

24. L i n k t o    S e t G i t H u b t o k e n t o u s e G i t H u b A P I B i d i r e c t i o n a l l i n k

5. W h a t i s R u n b o t R u n b o t i s a c o n t i n u o u s i n t e g r a t i o n s e r v e r R u n b o t i s a n O d o o m o d u l e R u n b o t i s a c o m m u n i c a t i o n t o o l b e t w e e n f u n c t i o n a l a n d t e c h n i c a l g u y s L i v e p r e v i e w w i t h 2 d a t a b a s e s ( b a s e , a l l ) P r o v i d e b u i l d s t a t u s t o G i t H u b

26. A f i r s t s i m p l e c u s t o A s a p a r t n e r , I d o n o t n e e d t o b u i l d O d o o , O d o o s . a . a l r e a d y d o i t , b u t O f f i c i a l O d o o r e p o n e e d e d a s f a l l b a c k O f f i c i a l O d o o r e p o c a n b e u s e d t o t e s t n e w f e a t u r e s O n l y b u i l d s t i c k y b r a n c h e s o f o d o o o f f i c i a l r e p o

18. A d d a u t h e n t i c a t i o n A s r u n b o t i s g e n e r a l y b e h i n d a p u b l i c I P , i t ' s b e t t e r t o c r e a t e g r o u p s a n d u s e r s U s e g r o u p s p e r t e a m , p r o j e c t , . . . A d d u s e r s i n g r o u p s M a n a g e d e f a u l t u s e r p r o f i l e I t ' s p o s s i b l e t o u s e o t h e r a u t h e n t i c a t i o n m e t h o d s ( n g i n x , . . . )

13. S t e p 4 : E x t e r n a l t o o l s Y o u r r u n b o t w i l l n e e d t o t e s t e v e r y o f y o u r b u s i n e s s p r o c e s s , a n d w i l l n e e d a c c e s s t o e v e r y e x t e r n a l l i b r a r y o r s o f t w a r e t o b e a b l e t o t e s t i t . D N S   : r e d i r e c t * . r u n b o t . m y c o m p a n y . c o m N G I N X   : r u n b o t i s r u n n i n g o n p o r t 8 0 8 0 F a k e S M T P s e r v e r ( M a i l C a t c h e r , . . . ) A n y e x t e r n a l s o f t w a r e y o u l i n k t o ( f t p , e d i , . . . )

10. S t e p 1 : P o s t g r e S Q L A s r u n b o t i s a n O d o o m o d u l e , w e n e e d P o s t g r e S Q L . A s r u n b o t i s n o t a s t a n d a r d d e p l o y m e n t , d u e t o t h e n u m b e r o f r u n n i n g i n s t a n c e s , f r e q u e n t d a t a b a s e s c r e a t i o n s a n d d e l e t i o n s , w e m u s t a d a p t i t ' s c o n f i g u r a t i o n a c o r d i n g l y . # c o n n e c t i o n s A l l o c a t e d m e m o r y U s e r a u t h e n t i c a t i o n f s y n c = F a l s e

6. W h y R u n b o t A u t o m a t e t e s t p h a s e L e t t e s t i n s t a n c e s l e a v i n g E a s e c o m m u n i c a t i o n b e t w e e n t e c h n i c a l a n d f u n c t i o n a l g u y s E a s y t o u s e , e v e n f o r n o n ‐ t e c h n i c a l g u y s D o n o t r e p l a c e a Q & A o n c u s t o m e r s i d e O t h e r C I s o f t w a r e s e x i s t s a n d m a y b e a l r e a d y u s e d b y t e c h n i c a l t e a m D e s i g n e d f o r O d o o b y O d o o I n t e g r a t e d w i t h G i t a n d G i t H u b

7. W h o s h o u l d u s e R u n b o t A n y m e m b e r , f u n c t i o n a l o r t e c h n i c a l , m e m b e r o f a c o m p a n y w h i c h   : D e p l o y O d o o D e p l o y c u s t o m m o d u l e D e p l o y c u s t o m t h e m e A n d a l s o : D e v e l o p p e r w h o w a n t s t o t e s t a n e w m o d u l e R e v i e w e r t o c h e c k t h e c o m m i t F u n c t i o n a l t o c h e c k a u s e c a s e A n y b o d y t o t e s t a n e w a p p

11. S t e p 2 : O d o o A s r u n b o t i s a n O d o o m o d u l e , w e n e e d O d o o i t s e l f . v e r s i o n 8 i s u s e d o n o f f i c i a l r u n b o t . I n s t a l l p y t h o n l i b r a r i e s I n s t a l l O d o o 8 f r o m t h e g i t h u b r e p o I n s t a l l r u n b o t f r o m t h e o d o o ‐ e x t r a g i t h u b r e p o I n s t a l l a n y r u n b o t c u s t o m m o d u l e I f y o u f o r g e t t h e d b f i l t e r p a r a m e t e r , y o u r r u n b o t s e r v e r w i l l a c c e s s p l e n t y o f d a t a b a s e s . D o n ' t f o r g e t t h e d b f i l t e r p a r a m e t e r

1. D e p l o y   o w n   R u n b o t   t o b u i l d   a   d a s h b o a r d S e i n l e t N i c o l a s , T e c h n i c a l c o n s u l t a n t              @ n s e i n l e t

33. Y o u r o w n r u n b o t D e p l o y a b l e o n y o u r o w n i n f r a s t r u c t u r e L i n k e d t o y o u r G i t H u b a c c o u n t A c c e s s t o y o u r r e p o s P a r t o f t h e d e v p r o c e s s E a s y t o u s e f o r e v e r y o n e A c o m m u n i c a t i o n t o o l A d e v t o o l A q u i c k t e s t t o o l C u s t o m i z a b l e t o f i t y o u r n e e d s

34. A n y q u e s t i o n ? N i c o l a s S e i n l e t ( n s e @ o d o o . c o m )          @ n s e i n l e t

19. A d d y o u r f i r s t r e p o   : O d o o T h e e a s i e s t o n e N e c e s s a r y f o r o t h e r r e p o s i t o r i e s F i n d m i s s i n g l i b r a r i e s C h e c k N g i n x C h e c k s m t p C h e c k d n s C h e c k s s h a c c e s s t o G i t H u b C h e c k P o s t g r e S Q L c o n f i g C h e c k s y s t e m l o a d N e w s i n c e l a s t y e a r : W e b h o o k i n s t e a d o f p o l l

12. S t e p 3 : S S H Y o u r r u n b o t w i l l n e e d r e a d a c c e s s t o a l l y o u r r e p o s i t o r i e s , a s w e l l a s r e a d a c c e s s t o t h e o d o o r e p o s i t o r y . C r e a t e a d e d i c a t e d u s e r f o r t h i s p u r p o s e , w i t h o n l y r e a d a c c e s s t o y o u r r e p o s . I f y o u b u i l d o n t o p o f e n t e r p r i s e v e r s i o n , a s k r e a d a c c e s s f o r t h i s r u n b o t u s e r . G e n e r a t e a n s s h k e y f o r t h e l i n u x u s e r r u n n i n g r u n b o t C r e a t e a    G i t H u b ,    B i t B u c k e t , . . . u s e r f o r y o u r r u n b o t A d d y o u r s s h k e y t o t h e    G i t H u b ,    B i t B u c k e t , . . . u s e r G i v e r e a d a c c e s s f o r t h i s u s e r t o y o u r r e p o s i t o r i e s

16. H o w i t ' s m a d e S e r v e r S c h e d u l e r    R e p o s i t o r i e s    U p d a t e r e p o s i t o r i e s    B r a n c h e s    C r e a t e m i s s i n g b r a n c h e s    B u i l d s    S e l f a s s i g n b u i l d s    J o b s    A d v a n c e j o b s ( b a s e , a l l , r u n )    U p d a t e N G I N X c o n f i g

29. A d d a w i d g e t f o r a g r a p h ( f u n c t i o n   ( )   {         " u s e   s t r i c t " ;         v a r   w e b s i t e   =   o p e n e r p . w e b s i t e ;         v a r   _ t   =   o p e n e r p . _ t ;         v a r   S t a t u s P i e   =   o p e n e r p . W i d g e t . e x t e n d ( {                 i n i t :   f u n c t i o n   ( p a r e n t ,   o p t i o n s )   {                         t h i s . _ s u p e r . a p p l y ( t h i s ,   a r g u m e n t s ) ;                         t h i s . s t a t u s e s   =   o p t i o n s ;                 } ,                 s t a r t :   f u n c t i o n   ( )   {                         [ . . . ]

14. S c a l i n g M o s t o f t h e t i m e , a s i n g l e s e r v e r d o t h e j o b . W h e n t e a m g r o w , r u n b o t s c a l e .    R u n b o t t e s t i n s t a n c e t e s t i n s t a n c e t e s t i n s t a n c e    R u n b o t D B T e s t d b x x x T e s t d b x x x T e s t d b x x x     V S      R u n b o t t e s t i n s t a n c e t e s t i n s t a n c e t e s t i n s t a n c e    R u n b o t t e s t i n s t a n c e t e s t i n s t a n c e t e s t i n s t a n c e    R u n b o t D B T e s t d b x x x T e s t d b x x x T e s t d b x x x    T e s t d b x x x T e s t d b x x x T e s t d b x x x         

30. A d d l i b r a r i e s i n a s s e t s , a n d a t h e m e < t e m p l a t e   i d = " t h e m e _ s l a t e "   n a m e = " S l a t e "   i n h e r i t _ i d = " w e b s i t e . t h e m e "   a c t i v e = " F a l s e "   c u s t o m i z e _ s h o w = " T r u e " >         < x p a t h   e x p r = " / / l i n k [ @ i d = ' b o o t s t r a p _ c s s ' ] "   p o s i t i o n = " r e p l a c e " >                 < l i n k   r e l = ' s t y l e s h e e t '   h r e f = ' / w e b s i t e / s t a t i c / s r c / c s s / b o o t s w a t c h / s l a t e . m i n . c s s '   t ­ i g n o r e = " t r u e " / >                 < l i n k   r e l = ' s t y l e s h e e t '   h r e f = ' / w e b s i t e / s t a t i c / s r c / c s s / b o o t s w a t c h / s l a t e . f i x . c s s '   t ­ i g n o r e = " t r u e " / >         < / x p a t h > < / t e m p l a t e > < t e m p l a t e   i d = " a s s e t s _ f r o n t e n d "   i n h e r i t _ i d = " w e b s i t e . a s s e t s _ f r o n t e n d "   n a m e = " i r r u n b o t . a s s e t s . f r o n t e n d " >         < x p a t h   e x p r = " . "   p o s i t i o n = " i n s i d e " >                 < s c r i p t   t y p e = " t e x t / j a v a s c r i p t "   s r c = " / r u n b o t _ i r / s t a t i c / s r c / j s / r u n b o t i r . j s " / >                 < s c r i p t   s r c = " / / d 3 j s . o r g / d 3 . v 3 . m i n . j s " > < / s c r i p t >         < / x p a t h > < / t e m p l a t e >

27. A d d a f i e l d , O v e r r i d e u p d a t e _ g i t c l a s s   r u n b o t _ r e p o ( m o d e l s . M o d e l ) :         _ i n h e r i t   =   " r u n b o t . r e p o "         n o b u i l d   =   f i e l d s . B o o l e a n ( " D o   n o t   b u i l d " )         @ a p i . m o d e l         d e f   u p d a t e _ g i t ( s e l f ,   r e p o ) :                 s u p e r ( r u n b o t _ r e p o ,   s e l f ) . u p d a t e _ g i t ( r e p o = r e p o )                 i f   r e p o . n o b u i l d :                         s e l f . e n v [ ' r u n b o t . b u i l d ' ] . s e a r c h ( [ ( ' r e p o _ i d ' ,   ' = ' ,   r e p o . i d ) ,                                                                                           ( ' s t a t e ' ,   ' = ' ,   ' p e n d i n g ' ) ,                                                                                           ( ' b r a n c h _ i d . s t i c k y ' ,   ' = ' ,   F a l s e )                                 ] ) . w r i t e ( { ' s t a t e ' :   ' d o n e ' ,   ' r e s u l t ' :   ' s k i p p e d ' } ) < ? x m l   v e r s i o n = " 1 . 0 "   e n c o d i n g = " u t f ­ 8 " ? > < o p e n e r p > < d a t a >         < r e c o r d   i d = " v i e w _ r e p o _ f o r m "   m o d e l = " i r . u i . v i e w " >                 < f i e l d   n a m e = " m o d e l " > r u n b o t . r e p o < / f i e l d >                 < f i e l d   n a m e = " i n h e r i t _ i d "   r e f = " r u n b o t . v i e w _ r e p o _ f o r m " / >                 < f i e l d   n a m e = " a r c h "   t y p e = " x m l " >                         < f i e l d   n a m e = " m o d u l e s "   p o s i t i o n = " a f t e r " >                                 < f i e l d   n a m e = " n o b u i l d "   / >                         < / f i e l d >                 < / f i e l d >         < / r e c o r d > < / d a t a > < / o p e n e r p >

28. A d d a n e w c o n t r o l l e r c l a s s   R u n b o t C u s t o m C o n t r o l l e r ( R u n b o t C o n t r o l l e r ) :         @ h t t p . r o u t e ( [ ' / r u n b o t / i r ' ] ,   t y p e = ' h t t p ' ,   a u t h = " p u b l i c " ,   w e b s i t e = T r u e )         d e f   i r d a s h b o a r d ( s e l f ,   r e f r e s h = N o n e ,   * * p o s t ) :                 [ . . . ]                 r e t u r n   r e q u e s t . r e n d e r ( " r u n b o t _ i r . i r ­ d a s h b o a r d " ,   q c t x ) A n d t h e c o r r e s p o n d i n g t e m p l a t e < t e m p l a t e   i d = " i r ­ d a s h b o a r d " >         < t   t ­ c a l l = ' w e b s i t e . l a y o u t ' >                 < s c r i p t   i d = " s t a t u s _ b o o t s t r a p "   t y p e = " t e x t / j a v a s c r i p t " >                         ( f u n c t i o n   ( )   {                                 " u s e   s t r i c t " ;                                 w i n d o w [ ' s t a t u s e s ' ]   =   < t   t ­ r a w = ' j s o n . d u m p s ( s t a t u s e s ) ' / > ;                         } ) ( ) ;                 < / s c r i p t >                 < t   t ­ s e t = " h e a d " >                         < t   t ­ i f = " r e f r e s h " >                                 < m e t a   h t t p ­ e q u i v = " r e f r e s h "   t ­ a t t ­ c o n t e n t = " r e f r e s h " / >                         < / t >                 < / t >                 < d i v   c l a s s = " c o n t a i n e r ­ f l u i d " >                         < d i v   c l a s s = " r o w " >                                 < d i v   c l a s s = ' c o l ­ m d ­ 3 ' >                                         < d i v   c l a s s = " r o w " >                                                 < d i v   c l a s s = ' c o l ­ m d ­ 1 2 ' >                                                         < h 1 > B u i l d s   s t a t u s < / h 1 >                                                         < d i v   i d = " s t a t u s _ c h a r t " > < / d i v >                                                 < / d i v >

Views

  • 9 Total Views
  • 0 Website Views
  • 9 Embeded Views

Actions

  • 0 Social Shares
  • 0 Likes
  • 0 Dislikes
  • 0 Comments

Share count

  • 0 Facebook
  • 0 Twitter
  • 0 LinkedIn
  • 0 Google+

Embeds 1

  • 3 onlinesync.odoo.com