@@ -7,86 +7,117 @@ import dns from '@src/dns';
77import comments from '@src/comments' ;
88import data , { emailData } from '@src/data' ;
99import Message , { MessagePlatform } from './modeles/Message' ;
10+ import messages from '@root/test/messages' ;
11+
12+ const afterComment = (
13+ configBlock : string ,
14+ emailInfos : emailData ,
15+ deployCommentId : number ,
16+ prInfos : {
17+ repoSlug : string ;
18+ cloneUrl : string ;
19+ ref : string ;
20+ sha : string ;
21+ }
22+ ) => {
23+ if ( emailInfos . commentId !== null && emailInfos . prId !== null ) {
24+ const msg = new Message (
25+ emailInfos . requestedByUser ,
26+ deployCommentId ,
27+ emailInfos . prId ,
28+ MessagePlatform . github ,
29+ true ,
30+ emailInfos . commentId
31+ ) ;
32+ msg . save ( ) ;
33+ }
34+ docker
35+ . createDocker (
36+ emailInfos . repoName ,
37+ emailInfos . prId || 0 ,
38+ prInfos . cloneUrl ,
39+ prInfos . ref ,
40+ prInfos . sha ,
41+ configBlock ,
42+ data . randomString ( 80 )
43+ )
44+ . then ( ( docker ) => {
45+ dns . publishDnsRecord (
46+ emailInfos . repoName ,
47+ docker . containerName ,
48+ emailInfos . prId || 0 ,
49+ prInfos . ref ,
50+ prInfos . sha
51+ )
52+ . then ( ( domain ) => {
53+ logger . info ( 'Published-domain:' , domain ) ;
54+ github . addReaction ( emailInfos . commentId || 0 , emailInfos . repoName , reactions . ROCKET ) ;
55+ github
56+ . updateComment (
57+ emailInfos . prId || 0 ,
58+ prInfos . repoSlug ,
59+ deployCommentId ,
60+ comments . getDeployedComment (
61+ emailInfos . commentId || 0 ,
62+ prInfos . ref ,
63+ prInfos . sha ,
64+ docker . containerName ,
65+ domain
66+ )
67+ )
68+ . then ( ( ) => {
69+ logger . info ( 'Updated comment:#' + deployCommentId ) ;
70+ } )
71+ . catch ( ( error : Error ) => logger . error ( error ) ) ;
72+ } )
73+ . catch ( ( error : Error ) => logger . error ( error , emailInfos ) ) ;
74+ } )
75+ . catch ( ( error : Error ) => logger . error ( error , prInfos , emailInfos ) ) ;
76+ } ;
1077
1178export default {
1279 deploy : ( emailInfos : emailData , configBlock : string ) => {
1380 if ( emailInfos . prId === null || emailInfos . commentId === null ) {
1481 logger . error ( 'Missing data !' , emailInfos ) ;
1582 return ;
1683 }
84+ const prId = emailInfos . prId || 0 ;
1785 github
1886 . getPrInfos ( emailInfos . prId || 0 , emailInfos . repoName )
1987 . then ( ( prInfos ) => {
20- github
21- . createComment (
22- emailInfos . prId || 0 ,
23- prInfos . data . base . repo . full_name ,
24- comments . getPendingComment (
25- emailInfos . commentId || 0 ,
26- prInfos . data . head . ref ,
27- prInfos . data . head . sha
28- )
29- )
30- . then ( ( deployComment ) => {
31- if ( emailInfos . commentId !== null && emailInfos . prId !== null ) {
32- const msg = new Message (
33- emailInfos . requestedByUser ,
34- deployComment . data . id ,
35- emailInfos . prId ,
36- MessagePlatform . github ,
37- true ,
38- emailInfos . commentId
39- ) ;
40- msg . save ( ) ;
41- }
42- docker
43- . createDocker (
44- emailInfos . repoName ,
88+ Message . forPr ( prId , emailInfos . repoName ) . then ( ( messages ) => {
89+ if ( messages . length === 0 ) {
90+ logger . debug ( 'No comment found, posting one.' ) ;
91+ github
92+ . createComment (
4593 emailInfos . prId || 0 ,
46- prInfos . data . head . repo . clone_url ,
47- prInfos . data . head . ref ,
48- prInfos . data . head . sha ,
49- configBlock ,
50- data . randomString ( 80 )
51- )
52- . then ( ( docker ) => {
53- dns . publishDnsRecord (
54- emailInfos . repoName ,
55- docker . containerName ,
56- emailInfos . prId || 0 ,
94+ prInfos . data . base . repo . full_name ,
95+ comments . getPendingComment (
96+ emailInfos . commentId || 0 ,
5797 prInfos . data . head . ref ,
5898 prInfos . data . head . sha
5999 )
60- . then ( ( domain ) => {
61- logger . info ( 'Published-domain:' , domain ) ;
62- github . addReaction (
63- emailInfos . commentId || 0 ,
64- emailInfos . repoName ,
65- reactions . ROCKET
66- ) ;
67- github
68- . updateComment (
69- emailInfos . prId || 0 ,
70- prInfos . data . base . repo . full_name ,
71- deployComment . data . id ,
72- comments . getDeployedComment (
73- emailInfos . commentId || 0 ,
74- prInfos . data . head . ref ,
75- prInfos . data . head . sha ,
76- docker . containerName ,
77- domain
78- )
79- )
80- . then ( ( ) => {
81- logger . info ( 'Updated comment:#' + deployComment . data . id ) ;
82- } )
83- . catch ( ( error : Error ) => logger . error ( error ) ) ;
84- } )
85- . catch ( ( error : Error ) => logger . error ( error , emailInfos ) ) ;
86- } )
100+ )
101+ . then ( ( deployComment ) =>
102+ afterComment ( configBlock , emailInfos , deployComment . data . id , {
103+ sha : prInfos . data . head . sha ,
104+ ref : prInfos . data . head . ref ,
105+ cloneUrl : prInfos . data . head . repo . clone_url ,
106+ repoSlug : prInfos . data . base . repo . full_name ,
107+ } )
108+ )
87109 . catch ( ( error : Error ) => logger . error ( error , prInfos , emailInfos ) ) ;
88- } )
89- . catch ( ( error : Error ) => logger . error ( error , prInfos , emailInfos ) ) ;
110+ return ;
111+ }
112+ logger . debug ( 'Comment found, using it.' ) ;
113+ const lastMessage = messages [ messages . length - 1 ] ;
114+ afterComment ( configBlock , emailInfos , lastMessage . getCommentId ( ) , {
115+ sha : prInfos . data . head . sha ,
116+ ref : prInfos . data . head . ref ,
117+ cloneUrl : prInfos . data . head . repo . clone_url ,
118+ repoSlug : prInfos . data . base . repo . full_name ,
119+ } ) ;
120+ } ) ;
90121 } )
91122 . catch ( ( error : Error ) => logger . error ( error , emailInfos ) ) ;
92123 } ,
0 commit comments