From 1f6cc84aef8897c920c0404e0073f10d1e55e022 Mon Sep 17 00:00:00 2001 From: Varsha GS Date: Wed, 8 Oct 2025 11:42:30 +0530 Subject: [PATCH 1/4] currency: Add Cassandra and newly supported libraries Signed-off-by: Varsha GS --- .tekton/.currency/resources/table.json | 80 +++++++++++++++----------- 1 file changed, 45 insertions(+), 35 deletions(-) diff --git a/.tekton/.currency/resources/table.json b/.tekton/.currency/resources/table.json index 4de524a9..238526f8 100644 --- a/.tekton/.currency/resources/table.json +++ b/.tekton/.currency/resources/table.json @@ -8,9 +8,10 @@ "Cloud Native": "No" }, { - "Package name": "Celery", - "Support Policy": "45-days", - "Beta version": "No", + "Package name": "WSGI", + "Support Policy": "0-day", + "Beta version": "Yes", + "Last Supported Version": "1.0.1", "Cloud Native": "No" }, { @@ -56,124 +57,133 @@ "Cloud Native": "No" }, { - "Package name": "Webapp2", - "Support Policy": "On demand", + "Package name": "Aiohttp", + "Support Policy": "45-days", "Beta version": "No", - "Last Supported Version": "2.5.2", "Cloud Native": "No" }, { - "Package name": "WSGI", - "Support Policy": "0-day", - "Beta version": "Yes", - "Last Supported Version": "1.0.1", + "Package name": "Httpx", + "Support Policy": "45-days", + "Beta version": "No", "Cloud Native": "No" }, { - "Package name": "Aiohttp", + "Package name": "Requests", "Support Policy": "45-days", "Beta version": "No", "Cloud Native": "No" }, { - "Package name": "Asynqp", - "Support Policy": "Deprecated", + "Package name": "Urllib3", + "Support Policy": "45-days", "Beta version": "No", - "Last Supported Version": "0.6", "Cloud Native": "No" }, { - "Package name": "Boto3", + "Package name": "Grpcio", "Support Policy": "45-days", "Beta version": "No", "Cloud Native": "Yes" }, { - "Package name": "Google-cloud-pubsub", + "Package name": "Cassandra-driver", "Support Policy": "45-days", "Beta version": "No", - "Cloud Native": "Yes" + "Cloud Native": "No" }, { - "Package name": "Google-cloud-storage", + "Package name": "Mysqlclient", "Support Policy": "45-days", "Beta version": "No", "Cloud Native": "Yes" }, { - "Package name": "Grpcio", + "Package name": "PyMySQL", "Support Policy": "45-days", "Beta version": "No", "Cloud Native": "Yes" }, { - "Package name": "Mysqlclient", + "Package name": "Pymongo", "Support Policy": "45-days", "Beta version": "No", "Cloud Native": "Yes" }, { - "Package name": "Pika", + "Package name": "Psycopg2", "Support Policy": "45-days", "Beta version": "No", "Cloud Native": "No" }, { - "Package name": "PyMySQL", + "Package name": "Redis", "Support Policy": "45-days", "Beta version": "No", "Cloud Native": "Yes" }, { - "Package name": "Pymongo", + "Package name": "SQLAlchemy", "Support Policy": "45-days", "Beta version": "No", "Cloud Native": "Yes" }, { - "Package name": "Psycopg2", + "Package name": "Aioamqp", "Support Policy": "45-days", "Beta version": "No", "Cloud Native": "No" }, { - "Package name": "Redis", + "Package name": "Aio-pika", "Support Policy": "45-days", "Beta version": "No", - "Cloud Native": "Yes" + "Cloud Native": "No" }, { - "Package name": "Requests", + "Package name": "Confluent-kafka", "Support Policy": "45-days", "Beta version": "No", - "Cloud Native": "Yes" + "Cloud Native": "No" }, { - "Package name": "SQLAlchemy", + "Package name": "Kafka-python-ng", "Support Policy": "45-days", "Beta version": "No", - "Cloud Native": "Yes" + "Cloud Native": "No" }, { - "Package name": "Urllib3", + "Package name": "Pika", "Support Policy": "45-days", "Beta version": "No", "Cloud Native": "No" }, { - "Package name": "Spyne", + "Package name": "Boto3", + "Support Policy": "45-days", + "Beta version": "No", + "Cloud Native": "Yes" + }, + { + "Package name": "Google-cloud-pubsub", "Support Policy": "45-days", "Beta version": "No", - "Cloud Native": "No" + "Cloud Native": "Yes" }, { - "Package name": "Aio-pika", + "Package name": "Google-cloud-storage", "Support Policy": "45-days", "Beta version": "No", + "Cloud Native": "Yes" + }, + { + "Package name": "Gevent", + "Support Policy": "On demand", + "Beta version": "No", "Cloud Native": "No" }, { - "Package name": "Aioamqp", + "Package name": "Celery", "Support Policy": "45-days", "Beta version": "No", "Cloud Native": "No" From 5d323ce78ada621c1219c7524f193ab1a2499cfc Mon Sep 17 00:00:00 2001 From: Varsha GS Date: Wed, 8 Oct 2025 12:15:36 +0530 Subject: [PATCH 2/4] currency: Add new libraries to report - fix warnings Signed-off-by: Varsha GS --- .tekton/.currency/docs/report.md | 48 ++++++++++---------- .tekton/.currency/scripts/generate_report.py | 45 +++++++++--------- 2 files changed, 49 insertions(+), 44 deletions(-) diff --git a/.tekton/.currency/docs/report.md b/.tekton/.currency/docs/report.md index c3a8fa22..a739efe1 100644 --- a/.tekton/.currency/docs/report.md +++ b/.tekton/.currency/docs/report.md @@ -3,31 +3,33 @@ | Package name | Support Policy | Beta version | Last Supported Version | Latest version | Up-to-date | Release date | Latest Version Published At | Days behind | Cloud Native | |:---------------------|:-----------------|:---------------|:-------------------------|:-----------------|:-------------|:---------------|:------------------------------|:--------------|:---------------| | ASGI | 45-days | No | 3.0 | 3.0 | Yes | 2019-03-04 | 2019-03-04 | 0 day/s | No | -| Celery | 45-days | No | 5.5.3 | 5.5.3 | Yes | 2025-06-01 | 2025-06-01 | 0 day/s | No | -| Django | 45-days | No | 5.2.3 | 5.2.3 | Yes | 2025-06-10 | 2025-06-10 | 0 day/s | No | -| FastAPI | 45-days | No | 0.115.12 | 0.115.12 | Yes | 2025-03-23 | 2025-03-23 | 0 day/s | No | -| Flask | 45-days | No | 3.1.1 | 3.1.1 | Yes | 2025-05-13 | 2025-05-13 | 0 day/s | No | +| WSGI | 0-day | Yes | 1.0.1 | 1.0.1 | Yes | 2010-09-26 | 2010-09-26 | 0 day/s | No | +| Django | 45-days | No | 5.2.7 | 5.2.7 | Yes | 2025-10-01 | 2025-10-01 | 0 day/s | No | +| FastAPI | 45-days | No | 0.118.0 | 0.118.0 | Yes | 2025-09-29 | 2025-09-29 | 0 day/s | No | +| Flask | 45-days | No | 3.1.2 | 3.1.2 | Yes | 2025-08-19 | 2025-08-19 | 0 day/s | No | | Pyramid | 45-days | No | 2.0.2 | 2.0.2 | Yes | 2023-08-25 | 2023-08-25 | 0 day/s | No | | Sanic | On demand | No | 25.3.0 | 25.3.0 | Yes | 2025-03-31 | 2025-03-31 | 0 day/s | No | -| Starlette | 45-days | No | 0.47.0 | 0.47.0 | Yes | 2025-05-29 | 2025-05-29 | 0 day/s | No | -| Tornado | 45-days | No | 6.5.1 | 6.5.1 | Yes | 2025-05-22 | 2025-05-22 | 0 day/s | No | -| Webapp2 | On demand | No | 2.5.2 | 2.5.2 | Yes | 2012-09-28 | 2012-09-28 | 0 day/s | No | -| WSGI | 0-day | Yes | 1.0.1 | 1.0.1 | Yes | 2010-09-26 | 2010-09-26 | 0 day/s | No | -| Aiohttp | 45-days | No | 3.12.13 | 3.12.13 | Yes | 2025-06-14 | 2025-06-14 | 0 day/s | No | -| Asynqp | Deprecated | No | 0.6 | 0.6 | Yes | 2019-01-20 | 2019-01-20 | 0 day/s | No | -| Boto3 | 45-days | No | 1.38.36 | 1.38.36 | Yes | 2025-06-12 | 2025-06-12 | 0 day/s | Yes | -| Google-cloud-pubsub | 45-days | No | 2.30.0 | 2.30.0 | Yes | 2025-06-09 | 2025-06-09 | 0 day/s | Yes | -| Google-cloud-storage | 45-days | No | 3.1.0 | 3.1.0 | Yes | 2025-02-28 | 2025-02-28 | 0 day/s | Yes | -| Grpcio | 45-days | No | 1.73.0 | 1.73.0 | Yes | 2025-06-09 | 2025-06-09 | 0 day/s | Yes | +| Starlette | 45-days | No | 0.48.0 | 0.48.0 | Yes | 2025-09-13 | 2025-09-13 | 0 day/s | No | +| Tornado | 45-days | No | 6.5.2 | 6.5.2 | Yes | 2025-08-08 | 2025-08-08 | 0 day/s | No | +| Aiohttp | 45-days | No | 3.13.0 | 3.13.0 | Yes | 2025-10-06 | 2025-10-06 | 0 day/s | No | +| Httpx | 45-days | No | 0.28.1 | 0.28.1 | Yes | 2024-12-06 | 2024-12-06 | 0 day/s | No | +| Requests | 45-days | No | 2.32.5 | 2.32.5 | Yes | 2025-08-18 | 2025-08-18 | 0 day/s | No | +| Urllib3 | 45-days | No | 2.5.0 | 2.5.0 | Yes | 2025-06-18 | 2025-06-18 | 0 day/s | No | +| Grpcio | 45-days | No | 1.75.1 | 1.75.1 | Yes | 2025-09-26 | 2025-09-26 | 0 day/s | Yes | +| Cassandra-driver | 45-days | No | 3.29.2 | 3.29.2 | Yes | 2024-09-10 | 2024-09-10 | 0 day/s | No | | Mysqlclient | 45-days | No | 2.2.7 | 2.2.7 | Yes | 2025-01-10 | 2025-01-10 | 0 day/s | Yes | -| Pika | 45-days | No | 1.3.2 | 1.3.2 | Yes | 2023-05-05 | 2023-05-05 | 0 day/s | No | -| PyMySQL | 45-days | No | 1.1.1 | 1.1.1 | Yes | 2024-05-21 | 2024-05-21 | 0 day/s | Yes | -| Pymongo | 45-days | No | 4.13.1 | 4.13.1 | Yes | 2025-06-11 | 2025-06-11 | 0 day/s | Yes | +| PyMySQL | 45-days | No | 1.1.2 | 1.1.2 | Yes | 2025-08-24 | 2025-08-24 | 0 day/s | Yes | +| Pymongo | 45-days | No | 4.15.3 | 4.15.3 | Yes | 2025-10-07 | 2025-10-07 | 0 day/s | Yes | | Psycopg2 | 45-days | No | 2.9.10 | 2.9.10 | Yes | 2024-10-16 | 2024-10-16 | 0 day/s | No | -| Redis | 45-days | No | 6.2.0 | 6.2.0 | Yes | 2025-05-28 | 2025-05-28 | 0 day/s | Yes | -| Requests | 45-days | No | 2.32.4 | 2.32.4 | Yes | 2025-06-09 | 2025-06-09 | 0 day/s | Yes | -| SQLAlchemy | 45-days | No | 2.0.41 | 2.0.41 | Yes | 2025-05-14 | 2025-05-14 | 0 day/s | Yes | -| Urllib3 | 45-days | No | 2.4.0 | 2.4.0 | Yes | 2025-04-10 | 2025-04-10 | 0 day/s | No | -| Spyne | 45-days | No | 2.14.0 | 2.14.0 | Yes | 2022-02-03 | 2022-02-03 | 0 day/s | No | -| Aio-pika | 45-days | No | 9.5.5 | 9.5.5 | Yes | 2025-02-26 | 2025-02-26 | 0 day/s | No | +| Redis | 45-days | No | 6.4.0 | 6.4.0 | Yes | 2025-08-07 | 2025-08-07 | 0 day/s | Yes | +| SQLAlchemy | 45-days | No | 2.0.43 | 2.0.43 | Yes | 2025-08-11 | 2025-08-11 | 0 day/s | Yes | | Aioamqp | 45-days | No | 0.15.0 | 0.15.0 | Yes | 2022-04-05 | 2022-04-05 | 0 day/s | No | +| Aio-pika | 45-days | No | 9.5.7 | 9.5.7 | Yes | 2025-08-05 | 2025-08-05 | 0 day/s | No | +| Confluent-kafka | 45-days | No | 2.11.1 | 2.11.1 | Yes | 2025-08-18 | 2025-08-18 | 0 day/s | No | +| Kafka-python-ng | 45-days | No | 2.2.3 | 2.2.3 | Yes | 2024-10-02 | 2024-10-02 | 0 day/s | No | +| Pika | 45-days | No | 1.3.2 | 1.3.2 | Yes | 2023-05-05 | 2023-05-05 | 0 day/s | No | +| Boto3 | 45-days | No | 1.40.47 | 1.40.47 | Yes | 2025-10-07 | 2025-10-07 | 0 day/s | Yes | +| Google-cloud-pubsub | 45-days | No | 2.31.1 | 2.31.1 | Yes | 2025-07-28 | 2025-07-28 | 0 day/s | Yes | +| Google-cloud-storage | 45-days | No | 3.4.0 | 3.4.0 | Yes | 2025-09-15 | 2025-09-15 | 0 day/s | Yes | +| Gevent | On demand | No | 25.9.1 | 25.9.1 | Yes | 2025-09-17 | 2025-09-17 | 0 day/s | No | +| Celery | 45-days | No | 5.5.3 | 5.5.3 | Yes | 2025-06-01 | 2025-06-01 | 0 day/s | No | diff --git a/.tekton/.currency/scripts/generate_report.py b/.tekton/.currency/scripts/generate_report.py index 0d4ca056..64055b9c 100644 --- a/.tekton/.currency/scripts/generate_report.py +++ b/.tekton/.currency/scripts/generate_report.py @@ -31,7 +31,7 @@ def get_upstream_version(dependency, last_supported_version): last_supported_version_release_date = "Not found" if dependency in SPEC_MAP: # webscrape info from official website - version_pattern = "(\d+\.\d+\.?\d*)" + version_pattern = r"(\d+\.\d+\.?\d*)" latest_version_release_date = "" url = SPEC_MAP[dependency] @@ -181,17 +181,17 @@ def process_taskrun_logs( f"Retrieving container logs from the successful taskrun pod {pod_name} of taskrun {taskrun_name}.." ) if task_name == "python-tracer-unittest-gevent-starlette-task": - match = re.search("Successfully installed .* (starlette-[^\s]+)", logs) - tekton_ci_output += f"{match[1]}\n" - elif task_name == "python-tracer-unittest-googlecloud-task": - match = re.search( - "Successfully installed .* (google-cloud-storage-[^\s]+)", logs - ) + match = re.search(r"Successfully installed .*(gevent-[^\s]+) .* (starlette-[^\s]+)", logs) + tekton_ci_output += f"{match[1]}\n{match[2]}\n" + elif task_name == "python-tracer-unittest-kafka-task": + match = re.search(r"Successfully installed .*(confluent-kafka-[^\s]+) .* (kafka-python-ng-[^\s]+)", logs) + tekton_ci_output += f"{match[1]}\n{match[2]}\n" + elif task_name == "python-tracer-unittest-cassandra-task": + match = re.search(r"Successfully installed .*(cassandra-driver-[^\s]+)", logs) tekton_ci_output += f"{match[1]}\n" elif task_name == "python-tracer-unittest-default-task": - for line in logs.splitlines(): - if "Successfully installed" in line: - tekton_ci_output += line + lines = re.findall(r"^Successfully installed .*", logs, re.M) + tekton_ci_output += "\n".join(lines) break else: print( @@ -202,36 +202,39 @@ def process_taskrun_logs( def get_tekton_ci_output(): """Get the latest successful scheduled tekton pipeline output""" + # # To run locally # config.load_kube_config() + + ## To run inside the tekton kubernetes cluster config.load_incluster_config() namespace = "default" core_v1_client = client.CoreV1Api() - task_name = "python-tracer-unittest-gevent-starlette-task" taskrun_filter = lambda tr: tr["status"]["conditions"][0]["type"] == "Succeeded" # noqa: E731 + + task_name = "python-tracer-unittest-gevent-starlette-task" starlette_taskruns = get_taskruns(namespace, task_name, taskrun_filter) tekton_ci_output = process_taskrun_logs( starlette_taskruns, core_v1_client, namespace, task_name, "" ) - task_name = "python-tracer-unittest-googlecloud-task" - taskrun_filter = ( # noqa: E731 - lambda tr: tr["metadata"]["name"].endswith("unittest-googlecloud-0") - and tr["status"]["conditions"][0]["type"] == "Succeeded" + task_name = "python-tracer-unittest-kafka-task" + kafka_taskruns = get_taskruns(namespace, task_name, taskrun_filter) + + tekton_ci_output = process_taskrun_logs( + kafka_taskruns, core_v1_client, namespace, task_name, tekton_ci_output ) - googlecloud_taskruns = get_taskruns(namespace, task_name, taskrun_filter) + + task_name = "python-tracer-unittest-cassandra-task" + cassandra_taskruns = get_taskruns(namespace, task_name, taskrun_filter) tekton_ci_output = process_taskrun_logs( - googlecloud_taskruns, core_v1_client, namespace, task_name, tekton_ci_output + cassandra_taskruns, core_v1_client, namespace, task_name, tekton_ci_output ) task_name = "python-tracer-unittest-default-task" - taskrun_filter = ( # noqa: E731 - lambda tr: tr["metadata"]["name"].endswith("unittest-default-3") - and tr["status"]["conditions"][0]["type"] == "Succeeded" - ) default_taskruns = get_taskruns(namespace, task_name, taskrun_filter) tekton_ci_output = process_taskrun_logs( From 196e7b1eed8904e2a8dbf22caef03edb5d316d86 Mon Sep 17 00:00:00 2001 From: Varsha GS Date: Wed, 8 Oct 2025 12:24:30 +0530 Subject: [PATCH 3/4] currency: Enhance `get_tekton_ci_output()` Signed-off-by: Varsha GS --- .tekton/.currency/scripts/generate_report.py | 57 +++++++++----------- 1 file changed, 25 insertions(+), 32 deletions(-) diff --git a/.tekton/.currency/scripts/generate_report.py b/.tekton/.currency/scripts/generate_report.py index 64055b9c..9ae08d11 100644 --- a/.tekton/.currency/scripts/generate_report.py +++ b/.tekton/.currency/scripts/generate_report.py @@ -202,44 +202,37 @@ def process_taskrun_logs( def get_tekton_ci_output(): """Get the latest successful scheduled tekton pipeline output""" - # # To run locally - # config.load_kube_config() - - ## To run inside the tekton kubernetes cluster - config.load_incluster_config() + try: + config.load_incluster_config() + print("Using in-cluster Kubernetes configuration...") + except config.config_exception.ConfigException: + # Fall back to local config if running locally and not inside cluster + config.load_kube_config() + print("Using local Kubernetes configuration...") namespace = "default" core_v1_client = client.CoreV1Api() taskrun_filter = lambda tr: tr["status"]["conditions"][0]["type"] == "Succeeded" # noqa: E731 - task_name = "python-tracer-unittest-gevent-starlette-task" - starlette_taskruns = get_taskruns(namespace, task_name, taskrun_filter) - - tekton_ci_output = process_taskrun_logs( - starlette_taskruns, core_v1_client, namespace, task_name, "" - ) - - task_name = "python-tracer-unittest-kafka-task" - kafka_taskruns = get_taskruns(namespace, task_name, taskrun_filter) - - tekton_ci_output = process_taskrun_logs( - kafka_taskruns, core_v1_client, namespace, task_name, tekton_ci_output - ) - - task_name = "python-tracer-unittest-cassandra-task" - cassandra_taskruns = get_taskruns(namespace, task_name, taskrun_filter) - - tekton_ci_output = process_taskrun_logs( - cassandra_taskruns, core_v1_client, namespace, task_name, tekton_ci_output - ) - - task_name = "python-tracer-unittest-default-task" - default_taskruns = get_taskruns(namespace, task_name, taskrun_filter) - - tekton_ci_output = process_taskrun_logs( - default_taskruns, core_v1_client, namespace, task_name, tekton_ci_output - ) + tasks = [ + "python-tracer-unittest-gevent-starlette-task", + "python-tracer-unittest-kafka-task", + "python-tracer-unittest-cassandra-task", + "python-tracer-unittest-default-task" + ] + + tekton_ci_output = "" + + for task_name in tasks: + try: + taskruns = get_taskruns(namespace, task_name, taskrun_filter) + + tekton_ci_output = process_taskrun_logs( + taskruns, core_v1_client, namespace, task_name, tekton_ci_output + ) + except Exception as exc: + print(f"Error processing task {task_name}: {str(exc)}") return tekton_ci_output From 56647106ce51420c78228f12b6004b9edf0be2f6 Mon Sep 17 00:00:00 2001 From: Varsha GS Date: Wed, 8 Oct 2025 12:25:45 +0530 Subject: [PATCH 4/4] ci(tekton): Run only pipelines/tasks required for currency Signed-off-by: Varsha GS --- .tekton/pipeline.yaml | 44 ---------------------------- .tekton/scheduled-eventlistener.yaml | 2 +- 2 files changed, 1 insertion(+), 45 deletions(-) diff --git a/.tekton/pipeline.yaml b/.tekton/pipeline.yaml index a87ff532..efbd6fe5 100644 --- a/.tekton/pipeline.yaml +++ b/.tekton/pipeline.yaml @@ -6,27 +6,12 @@ spec: params: - name: revision type: string - - name: py-38-imageDigest - type: string - default: public.ecr.aws/docker/library/python:3.8-bookworm - - name: py-39-imageDigest - type: string - default: public.ecr.aws/docker/library/python:3.9-bookworm - - name: py-310-imageDigest - type: string - default: public.ecr.aws/docker/library/python:3.10-bookworm - - name: py-311-imageDigest - type: string - default: public.ecr.aws/docker/library/python:3.11-bookworm - name: py-312-imageDigest type: string default: public.ecr.aws/docker/library/python:3.12-bookworm - name: py-313-imageDigest type: string default: public.ecr.aws/docker/library/python:3.13-bookworm - - name: py-314-imageDigest - type: string - default: public.ecr.aws/docker/library/python:3.14.0rc3 workspaces: - name: python-tracer-ci-pipeline-pvc tasks: @@ -48,13 +33,7 @@ spec: params: - name: imageDigest value: - - $(params.py-38-imageDigest) - - $(params.py-39-imageDigest) - - $(params.py-310-imageDigest) - - $(params.py-311-imageDigest) - - $(params.py-312-imageDigest) - $(params.py-313-imageDigest) - # - $(params.py-314-imageDigest) taskRef: name: python-tracer-unittest-default-task workspaces: @@ -82,17 +61,6 @@ spec: workspaces: - name: task-pvc workspace: python-tracer-ci-pipeline-pvc - - name: unittest-aws - runAfter: - - clone - params: - - name: imageDigest - value: $(params.py-313-imageDigest) - taskRef: - name: python-tracer-unittest-aws-task - workspaces: - - name: task-pvc - workspace: python-tracer-ci-pipeline-pvc - name: unittest-kafka runAfter: - clone @@ -104,15 +72,3 @@ spec: workspaces: - name: task-pvc workspace: python-tracer-ci-pipeline-pvc - - name: unittest-python-next - displayName: "Python next $(params.imageDigest)" - runAfter: - - clone - params: - - name: py-version - value: 3.14.0rc3 - taskRef: - name: python-tracer-unittest-python-next-task - workspaces: - - name: task-pvc - workspace: python-tracer-ci-pipeline-pvc diff --git a/.tekton/scheduled-eventlistener.yaml b/.tekton/scheduled-eventlistener.yaml index 5fdc3129..f9b8e2a6 100644 --- a/.tekton/scheduled-eventlistener.yaml +++ b/.tekton/scheduled-eventlistener.yaml @@ -25,7 +25,7 @@ spec: - name: git-commit-sha value: $(tt.params.git-commit-sha) pipelineRef: - name: github-pr-python-tracer-ci-pipeline + name: python-tracer-ci-pipeline workspaces: - name: python-tracer-ci-pipeline-pvc volumeClaimTemplate: