Skip to content

Commit

Permalink
Added [Cirrus] CI badge support (#3502)
Browse files Browse the repository at this point in the history
* add base (needs tweaking)

* more work

* updates / more work

* fix minor thing

* handle

* add test

* Fix

* get rid of svg scraper

* Fixed Cirrus badge

Use JSON endpoint

* Rename cirrus.test.js to cirrus.tester.js

* Update services/cirrus/cirrus.service.js

Co-Authored-By: Caleb Cartwright <calebcartwright@users.noreply.github.com>

* Update services/cirrus/cirrus.service.js

Co-Authored-By: Caleb Cartwright <calebcartwright@users.noreply.github.com>

* Update services/cirrus/cirrus.service.js

Co-Authored-By: Caleb Cartwright <calebcartwright@users.noreply.github.com>

* Update services/cirrus/cirrus.service.js

Co-Authored-By: Caleb Cartwright <calebcartwright@users.noreply.github.com>

* Update services/cirrus/cirrus.service.js

Co-Authored-By: Caleb Cartwright <calebcartwright@users.noreply.github.com>

* Update services/cirrus/cirrus.service.js

Co-Authored-By: Caleb Cartwright <calebcartwright@users.noreply.github.com>

* Update services/cirrus/cirrus.service.js

Co-Authored-By: Caleb Cartwright <calebcartwright@users.noreply.github.com>

* Update cirrus.service.js

* Update services/cirrus/cirrus.service.js

Co-Authored-By: Caleb Cartwright <calebcartwright@users.noreply.github.com>

* Update services/cirrus/cirrus.service.js

Co-Authored-By: Caleb Cartwright <calebcartwright@users.noreply.github.com>

* Update services/cirrus/cirrus.service.js

Co-Authored-By: Caleb Cartwright <calebcartwright@users.noreply.github.com>

* Update services/cirrus/cirrus.service.js

Co-Authored-By: Caleb Cartwright <calebcartwright@users.noreply.github.com>

* Update services/cirrus/cirrus.service.js

Co-Authored-By: Caleb Cartwright <calebcartwright@users.noreply.github.com>

* Update services/cirrus/cirrus.service.js

Co-Authored-By: Caleb Cartwright <calebcartwright@users.noreply.github.com>

* Update services/cirrus/cirrus.service.js

Co-Authored-By: Caleb Cartwright <calebcartwright@users.noreply.github.com>

* Update services/cirrus/cirrus.service.js

Co-Authored-By: Caleb Cartwright <calebcartwright@users.noreply.github.com>

* Update services/cirrus/cirrus.service.js

Co-Authored-By: Caleb Cartwright <calebcartwright@users.noreply.github.com>

* Update services/cirrus/cirrus.service.js

Co-Authored-By: Caleb Cartwright <calebcartwright@users.noreply.github.com>

* Update services/cirrus/cirrus.service.js

Co-Authored-By: Caleb Cartwright <calebcartwright@users.noreply.github.com>

* Update services/cirrus/cirrus.service.js

Co-Authored-By: Caleb Cartwright <calebcartwright@users.noreply.github.com>

* Update services/cirrus/cirrus.service.js

Co-Authored-By: Caleb Cartwright <calebcartwright@users.noreply.github.com>

* Update services/cirrus/cirrus.service.js

Co-Authored-By: Caleb Cartwright <calebcartwright@users.noreply.github.com>

* Update services/cirrus/cirrus.service.js

Co-Authored-By: Caleb Cartwright <calebcartwright@users.noreply.github.com>

* Update services/cirrus/cirrus.service.js

Co-Authored-By: Caleb Cartwright <calebcartwright@users.noreply.github.com>

* Update services/cirrus/cirrus.service.js

Co-Authored-By: Caleb Cartwright <calebcartwright@users.noreply.github.com>

* Update services/cirrus/cirrus.service.js

Co-Authored-By: Caleb Cartwright <calebcartwright@users.noreply.github.com>

* Update services/cirrus/cirrus.service.js

Co-Authored-By: Caleb Cartwright <calebcartwright@users.noreply.github.com>

* Update services/cirrus/cirrus.service.js

Co-Authored-By: Caleb Cartwright <calebcartwright@users.noreply.github.com>

* Update services/cirrus/cirrus.service.js

Co-Authored-By: Caleb Cartwright <calebcartwright@users.noreply.github.com>

* Update services/cirrus/cirrus.service.js

Co-Authored-By: Caleb Cartwright <calebcartwright@users.noreply.github.com>

* Update services/cirrus/cirrus.tester.js

Co-Authored-By: Caleb Cartwright <calebcartwright@users.noreply.github.com>

* Update services/cirrus/cirrus.tester.js

Co-Authored-By: Caleb Cartwright <calebcartwright@users.noreply.github.com>

* Update services/cirrus/cirrus.tester.js

Co-Authored-By: Caleb Cartwright <calebcartwright@users.noreply.github.com>

* Update services/cirrus/cirrus.service.js

Co-Authored-By: Caleb Cartwright <calebcartwright@users.noreply.github.com>

* Update services/cirrus/cirrus.tester.js

Co-Authored-By: Caleb Cartwright <calebcartwright@users.noreply.github.com>

* Update services/cirrus/cirrus.service.js

Co-Authored-By: Caleb Cartwright <calebcartwright@users.noreply.github.com>

* Update services/cirrus/cirrus.service.js

Co-Authored-By: Caleb Cartwright <calebcartwright@users.noreply.github.com>

* Update services/cirrus/cirrus.service.js

Co-Authored-By: Caleb Cartwright <calebcartwright@users.noreply.github.com>

* Update services/cirrus/cirrus.service.js

Co-Authored-By: Caleb Cartwright <calebcartwright@users.noreply.github.com>

* Update services/cirrus/cirrus.service.js

Co-Authored-By: Caleb Cartwright <calebcartwright@users.noreply.github.com>

* Update services/cirrus/cirrus.service.js

Co-Authored-By: Caleb Cartwright <calebcartwright@users.noreply.github.com>

* Update services/cirrus/cirrus.service.js

Co-Authored-By: Caleb Cartwright <calebcartwright@users.noreply.github.com>

* Update services/cirrus/cirrus.service.js

Co-Authored-By: Fedor Korotkov <fedor.korotkov@gmail.com>
  • Loading branch information
2 people authored and calebcartwright committed Jun 15, 2019
1 parent 703371d commit 0808a70
Show file tree
Hide file tree
Showing 2 changed files with 100 additions and 0 deletions.
84 changes: 84 additions & 0 deletions services/cirrus/cirrus.service.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,84 @@
'use strict'

const Joi = require('@hapi/joi')
const { isBuildStatus, renderBuildStatusBadge } = require('../build-status')
const { BaseJsonService } = require('..')

const schema = Joi.object({
subject: Joi.string().required(),
status: Joi.alternatives()
.try(isBuildStatus, Joi.equal('unknown'))
.required(),
}).required()
const queryParamSchema = Joi.object({
task: Joi.string(),
script: Joi.string(),
}).required()

module.exports = class Cirrus extends BaseJsonService {
static get category() {
return 'build'
}

static get route() {
return {
base: 'cirrus',
pattern: 'github/:user/:repo/:branch*',
queryParamSchema,
}
}

static get examples() {
return [
{
title: 'Cirrus CI - Base Branch Build Status',
namedParams: { user: 'flutter', repo: 'flutter' },
pattern: 'github/:user/:repo',
queryParams: { task: 'analyze', script: 'test' },
staticPreview: this.render({ status: 'passing' }),
},
{
title: 'Cirrus CI - Specific Branch Build Status',
pattern: 'github/:user/:repo/:branch',
namedParams: { user: 'flutter', repo: 'flutter', branch: 'master' },
queryParams: { task: 'analyze', script: 'test' },
staticPreview: this.render({ status: 'passing' }),
},
{
title: 'Cirrus CI - Specific Task Build Status',
pattern: 'github/:user/:repo',
queryParams: { task: 'analyze' },
namedParams: { user: 'flutter', repo: 'flutter' },
staticPreview: this.render({ subject: 'analyze', status: 'passing' }),
},
{
title: 'Cirrus CI - Task and Script Build Status',
pattern: 'github/:user/:repo',
queryParams: { task: 'analyze', script: 'test' },
namedParams: {
user: 'flutter',
repo: 'flutter',
},
staticPreview: this.render({ subject: 'test', status: 'passing' }),
},
]
}

static get defaultBadgeData() {
return { label: 'build' }
}

static render({ subject, status }) {
return renderBuildStatusBadge({ label: subject, status })
}

async handle({ user, repo, branch }, { script, task }) {
const json = await this._requestJson({
schema,
url: `https://api.cirrus-ci.com/github/${user}/${repo}.json`,
options: { qs: { branch, script, task } },
})

return this.constructor.render(json)
}
}
16 changes: 16 additions & 0 deletions services/cirrus/cirrus.tester.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
'use strict'

const Joi = require('joi')
const { isBuildStatus } = require('../build-status')
const t = (module.exports = require('../tester').createServiceTester())

t.create('cirrus bad repo')
.get('/github/unknown-identifier/unknown-repo.json')
.expectBadge({ label: 'build', message: 'unknown' })

t.create('cirrus fully.valid')
.get('/github/flutter/flutter.json')
.expectBadge({
label: 'build',
message: Joi.alternatives().try(isBuildStatus, Joi.equal('unknown')),
})

0 comments on commit 0808a70

Please sign in to comment.