2018-10-17 07:18:21 -07:00
const { events , Job , Group } = require ( "brigadier" ) ;
events . on ( "exec" , function ( e , project ) {
job = conform ( e , project )
job . run ( ) . then ( result => {
console . log ( result . toString ( ) )
} )
} )
events . on ( "push" , function ( e , project ) {
job = conform ( e , project )
job . run ( ) . then ( result => {
console . log ( result . toString ( ) )
} )
} )
events . on ( "pull_request" , function ( e , project ) {
start = notify ( "pending" , ` Build ${ e . buildID } started ` , e , project )
job = conform ( e , project )
Group . runAll ( [ start , job ] )
. then ( ( ) => {
return notify ( "success" , ` Build ${ e . buildID } passed ` , e , project ) . run ( )
} ) . catch ( err => {
return notify ( "failure" , ` Build ${ e . buildID } failed ` , e , project ) . run ( )
} ) ;
} )
function conform ( e , project ) {
2018-11-15 11:33:24 -08:00
var job = new Job ( "talos" , "autonomy/conform:latest" )
2018-10-17 07:18:21 -07:00
job . env = {
// "DOCKER_HOST": "tcp://docker:2375"
"DOCKER_USERNAME" : project . secrets . DOCKER _USERNAME ,
"DOCKER_PASSWORD" : project . secrets . DOCKER _PASSWORD ,
}
job . tasks = [
"apk --no-cache add docker" ,
"cd /src" ,
"conform enforce" ,
"conform build" ,
]
job . docker . enabled = true
// Unit is milliseconds, 14400000ms = 4h.
job . timeout = 14400000
2018-11-02 10:55:16 -07:00
job . host . nodeSelector . set ( "node-role.kubernetes.io/ci" , "" )
2018-10-30 20:44:02 -07:00
2018-10-17 07:18:21 -07:00
return job
}
function notify ( state , msg , e , project ) {
const gh = new Job ( ` notify- ${ state } ` , "technosophos/github-notify:latest" )
gh . env = {
GH _REPO : project . repo . name ,
GH _STATE : state ,
GH _DESCRIPTION : msg ,
GH _CONTEXT : "brigade" ,
GH _TOKEN : project . secrets . GH _TOKEN ,
GH _COMMIT : e . revision . commit ,
GH _TARGET _URL : ` https://ci.dev.autonomy.io/builds/ ${ e . buildID } ` ,
}
return gh
}