status.py 1.29 KB
Newer Older
1
import os
2

3
import requests
4

5
6
7
JOB_NAME = os.getenv("JOB_NAME")
BUILD_NUMBER = os.getenv("BUILD_NUMBER")
BUILD_ID = os.getenv("BUILD_ID")
8
COMMIT = os.getenv("GIT_COMMIT")
9
10
JOB_LINK = os.environ["BUILD_URL"]
response = requests.get("{}wfapi".format(JOB_LINK), verify=False).json()
11

12
13
# List of status of entire job.
# https://javadoc.jenkins.io/hudson/model/Result.html
14
15
16
17
18
19
status_output = "✅ CI test succeeded"
for stage in response["stages"]:
    # List of status of individual stage.
    # https://javadoc.jenkins.io/plugin/pipeline-graph-analysis/org/jenkinsci/plugins/workflow/pipelinegraphanalysis/GenericStatus.html
    if stage["status"] in ["FAILED", "ABORTED"]:
        stage_name = stage["name"]
Hongzhi (Steve), Chen's avatar
Hongzhi (Steve), Chen committed
20
        status_output = f"❌ CI test failed in Stage [{stage_name}]."
21
        break
22

23
24
comment = f"""
Commit ID: {COMMIT}\n
25
Build ID: {BUILD_ID}\n
26
27
28
Status: {status_output}\n
Report path: [link](https://dgl-ci-result.s3.us-west-2.amazonaws.com/{JOB_NAME}/{BUILD_NUMBER}/{BUILD_ID}/logs/report.html)\n
Full logs path: [link](https://dgl-ci-result.s3.us-west-2.amazonaws.com/{JOB_NAME}/{BUILD_NUMBER}/{BUILD_ID}/logs/cireport.log)
29
30
31
Note: A new CI run will cancel previous CI runs, but an incorrect "success"
status might be shown for the previous runs. Please double check the report
before merging the PR.
32
33
"""

Rhett Ying's avatar
Rhett Ying committed
34
print(comment)