@@ -34,15 +34,39 @@ function buildTokenForRepo (repo) {
34
34
return process . env [ `JENKINS_BUILD_TOKEN_${ repo . toUpperCase ( ) } ` ] || ''
35
35
}
36
36
37
+ function buildParametersForRepo ( options , repo ) {
38
+ if ( repo === 'citgm' ) {
39
+ return [ {
40
+ name : 'GIT_REMOTE_REF' ,
41
+ value : `refs/pull/${ options . number } /head`
42
+ } ]
43
+ } else {
44
+ return [ {
45
+ name : 'CERTIFY_SAFE' ,
46
+ value : 'true'
47
+ } ,
48
+ {
49
+ name : 'TARGET_GITHUB_ORG' ,
50
+ value : 'nodejs'
51
+ } ,
52
+ {
53
+ name : 'TARGET_REPO_NAME' ,
54
+ value : 'node'
55
+ } ,
56
+ {
57
+ name : 'PR_ID' ,
58
+ value : options . number
59
+ }
60
+ ]
61
+ }
62
+ }
63
+
37
64
function triggerBuild ( options , cb ) {
38
65
const { repo } = options
39
66
const base64Credentials = new Buffer ( jenkinsApiCredentials ) . toString ( 'base64' )
40
67
const authorization = `Basic ${ base64Credentials } `
41
- const buildParameters = [ {
42
- name : 'GIT_REMOTE_REF' ,
43
- value : `refs/pull/${ options . number } /head`
44
- } ]
45
- const payload = JSON . stringify ( { parameter : buildParameters } )
68
+
69
+ const payload = JSON . stringify ( { parameter : buildParametersForRepo ( options , repo ) } )
46
70
const uri = buildUrlForRepo ( repo )
47
71
const buildAuthToken = buildTokenForRepo ( repo )
48
72
@@ -124,4 +148,33 @@ module.exports = (app) => {
124
148
githubClient . repos . checkCollaborator ( { owner, repo, username : commentAuthor } , triggerBuildWhenCollaborator )
125
149
} )
126
150
} )
151
+
152
+ app . on ( 'pull_request.opened' , function handlePullCreated ( event , owner , repo ) {
153
+ const { number, logger, pull_request } = event
154
+ const pullRequestAuthor = pull_request . user . login
155
+ const options = {
156
+ owner,
157
+ repo,
158
+ number,
159
+ logger
160
+ }
161
+
162
+ function logBuildStarted ( err ) {
163
+ if ( err ) {
164
+ logger . error ( err , 'Error while triggering Jenkins build' )
165
+ } else {
166
+ logger . info ( 'Jenkins build started' )
167
+ }
168
+ }
169
+
170
+ function triggerBuildWhenCollaborator ( err ) {
171
+ if ( err ) {
172
+ return logger . debug ( `Ignoring comment to me by @${ pullRequestAuthor } because they are not a repo collaborator` )
173
+ }
174
+
175
+ triggerBuild ( options , replyToCollabWithBuildStarted )
176
+ }
177
+
178
+ githubClient . repos . checkCollaborator ( { owner, repo, username : pullRequestAuthor } , triggerBuildWhenCollaborator )
179
+ } )
127
180
}
0 commit comments