-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathget-circleci-metrics.ts
48 lines (39 loc) · 1.26 KB
/
get-circleci-metrics.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
import { transformToCSV } from "./transform-to-csv.ts"
import { Client, ReportingWindow } from "./circleci.ts"
const TOKEN = Deno.env.get("CIRCLECI_TOKEN")!
const ORG = Deno.env.get("GITHUB_ORG")!
const REPO = Deno.env.get("GITHUB_REPO")!
const DEBUG = Deno.env.get("DEBUG") === "true"
const client = new Client(TOKEN, DEBUG)
async function getCircleCIMetrics() {
const worfklowData = []
const jobData = []
const org = ORG
const project = REPO
const allBranches = false
const reportingWindow = ReportingWindow.LAST_7_DAYS
const projectWorkflowMetrics = await client.getProjectWorkflowMetrics(org, project, allBranches, reportingWindow)
for (const workflow of projectWorkflowMetrics) {
worfklowData.push({
org,
project,
...workflow
})
const projectWorkflowJobMetrics = await client.getProjectWorkflowJobMetrics(org, project, workflow.name, allBranches, reportingWindow)
for (const job of projectWorkflowJobMetrics) {
jobData.push({
org,
project,
workflow: workflow.name,
...job
})
}
}
console.log(`# Workflow Data`)
console.log(transformToCSV(worfklowData))
console.log(`# Job Data`)
console.log(transformToCSV(jobData))
}
if (import.meta.main) {
await getCircleCIMetrics()
}