Commit 7fc164af authored by Jan Kiene's avatar Jan Kiene
Browse files

Merge branch 'add_coverage_report_to_pages' into 'main'

Add coverage report to pages

See merge request !347
parents f8397e59 965afbd4
Loading
Loading
Loading
Loading
Loading
+8 −0
Original line number Diff line number Diff line
@@ -1147,6 +1147,14 @@ pages:
    - *unzip-or-cat
    - mv complexity-StereoDmxEVS-stereo-in-mono-out-public ./public/

    ### collect artifacts from coverage job
    - job_id=$(python3 ci/get_id_of_last_job_occurence.py $branch coverage-test-on-main-scheduled)
    - echo $job_id
    - echo "$API_URL_BASE/$job_id/artifacts"
    - curl --request GET "$API_URL_BASE/$job_id/artifacts" --output $ARTIFACTS
    - *unzip-or-cat
    - mv coverage ./public

    - cp ci/index-pages.html public/index.html
  artifacts:
    paths:
+39 −38
Original line number Diff line number Diff line
@@ -38,16 +38,7 @@ PAGE_SUFFIX = "&page={}"
API_BASE_URL = "https://forge.3gpp.org/rep/api/v4/projects/49"


parser = argparse.ArgumentParser()
parser.add_argument("branch_name")
parser.add_argument("job_name")

args = parser.parse_args()

branch_name = args.branch_name
job_name = args.job_name


def get_job_id(branch_name, job_name):
    job_id = -1
    # check last 500 pipelines max
    for page in range(100):
@@ -78,4 +69,14 @@ for page in range(100):
        if job_id >= 0:
            break

    return job_id

if __name__ == '__main__':
    parser = argparse.ArgumentParser()
    parser.add_argument("branch_name")
    parser.add_argument("job_name")

    args = parser.parse_args()

    job_id = get_job_id(args.branch_name, args.job_name)
    print(job_id)
 No newline at end of file
+6 −0
Original line number Diff line number Diff line
@@ -16,4 +16,10 @@
    <li><a href="complexity-StereoDmxEVS-stereo-in-mono-out-public/index.html">StereoDmxEVS</a></li>
  </ul>

  <h2>Test Coverage</h2>

  <ul>
    <li><a href="coverage/index.html">Coverage report</a></li>
  </ul>

</body>

ci/setup_pages.py

0 → 100644
+66 −0
Original line number Diff line number Diff line
import os
import sys
import pathlib
import subprocess
from .get_id_of_last_job_occurence import get_job_id

JOBS = [
    "complexity-stereo-in-stereo-out", "complexity-ism-in-binaural-out", "complexity-sba-hoa3-in-hoa3-out", "complexity-mc-in-7_1_4-out", "complexity-masa-in-7_1_4-out", "complexity-StereoDmxEVS-stereo-in-mono-out", "coverage-test-on-main-scheduled"
]
ARTIFACTS = "artifacts.zip"
API_URL_BASE = "https://forge.3gpp.org/rep/api/v4/projects/$CI_PROJECT_ID/jobs"
PUBLIC = "./public"


def main():

    public_folder = pathlib.Path(PUBLIC)
    public_folder.mkdir()

    failed_count = 0
    for job in JOBS:
        job_id = get_job_id(os.environ["CI_COMMIT_REF_NAME"], job)
        try:
            curl_for_artifacts(job_id)

            job_public = job + "-public"
            if job == "coverage-test-on-main-scheduled":
                job_public = "coverage"

            pathlib.Path(job_public).rename(public_folder.joinpath(job_public))
            
        except subprocess.CalledProcessError:
            print(f"Could not get artifacts for {job}") 
            failed_count += 1

    if failed_count == len(JOBS):
        sys.exit(1)


def curl_for_artifacts(job_id):
    cmd = [
        "curl",
        "--request",
        "GET",
        API_URL_BASE + f"/{job_id}/artifacts",
        "--output",
        ARTIFACTS
    ]
    subprocess.run(cmd, check=True)

    # check for valid archive (if not, it is likely a 404 page, then display that)
    cmd = [
        "unzip",
        "-t",
        ARTIFACTS
    ]
    try:
        subprocess.run(cmd, check=True)
    except subprocess.CalledProcessError:
        with open(ARTIFACTS, "r") as f:
            print(f.read())
        raise subprocess.CalledProcessError("Unzip check failed")


if __name__ == "__main__":
    main()
 No newline at end of file