153 строки
3.3 KiB
JavaScript
153 строки
3.3 KiB
JavaScript
const https = require('https')
|
|
const KOLKRABBI = 'https://kolkrabbi.heroku.com'
|
|
const V3_HEADER = 'application/vnd.heroku+json; version=3'
|
|
const VERSION_HEADER = `${V3_HEADER}.ci`
|
|
const PIPELINE_HEADER = `${V3_HEADER}.pipelines`
|
|
|
|
function* pipelineCoupling (client, app) {
|
|
return client.get(`/apps/${app}/pipeline-couplings`)
|
|
}
|
|
|
|
function* pipelineRepository (client, pipelineID) {
|
|
return client.request({
|
|
host: KOLKRABBI,
|
|
path: `/pipelines/${pipelineID}/repository`,
|
|
headers: {
|
|
Authorization: `Bearer ${client.options.token}`
|
|
}
|
|
})
|
|
}
|
|
|
|
function* getDyno (client, appID, dynoID) {
|
|
return client.request({
|
|
path: `/apps/${appID}/dynos/${dynoID}`,
|
|
headers: {
|
|
Authorization: `Bearer ${client.options.token}`,
|
|
Accept: VERSION_HEADER
|
|
}
|
|
})
|
|
}
|
|
|
|
function* githubArchiveLink (client, user, repository, ref) {
|
|
return client.request({
|
|
host: KOLKRABBI,
|
|
path: `/github/repos/${user}/${repository}/tarball/${ref}`,
|
|
headers: {
|
|
Authorization: `Bearer ${client.options.token}`
|
|
}
|
|
})
|
|
}
|
|
|
|
function* testRun (client, pipelineID, number) {
|
|
return client.request({
|
|
path: `/pipelines/${pipelineID}/test-runs/${number}`,
|
|
headers: {
|
|
Authorization: `Bearer ${client.options.token}`,
|
|
Accept: VERSION_HEADER
|
|
}
|
|
})
|
|
}
|
|
|
|
function* testNodes (client, testRunIdD) {
|
|
return client.request({
|
|
path: `/test-runs/${testRunIdD}/test-nodes`,
|
|
headers: {
|
|
Authorization: `Bearer ${client.options.token}`,
|
|
Accept: VERSION_HEADER
|
|
}
|
|
})
|
|
}
|
|
|
|
function* testRuns (client, pipelineID) {
|
|
return client.request({
|
|
path: `/pipelines/${pipelineID}/test-runs`,
|
|
headers: {
|
|
Authorization: `Bearer ${client.options.token}`,
|
|
Accept: VERSION_HEADER
|
|
}
|
|
})
|
|
}
|
|
|
|
function* latestTestRun (client, pipelineID) {
|
|
const latestTestRuns = yield client.request({
|
|
path: `/pipelines/${pipelineID}/test-runs`,
|
|
headers: {
|
|
Authorization: `Bearer ${client.options.token}`,
|
|
Accept: VERSION_HEADER,
|
|
Range: 'number ..; order=desc,max=1'
|
|
}
|
|
})
|
|
|
|
return Promise.resolve(latestTestRuns[0])
|
|
}
|
|
|
|
function updateTestRun (client, id, body) {
|
|
return client.request({
|
|
body,
|
|
method: 'PATCH',
|
|
path: `/test-runs/${id}`,
|
|
headers: {
|
|
Accept: VERSION_HEADER
|
|
}
|
|
})
|
|
}
|
|
|
|
function logStream (url, fn) {
|
|
return https.get(url, fn)
|
|
}
|
|
|
|
function* createSource (client) {
|
|
return yield client.post(`/sources`)
|
|
}
|
|
|
|
function* createTestRun (client, body) {
|
|
const headers = {
|
|
Accept: VERSION_HEADER
|
|
}
|
|
|
|
return client.request({
|
|
headers: headers,
|
|
method: 'POST',
|
|
path: '/test-runs',
|
|
body: body
|
|
})
|
|
}
|
|
|
|
function configVars (client, pipelineID) {
|
|
return client.request({
|
|
headers: { Accept: PIPELINE_HEADER },
|
|
path: `/pipelines/${pipelineID}/stage/test/config-vars`
|
|
})
|
|
}
|
|
|
|
function setConfigVars (client, pipelineID, body) {
|
|
return client.request({
|
|
method: 'PATCH',
|
|
headers: { Accept: PIPELINE_HEADER },
|
|
path: `/pipelines/${pipelineID}/stage/test/config-vars`,
|
|
body
|
|
})
|
|
}
|
|
|
|
function appSetup (client, id) {
|
|
return client.get(`/app-setups/${id}`)
|
|
}
|
|
|
|
module.exports = {
|
|
appSetup,
|
|
configVars,
|
|
createSource,
|
|
createTestRun,
|
|
getDyno,
|
|
githubArchiveLink,
|
|
latestTestRun,
|
|
testNodes,
|
|
testRun,
|
|
testRuns,
|
|
logStream,
|
|
pipelineCoupling,
|
|
pipelineRepository,
|
|
setConfigVars,
|
|
updateTestRun
|
|
}
|