From f4095b8c8e5a3403e78893cdc240e825c2a4c508 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Thu, 1 Jan 2026 03:35:56 +0000 Subject: [PATCH 001/155] Updated License Year --- LICENSE.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/LICENSE.txt b/LICENSE.txt index df08de3f..b6579621 100644 --- a/LICENSE.txt +++ b/LICENSE.txt @@ -1,4 +1,4 @@ -Copyright © 2025 Split Software, Inc. +Copyright © 2026 Split Software, Inc. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. From 2d8af03c89dec16317245e7967be3a142b877bd3 Mon Sep 17 00:00:00 2001 From: Bilal Al-Shahwany <41021307+chillaq@users.noreply.github.com> Date: Fri, 9 Jan 2026 13:12:26 -0800 Subject: [PATCH 002/155] Update LICENSE.txt --- LICENSE.txt | 182 ++++++++++++++++++++++++++++++++++++++++++++++++---- 1 file changed, 169 insertions(+), 13 deletions(-) diff --git a/LICENSE.txt b/LICENSE.txt index b6579621..0f9e8a59 100644 --- a/LICENSE.txt +++ b/LICENSE.txt @@ -1,13 +1,169 @@ -Copyright © 2026 Split Software, Inc. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. +Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + 1. Definitions. + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + END OF TERMS AND CONDITIONS + APPENDIX: How to apply the Apache License to your work. + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + Copyright [yyyy] [name of copyright owner] + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + http://www.apache.org/licenses/LICENSE-2.0 + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. From 4646db1e26ee9412a8f15e37660b567eb99a94c9 Mon Sep 17 00:00:00 2001 From: Bilal Al-Shahwany Date: Tue, 3 Feb 2026 04:15:09 +0000 Subject: [PATCH 003/155] Create pipeline python-client --- .../Harness_Split/pipelines/pythonclient.yaml | 198 ++++++++++++++++++ 1 file changed, 198 insertions(+) create mode 100644 .harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml diff --git a/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml b/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml new file mode 100644 index 00000000..f237fb0c --- /dev/null +++ b/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml @@ -0,0 +1,198 @@ +pipeline: + name: python-client + identifier: pythonclient + projectIdentifier: Harness_Split + orgIdentifier: PROD + tags: + ai_generated: "true" + properties: + ci: + codebase: + connectorRef: <+input> + repoName: <+input> + build: + type: branch + spec: + branch: <+input> + variables: + - name: sonarqube_host + type: Secret + value: <+input> + - name: sonarqube_token + type: Secret + value: <+input> + - name: github_token + type: Secret + value: <+input> + stages: + - stage: + name: CI Stage + identifier: ci_stage + type: CI + spec: + cloneCodebase: true + runtime: + type: Cloud + spec: + size: small + platform: + os: Linux + arch: Amd64 + serviceDependencies: + - type: Service + identifier: redis + name: Redis + spec: + image: redis:latest + execution: + steps: + - step: + type: Run + name: Setup Python + identifier: setup_python + spec: + connectorRef: account.harnessImage + image: alpine + shell: Bash + command: | + # Install Python 3.7.16 + echo "Installing Python 3.7.16..." + apt-get update + apt-get install -y wget build-essential libssl-dev zlib1g-dev libncurses5-dev libncursesw5-dev libreadline-dev libsqlite3-dev libgdbm-dev libdb5.3-dev libbz2-dev libexpat1-dev liblzma-dev libffi-dev + + wget https://www.python.org/ftp/python/3.7.16/Python-3.7.16.tgz + tar -xf Python-3.7.16.tgz + cd Python-3.7.16 + ./configure --enable-optimizations + make -j $(nproc) + make altinstall + + # Add Python to PATH + ln -sf /usr/local/bin/python3.7 /usr/local/bin/python + ln -sf /usr/local/bin/pip3.7 /usr/local/bin/pip + + # Verify installation + python --version + pip --version + + # Export Python version as output variable + export PYTHON_VERSION=$(python --version) + outputVariables: + - name: PYTHON_VERSION + timeout: 10m + - step: + type: Run + name: Install System Dependencies + identifier: install_system_dependencies + spec: + connectorRef: account.harnessImage + image: alpine + shell: Bash + command: | + # Update package lists + apt-get update + + # Install libkrb5-dev package + apt-get install -y libkrb5-dev + timeout: 10m + - step: + type: Run + name: Install Python Dependencies + identifier: install_python_dependencies + spec: + connectorRef: account.harnessImage + image: alpine + shell: Bash + command: | + # Install pip if not already installed + apk add --no-cache python3 py3-pip + + # Install dependencies from requirements.txt with extras + pip install -r requirements.txt + pip install -r requirements.txt[dev,test] + + echo "Python dependencies installed successfully" + timeout: 10m + - step: + type: Test + name: Run Python Tests + identifier: run_tests + timeout: 10m + spec: + command: | + # Run pytest with JUnit XML report output + python -m pytest --junitxml=test-reports/junit.xml + shell: Python + connectorRef: account.harnessImage + image: alpine + reports: + type: JUnit + spec: + paths: + - test-reports/junit.xml + envVariables: + PYTHONPATH: ${PYTHONPATH}:. + PYTEST_ADDOPTS: "--verbose" + - step: + type: Run + name: Extract Version + identifier: extract_version + spec: + connectorRef: account.harnessImage + image: alpine + shell: Python + command: | + import os + import re + + # Read the version.py file + with open('splitio/version.py', 'r') as file: + content = file.read() + + # Extract version using regex + version_match = re.search(r'__version__\s*=\s*["\']([^"\']*)["\']\'', content) + if version_match: + version = version_match.group(1) + print(f"Extracted version: {version}") + # Export as environment variable for output + os.environ["VERSION"] = version + else: + print("Version not found in version.py file") + os.environ["VERSION"] = "not_found" + outputVariables: + - name: VERSION + timeout: 10m + - step: + identifier: sonarqube_scan + name: SonarQube Scan + type: Sonarqube + timeout: 10m + spec: + mode: orchestration + config: default + target: + type: repository + detection: auto + auth: + access_token: <+pipeline.variables.sonarqube_token> + tool: + project_key: <+codebase.repoName> + branch_name: <+codebase.branch> + pull_request_key: <+codebase.prNumber> + pull_request_branch: <+codebase.targetBranch> + pull_request_base: <+codebase.sourceBranch> + settings: + sonar.host.url: <+pipeline.variables.sonarqube_host> + sonar.qualitygate.wait: true + sonar.branch.name: <+codebase.branch> + sonar.pullrequest.key: <+codebase.prNumber> + sonar.pullrequest.branch: <+codebase.targetBranch> + sonar.pullrequest.base: <+codebase.sourceBranch> + strategy: + when: <+codebase.prNumber != ""> + matrix: + config: + - default + - branch-scan + rollbackSteps: [] + description: This pipeline was generated by Harness AI on 2026-02-03 04:11:48 UTC by Bilal Al-Shahwany. From db42ea2d4aedd129b91b4f88309a6423c42a279b Mon Sep 17 00:00:00 2001 From: Bilal Al-Shahwany Date: Tue, 3 Feb 2026 04:18:45 +0000 Subject: [PATCH 004/155] Update pipeline python-client --- .../Harness_Split/pipelines/pythonclient.yaml | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml b/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml index f237fb0c..db73b2d6 100644 --- a/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml +++ b/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml @@ -173,14 +173,9 @@ pipeline: target: type: repository detection: auto - auth: - access_token: <+pipeline.variables.sonarqube_token> - tool: - project_key: <+codebase.repoName> - branch_name: <+codebase.branch> - pull_request_key: <+codebase.prNumber> - pull_request_branch: <+codebase.targetBranch> - pull_request_base: <+codebase.sourceBranch> + advanced: + log: + level: info settings: sonar.host.url: <+pipeline.variables.sonarqube_host> sonar.qualitygate.wait: true @@ -188,6 +183,12 @@ pipeline: sonar.pullrequest.key: <+codebase.prNumber> sonar.pullrequest.branch: <+codebase.targetBranch> sonar.pullrequest.base: <+codebase.sourceBranch> + auth: + access_token: <+secrets.getValue("sonarqube-token")> + domain: https://sonar.harness.io/ + ssl: true + tool: + project_key: <+codebase.repoName> strategy: when: <+codebase.prNumber != ""> matrix: From c10ac9e8ef63d01bb3640b6a70798ead1175c164 Mon Sep 17 00:00:00 2001 From: Bilal Al-Shahwany Date: Tue, 3 Feb 2026 04:25:17 +0000 Subject: [PATCH 005/155] Update pipeline python-client --- .../projects/Harness_Split/pipelines/pythonclient.yaml | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml b/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml index db73b2d6..51041839 100644 --- a/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml +++ b/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml @@ -15,15 +15,12 @@ pipeline: spec: branch: <+input> variables: - - name: sonarqube_host - type: Secret - value: <+input> - name: sonarqube_token type: Secret - value: <+input> + value: <+secrets.getValue("sonarqube-token")> - name: github_token type: Secret - value: <+input> + value: <+secrets.getValue('github-devops-token')> stages: - stage: name: CI Stage @@ -177,7 +174,7 @@ pipeline: log: level: info settings: - sonar.host.url: <+pipeline.variables.sonarqube_host> + sonar.host.url: https://sonar.harness.io/ sonar.qualitygate.wait: true sonar.branch.name: <+codebase.branch> sonar.pullrequest.key: <+codebase.prNumber> From 9b565f27cad7ce7ae5ff8fd75fe95414b3a5c16f Mon Sep 17 00:00:00 2001 From: Bilal Al-Shahwany Date: Tue, 3 Feb 2026 04:28:16 +0000 Subject: [PATCH 006/155] Update pipeline python-client --- .../projects/Harness_Split/pipelines/pythonclient.yaml | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml b/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml index 51041839..3ec36fea 100644 --- a/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml +++ b/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml @@ -23,7 +23,7 @@ pipeline: value: <+secrets.getValue('github-devops-token')> stages: - stage: - name: CI Stage + name: Build and Test identifier: ci_stage type: CI spec: @@ -193,4 +193,10 @@ pipeline: - default - branch-scan rollbackSteps: [] + caching: + enabled: false + paths: [] + buildIntelligence: + enabled: false + description: "" description: This pipeline was generated by Harness AI on 2026-02-03 04:11:48 UTC by Bilal Al-Shahwany. From 5f624aaae624cfa2f2d0bb2cbf30ae4de389f1ca Mon Sep 17 00:00:00 2001 From: Bilal Al-Shahwany Date: Tue, 3 Feb 2026 04:36:50 +0000 Subject: [PATCH 007/155] Update pipeline python-client --- .../projects/Harness_Split/pipelines/pythonclient.yaml | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml b/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml index 3ec36fea..18232d9b 100644 --- a/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml +++ b/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml @@ -8,12 +8,10 @@ pipeline: properties: ci: codebase: - connectorRef: <+input> - repoName: <+input> - build: - type: branch - spec: - branch: <+input> + connectorRef: fmegithubharnessgitops + repoName: python-client + build: <+input> + sparseCheckout: [] variables: - name: sonarqube_token type: Secret From 4460a801352299625e83d723f2f156a75425499a Mon Sep 17 00:00:00 2001 From: Bilal Al-Shahwany Date: Tue, 3 Feb 2026 04:40:47 +0000 Subject: [PATCH 008/155] Update pipeline python-client --- .../Harness_Split/pipelines/pythonclient.yaml | 41 ++++++++----------- 1 file changed, 18 insertions(+), 23 deletions(-) diff --git a/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml b/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml index 18232d9b..b414cd45 100644 --- a/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml +++ b/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml @@ -8,20 +8,22 @@ pipeline: properties: ci: codebase: - connectorRef: fmegithubharnessgitops - repoName: python-client + connectorRef: <+input> + repoName: <+input> build: <+input> - sparseCheckout: [] variables: + - name: sonarqube_host + type: Secret + value: <+input> - name: sonarqube_token type: Secret - value: <+secrets.getValue("sonarqube-token")> + value: <+input> - name: github_token type: Secret - value: <+secrets.getValue('github-devops-token')> + value: <+input> stages: - stage: - name: Build and Test + name: CI Stage identifier: ci_stage type: CI spec: @@ -168,22 +170,21 @@ pipeline: target: type: repository detection: auto - advanced: - log: - level: info + auth: + access_token: <+pipeline.variables.sonarqube_token> + tool: + project_key: <+codebase.repoName> + branch_name: <+codebase.branch> + pull_request_key: <+codebase.prNumber> + pull_request_branch: <+codebase.targetBranch> + pull_request_base: <+codebase.sourceBranch> settings: - sonar.host.url: https://sonar.harness.io/ + sonar.host.url: <+pipeline.variables.sonarqube_host> sonar.qualitygate.wait: true sonar.branch.name: <+codebase.branch> sonar.pullrequest.key: <+codebase.prNumber> sonar.pullrequest.branch: <+codebase.targetBranch> sonar.pullrequest.base: <+codebase.sourceBranch> - auth: - access_token: <+secrets.getValue("sonarqube-token")> - domain: https://sonar.harness.io/ - ssl: true - tool: - project_key: <+codebase.repoName> strategy: when: <+codebase.prNumber != ""> matrix: @@ -191,10 +192,4 @@ pipeline: - default - branch-scan rollbackSteps: [] - caching: - enabled: false - paths: [] - buildIntelligence: - enabled: false - description: "" - description: This pipeline was generated by Harness AI on 2026-02-03 04:11:48 UTC by Bilal Al-Shahwany. + description: This pipeline was updated by Harness AI on 2026-02-03 04:38:30 UTC by Bilal Al-Shahwany. From 6a26af3b690125d198f945aca0208c99705555db Mon Sep 17 00:00:00 2001 From: Bilal Al-Shahwany Date: Tue, 3 Feb 2026 04:42:40 +0000 Subject: [PATCH 009/155] Update pipeline python-client --- .../projects/Harness_Split/pipelines/pythonclient.yaml | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml b/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml index b414cd45..f6a58986 100644 --- a/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml +++ b/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml @@ -12,15 +12,12 @@ pipeline: repoName: <+input> build: <+input> variables: - - name: sonarqube_host - type: Secret - value: <+input> - name: sonarqube_token type: Secret - value: <+input> + value: <+secrets.getValue('sonarqube-token')> - name: github_token type: Secret - value: <+input> + value: <+secrets.getValue('github-devops-token')> stages: - stage: name: CI Stage From 3e7f7fb456707bf39c048dfdd27a27afec770284 Mon Sep 17 00:00:00 2001 From: Bilal Al-Shahwany Date: Tue, 3 Feb 2026 04:46:33 +0000 Subject: [PATCH 010/155] Create inputset entry --- .../pipelines/pythonclient/input_sets/entry.yaml | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) create mode 100644 .harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient/input_sets/entry.yaml diff --git a/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient/input_sets/entry.yaml b/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient/input_sets/entry.yaml new file mode 100644 index 00000000..ff5a4c23 --- /dev/null +++ b/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient/input_sets/entry.yaml @@ -0,0 +1,16 @@ +inputSet: + pipeline: + identifier: pythonclient + properties: + ci: + codebase: + connectorRef: fmegithubharnessgitops + repoName: python-client + build: + spec: + branch: harness_pipeline + type: branch + name: entry + identifier: entry + orgIdentifier: PROD + projectIdentifier: Harness_Split From b0bffb0f5db43a8bee8e04e9613bcf5eca071d11 Mon Sep 17 00:00:00 2001 From: Bilal Al-Shahwany Date: Tue, 3 Feb 2026 04:50:06 +0000 Subject: [PATCH 011/155] Update pipeline python-client --- .../Harness_Split/pipelines/pythonclient.yaml | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml b/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml index f6a58986..5684d36d 100644 --- a/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml +++ b/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml @@ -20,7 +20,7 @@ pipeline: value: <+secrets.getValue('github-devops-token')> stages: - stage: - name: CI Stage + name: Build and Test identifier: ci_stage type: CI spec: @@ -28,7 +28,8 @@ pipeline: runtime: type: Cloud spec: - size: small + size: medium + nestedVirtualization: true platform: os: Linux arch: Amd64 @@ -189,4 +190,10 @@ pipeline: - default - branch-scan rollbackSteps: [] + caching: + enabled: false + paths: [] + buildIntelligence: + enabled: false + description: "" description: This pipeline was updated by Harness AI on 2026-02-03 04:38:30 UTC by Bilal Al-Shahwany. From c69a45abb22b398e7dff5dc2e1badc3c9df80d11 Mon Sep 17 00:00:00 2001 From: Bilal Al-Shahwany Date: Tue, 3 Feb 2026 04:56:52 +0000 Subject: [PATCH 012/155] Update pipeline python-client --- .../Harness_Split/pipelines/pythonclient.yaml | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml b/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml index 5684d36d..30b062a5 100644 --- a/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml +++ b/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml @@ -48,8 +48,8 @@ pipeline: spec: connectorRef: account.harnessImage image: alpine - shell: Bash - command: | + shell: Sh + command: |- # Install Python 3.7.16 echo "Installing Python 3.7.16..." apt-get update @@ -82,8 +82,8 @@ pipeline: spec: connectorRef: account.harnessImage image: alpine - shell: Bash - command: | + shell: Sh + command: |- # Update package lists apt-get update @@ -97,8 +97,8 @@ pipeline: spec: connectorRef: account.harnessImage image: alpine - shell: Bash - command: | + shell: Sh + command: |- # Install pip if not already installed apk add --no-cache python3 py3-pip From 7c1cddd4a5b77b51becdbb658573fe15ebbaed76 Mon Sep 17 00:00:00 2001 From: Bilal Al-Shahwany Date: Tue, 3 Feb 2026 05:01:15 +0000 Subject: [PATCH 013/155] Update pipeline python-client --- .../projects/Harness_Split/pipelines/pythonclient.yaml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml b/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml index 30b062a5..23904ea1 100644 --- a/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml +++ b/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml @@ -52,8 +52,8 @@ pipeline: command: |- # Install Python 3.7.16 echo "Installing Python 3.7.16..." - apt-get update - apt-get install -y wget build-essential libssl-dev zlib1g-dev libncurses5-dev libncursesw5-dev libreadline-dev libsqlite3-dev libgdbm-dev libdb5.3-dev libbz2-dev libexpat1-dev liblzma-dev libffi-dev + apk update + apk add -y wget build-essential libssl-dev zlib1g-dev libncurses5-dev libncursesw5-dev libreadline-dev libsqlite3-dev libgdbm-dev libdb5.3-dev libbz2-dev libexpat1-dev liblzma-dev libffi-dev wget https://www.python.org/ftp/python/3.7.16/Python-3.7.16.tgz tar -xf Python-3.7.16.tgz @@ -85,10 +85,10 @@ pipeline: shell: Sh command: |- # Update package lists - apt-get update + apk update # Install libkrb5-dev package - apt-get install -y libkrb5-dev + apk add -y libkrb5-dev timeout: 10m - step: type: Run From 892e7343789117fa37b8bbc4c159b25063da91c7 Mon Sep 17 00:00:00 2001 From: Bilal Al-Shahwany Date: Tue, 3 Feb 2026 05:03:30 +0000 Subject: [PATCH 014/155] Update pipeline python-client --- .../PROD/projects/Harness_Split/pipelines/pythonclient.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml b/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml index 23904ea1..aa22d0bc 100644 --- a/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml +++ b/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml @@ -53,7 +53,7 @@ pipeline: # Install Python 3.7.16 echo "Installing Python 3.7.16..." apk update - apk add -y wget build-essential libssl-dev zlib1g-dev libncurses5-dev libncursesw5-dev libreadline-dev libsqlite3-dev libgdbm-dev libdb5.3-dev libbz2-dev libexpat1-dev liblzma-dev libffi-dev + apk add wget build-essential libssl-dev zlib1g-dev libncurses5-dev libncursesw5-dev libreadline-dev libsqlite3-dev libgdbm-dev libdb5.3-dev libbz2-dev libexpat1-dev liblzma-dev libffi-dev wget https://www.python.org/ftp/python/3.7.16/Python-3.7.16.tgz tar -xf Python-3.7.16.tgz From 6ede65fac5bca51c4b082ca20fc994a4e970be72 Mon Sep 17 00:00:00 2001 From: Bilal Al-Shahwany Date: Tue, 3 Feb 2026 05:10:37 +0000 Subject: [PATCH 015/155] Update pipeline python-client --- .../PROD/projects/Harness_Split/pipelines/pythonclient.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml b/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml index aa22d0bc..1f41ecee 100644 --- a/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml +++ b/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml @@ -53,7 +53,7 @@ pipeline: # Install Python 3.7.16 echo "Installing Python 3.7.16..." apk update - apk add wget build-essential libssl-dev zlib1g-dev libncurses5-dev libncursesw5-dev libreadline-dev libsqlite3-dev libgdbm-dev libdb5.3-dev libbz2-dev libexpat1-dev liblzma-dev libffi-dev + apk add --update wget build-essential libssl-dev zlib1g-dev libncurses5-dev libncursesw5-dev libreadline-dev libsqlite3-dev libgdbm-dev libdb5.3-dev libbz2-dev libexpat1-dev liblzma-dev libffi-dev wget https://www.python.org/ftp/python/3.7.16/Python-3.7.16.tgz tar -xf Python-3.7.16.tgz From 8f9a46270d9cd342e5858a63ce7c87f0710a7671 Mon Sep 17 00:00:00 2001 From: Bilal Al-Shahwany Date: Tue, 3 Feb 2026 05:20:15 +0000 Subject: [PATCH 016/155] Update pipeline python-client --- .../PROD/projects/Harness_Split/pipelines/pythonclient.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml b/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml index 1f41ecee..05ef4df7 100644 --- a/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml +++ b/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml @@ -53,7 +53,7 @@ pipeline: # Install Python 3.7.16 echo "Installing Python 3.7.16..." apk update - apk add --update wget build-essential libssl-dev zlib1g-dev libncurses5-dev libncursesw5-dev libreadline-dev libsqlite3-dev libgdbm-dev libdb5.3-dev libbz2-dev libexpat1-dev liblzma-dev libffi-dev + apk add --update wget build-base libressl-dev zlib-dev ncurses-dev readline-dev sqlite-dev gdbm-dev db-dev bzip2-dev expat-dev xz-dev libffi-dev wget https://www.python.org/ftp/python/3.7.16/Python-3.7.16.tgz tar -xf Python-3.7.16.tgz From 190581c38210d80408978ffdf76b8f8f4aa2d7e4 Mon Sep 17 00:00:00 2001 From: Bilal Al-Shahwany Date: Tue, 3 Feb 2026 05:39:32 +0000 Subject: [PATCH 017/155] Update pipeline python-client --- .../Harness_Split/pipelines/pythonclient.yaml | 48 +++++++------------ 1 file changed, 18 insertions(+), 30 deletions(-) diff --git a/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml b/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml index 05ef4df7..271bcfcb 100644 --- a/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml +++ b/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml @@ -43,52 +43,37 @@ pipeline: steps: - step: type: Run - name: Setup Python - identifier: setup_python + name: Verify Python Installation + identifier: verify_python spec: connectorRef: account.harnessImage - image: alpine + image: python:3.7.16-alpine shell: Sh command: |- - # Install Python 3.7.16 - echo "Installing Python 3.7.16..." - apk update - apk add --update wget build-base libressl-dev zlib-dev ncurses-dev readline-dev sqlite-dev gdbm-dev db-dev bzip2-dev expat-dev xz-dev libffi-dev - - wget https://www.python.org/ftp/python/3.7.16/Python-3.7.16.tgz - tar -xf Python-3.7.16.tgz - cd Python-3.7.16 - ./configure --enable-optimizations - make -j $(nproc) - make altinstall - - # Add Python to PATH - ln -sf /usr/local/bin/python3.7 /usr/local/bin/python - ln -sf /usr/local/bin/pip3.7 /usr/local/bin/pip - - # Verify installation + # Python is already installed in this image python --version pip --version - # Export Python version as output variable - export PYTHON_VERSION=$(python --version) + # Install any additional system packages if needed + apk update + apk add --no-cache gcc musl-dev libffi-dev outputVariables: - name: PYTHON_VERSION - timeout: 10m + timeout: 2m - step: type: Run name: Install System Dependencies identifier: install_system_dependencies spec: connectorRef: account.harnessImage - image: alpine + image: python:3.7.16-alpine shell: Sh command: |- # Update package lists apk update # Install libkrb5-dev package - apk add -y libkrb5-dev + apk add --no-cache krb5-dev gcc musl-dev libffi-dev timeout: 10m - step: type: Run @@ -96,16 +81,19 @@ pipeline: identifier: install_python_dependencies spec: connectorRef: account.harnessImage - image: alpine + image: python:3.7.16-alpine shell: Sh command: |- - # Install pip if not already installed - apk add --no-cache python3 py3-pip + # Upgrade pip + pip install --upgrade pip - # Install dependencies from requirements.txt with extras + # Install dependencies pip install -r requirements.txt - pip install -r requirements.txt[dev,test] + # Install dev/test dependencies if they exist + if grep -q "\[dev\]" requirements.txt; then + pip install -r requirements.txt[dev,test] + fi echo "Python dependencies installed successfully" timeout: 10m - step: From f753bf52bbbbd36ad9655c44cf6ad8bc1d9262cf Mon Sep 17 00:00:00 2001 From: Bilal Al-Shahwany Date: Tue, 3 Feb 2026 05:45:30 +0000 Subject: [PATCH 018/155] Update pipeline python-client --- .../projects/Harness_Split/pipelines/pythonclient.yaml | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml b/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml index 271bcfcb..6535d0f7 100644 --- a/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml +++ b/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml @@ -87,13 +87,9 @@ pipeline: # Upgrade pip pip install --upgrade pip - # Install dependencies - pip install -r requirements.txt + pip install -U setuptools pip wheel + pip install -e .[cpphash,redis,uwsgi] - # Install dev/test dependencies if they exist - if grep -q "\[dev\]" requirements.txt; then - pip install -r requirements.txt[dev,test] - fi echo "Python dependencies installed successfully" timeout: 10m - step: From 9f50029bd37ab47b2c94dc52c91789f171b54217 Mon Sep 17 00:00:00 2001 From: Bilal Al-Shahwany Date: Tue, 3 Feb 2026 05:51:01 +0000 Subject: [PATCH 019/155] Update pipeline python-client --- .../PROD/projects/Harness_Split/pipelines/pythonclient.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml b/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml index 6535d0f7..217eb14b 100644 --- a/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml +++ b/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml @@ -73,7 +73,7 @@ pipeline: apk update # Install libkrb5-dev package - apk add --no-cache krb5-dev gcc musl-dev libffi-dev + apk add --no-cache krb5-dev gcc musl-dev libffi-dev build-base timeout: 10m - step: type: Run From c0deee980555b9715ac17deaf118e809975c9a35 Mon Sep 17 00:00:00 2001 From: Bilal Al-Shahwany Date: Tue, 3 Feb 2026 05:56:05 +0000 Subject: [PATCH 020/155] Update pipeline python-client --- .../PROD/projects/Harness_Split/pipelines/pythonclient.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml b/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml index 217eb14b..3ad7438a 100644 --- a/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml +++ b/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml @@ -73,7 +73,7 @@ pipeline: apk update # Install libkrb5-dev package - apk add --no-cache krb5-dev gcc musl-dev libffi-dev build-base + apk add --no-cache krb5-dev musl-dev libffi-dev build-base python3-dev timeout: 10m - step: type: Run From ee570480bdf4622ac39bcb57c2c545fe5f933843 Mon Sep 17 00:00:00 2001 From: Bilal Al-Shahwany Date: Tue, 3 Feb 2026 05:56:24 +0000 Subject: [PATCH 021/155] Update pipeline python-client --- .../PROD/projects/Harness_Split/pipelines/pythonclient.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml b/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml index 3ad7438a..4783a074 100644 --- a/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml +++ b/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml @@ -28,7 +28,7 @@ pipeline: runtime: type: Cloud spec: - size: medium + size: small nestedVirtualization: true platform: os: Linux From bb09d7d03903e0a3e565cf58f38226b826fd55be Mon Sep 17 00:00:00 2001 From: Bilal Al-Shahwany Date: Tue, 3 Feb 2026 06:02:39 +0000 Subject: [PATCH 022/155] Update pipeline python-client --- .../orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml b/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml index 4783a074..c2bd4451 100644 --- a/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml +++ b/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml @@ -74,6 +74,7 @@ pipeline: # Install libkrb5-dev package apk add --no-cache krb5-dev musl-dev libffi-dev build-base python3-dev + gcc -v timeout: 10m - step: type: Run From e5037e3d8d645c014561a39864fc1036bd6fb46a Mon Sep 17 00:00:00 2001 From: Bilal Al-Shahwany Date: Tue, 3 Feb 2026 06:05:56 +0000 Subject: [PATCH 023/155] Update pipeline python-client --- .../projects/Harness_Split/pipelines/pythonclient.yaml | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml b/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml index c2bd4451..7b12836d 100644 --- a/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml +++ b/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml @@ -89,7 +89,6 @@ pipeline: pip install --upgrade pip pip install -U setuptools pip wheel - pip install -e .[cpphash,redis,uwsgi] echo "Python dependencies installed successfully" timeout: 10m @@ -99,12 +98,12 @@ pipeline: identifier: run_tests timeout: 10m spec: - command: | - # Run pytest with JUnit XML report output - python -m pytest --junitxml=test-reports/junit.xml - shell: Python connectorRef: account.harnessImage image: alpine + shell: Python + command: | + # Run pytest with JUnit XML report output + python setup.py test --junitxml=test-reports/junit.xml reports: type: JUnit spec: @@ -113,6 +112,7 @@ pipeline: envVariables: PYTHONPATH: ${PYTHONPATH}:. PYTEST_ADDOPTS: "--verbose" + intelligenceMode: true - step: type: Run name: Extract Version From 2db3f7c5d474280ecee299795cb4d2019664414e Mon Sep 17 00:00:00 2001 From: Bilal Al-Shahwany Date: Tue, 3 Feb 2026 06:09:15 +0000 Subject: [PATCH 024/155] Update pipeline python-client --- .../PROD/projects/Harness_Split/pipelines/pythonclient.yaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml b/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml index 7b12836d..f10bd2b9 100644 --- a/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml +++ b/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml @@ -99,7 +99,7 @@ pipeline: timeout: 10m spec: connectorRef: account.harnessImage - image: alpine + image: python:3.7.16-alpine shell: Python command: | # Run pytest with JUnit XML report output @@ -119,7 +119,7 @@ pipeline: identifier: extract_version spec: connectorRef: account.harnessImage - image: alpine + image: python:3.7.16-alpine shell: Python command: | import os From a5c78361e2d617551a8a07e6afc178b43b253d95 Mon Sep 17 00:00:00 2001 From: Bilal Al-Shahwany Date: Tue, 3 Feb 2026 06:13:48 +0000 Subject: [PATCH 025/155] Update pipeline python-client --- .../PROD/projects/Harness_Split/pipelines/pythonclient.yaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml b/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml index f10bd2b9..8ea91bb0 100644 --- a/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml +++ b/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml @@ -103,12 +103,12 @@ pipeline: shell: Python command: | # Run pytest with JUnit XML report output - python setup.py test --junitxml=test-reports/junit.xml + python setup.py test --junitxml=./junit.xml reports: type: JUnit spec: paths: - - test-reports/junit.xml + - ./junit.xml envVariables: PYTHONPATH: ${PYTHONPATH}:. PYTEST_ADDOPTS: "--verbose" From b97b7cb4865511c8d842381495ac51115cec3d22 Mon Sep 17 00:00:00 2001 From: Bilal Al-Shahwany Date: Tue, 3 Feb 2026 06:17:11 +0000 Subject: [PATCH 026/155] Update pipeline python-client --- .../projects/Harness_Split/pipelines/pythonclient.yaml | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml b/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml index 8ea91bb0..ed0f911c 100644 --- a/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml +++ b/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml @@ -103,12 +103,7 @@ pipeline: shell: Python command: | # Run pytest with JUnit XML report output - python setup.py test --junitxml=./junit.xml - reports: - type: JUnit - spec: - paths: - - ./junit.xml + python setup.py test envVariables: PYTHONPATH: ${PYTHONPATH}:. PYTEST_ADDOPTS: "--verbose" From 585df154c61c904c079681bd37143d11e7b04cd2 Mon Sep 17 00:00:00 2001 From: Bilal Al-Shahwany Date: Tue, 3 Feb 2026 06:28:38 +0000 Subject: [PATCH 027/155] Update pipeline python-client --- .../orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml | 1 - 1 file changed, 1 deletion(-) diff --git a/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml b/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml index ed0f911c..3ad6919f 100644 --- a/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml +++ b/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml @@ -107,7 +107,6 @@ pipeline: envVariables: PYTHONPATH: ${PYTHONPATH}:. PYTEST_ADDOPTS: "--verbose" - intelligenceMode: true - step: type: Run name: Extract Version From 88f4624921f34c322ce58f215d5cae7a3be5778d Mon Sep 17 00:00:00 2001 From: Bilal Al-Shahwany Date: Tue, 3 Feb 2026 06:32:32 +0000 Subject: [PATCH 028/155] Update pipeline python-client --- .../PROD/projects/Harness_Split/pipelines/pythonclient.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml b/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml index 3ad6919f..e2f870e3 100644 --- a/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml +++ b/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml @@ -103,7 +103,7 @@ pipeline: shell: Python command: | # Run pytest with JUnit XML report output - python setup.py test + python /harness/setup.py test envVariables: PYTHONPATH: ${PYTHONPATH}:. PYTEST_ADDOPTS: "--verbose" From 81c1b7a9ae94756105eb2d34fac1993a1bb43c38 Mon Sep 17 00:00:00 2001 From: Bilal Al-Shahwany Date: Tue, 3 Feb 2026 06:37:57 +0000 Subject: [PATCH 029/155] Update pipeline python-client --- .../projects/Harness_Split/pipelines/pythonclient.yaml | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml b/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml index e2f870e3..6bd95f2d 100644 --- a/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml +++ b/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml @@ -100,10 +100,11 @@ pipeline: spec: connectorRef: account.harnessImage image: python:3.7.16-alpine - shell: Python - command: | + shell: Sh + command: |- # Run pytest with JUnit XML report output - python /harness/setup.py test + cd /harness + python setup.py test envVariables: PYTHONPATH: ${PYTHONPATH}:. PYTEST_ADDOPTS: "--verbose" From 83f9a7b971080dfb02e0b89ac63b4906c9d13beb Mon Sep 17 00:00:00 2001 From: Bilal Al-Shahwany Date: Tue, 3 Feb 2026 06:45:12 +0000 Subject: [PATCH 030/155] Update pipeline python-client --- .../orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml b/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml index 6bd95f2d..9d1af689 100644 --- a/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml +++ b/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml @@ -89,6 +89,7 @@ pipeline: pip install --upgrade pip pip install -U setuptools pip wheel + pip install PyYAML==6.0.1 echo "Python dependencies installed successfully" timeout: 10m From 5bcff968437d50a44b427ef1af17ead5fc5d16cb Mon Sep 17 00:00:00 2001 From: Bilal Al-Shahwany Date: Tue, 3 Feb 2026 16:51:28 +0000 Subject: [PATCH 031/155] Update pipeline python-client --- .../orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml | 1 - 1 file changed, 1 deletion(-) diff --git a/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml b/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml index 9d1af689..6bd95f2d 100644 --- a/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml +++ b/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml @@ -89,7 +89,6 @@ pipeline: pip install --upgrade pip pip install -U setuptools pip wheel - pip install PyYAML==6.0.1 echo "Python dependencies installed successfully" timeout: 10m From 7a68b13fa0ace145ccbddf113a99db8a00e66109 Mon Sep 17 00:00:00 2001 From: Bilal Al-Shahwany Date: Tue, 3 Feb 2026 08:51:42 -0800 Subject: [PATCH 032/155] set pyaml version to 6.0.1 or below --- setup.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/setup.py b/setup.py index e2b4c74a..5698f50e 100644 --- a/setup.py +++ b/setup.py @@ -23,7 +23,7 @@ INSTALL_REQUIRES = [ 'requests', - 'pyyaml', + 'pyyaml<=6.0.1', 'docopt>=0.6.2', 'enum34;python_version<"3.4"', 'bloom-filter2>=2.0.0' From bf1cd13b6e832709c5bb7b526457bdeb47be8fee Mon Sep 17 00:00:00 2001 From: Bilal Al-Shahwany Date: Tue, 3 Feb 2026 09:01:51 -0800 Subject: [PATCH 033/155] set aiohttp lib to 3.8.6 or below --- setup.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/setup.py b/setup.py index 5698f50e..64e74d63 100644 --- a/setup.py +++ b/setup.py @@ -15,7 +15,7 @@ 'iniconfig==1.1.1', 'attrs==22.1.0', 'pytest-asyncio==0.21.0', - 'aiohttp>=3.8.4', + 'aiohttp<=3.8.6', 'aiofiles>=23.1.0', 'requests-kerberos>=0.15.0', 'urllib3==2.0.7' From a0611262bd32ad74a1790ba0caeecac13771491e Mon Sep 17 00:00:00 2001 From: Bilal Al-Shahwany Date: Tue, 3 Feb 2026 09:08:14 -0800 Subject: [PATCH 034/155] setting aiohttp to 3.8.4 or below --- setup.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/setup.py b/setup.py index 64e74d63..d6a6663a 100644 --- a/setup.py +++ b/setup.py @@ -15,7 +15,7 @@ 'iniconfig==1.1.1', 'attrs==22.1.0', 'pytest-asyncio==0.21.0', - 'aiohttp<=3.8.6', + 'aiohttp<=3.8.4', 'aiofiles>=23.1.0', 'requests-kerberos>=0.15.0', 'urllib3==2.0.7' From 4134512418c1fce7d784a3a92a3e6a00bf1f831b Mon Sep 17 00:00:00 2001 From: Bilal Al-Shahwany Date: Tue, 3 Feb 2026 17:11:18 +0000 Subject: [PATCH 035/155] Update pipeline python-client --- .../orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml b/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml index 6bd95f2d..558d457a 100644 --- a/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml +++ b/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml @@ -89,6 +89,7 @@ pipeline: pip install --upgrade pip pip install -U setuptools pip wheel + pip install aiohttp==3.8.4 echo "Python dependencies installed successfully" timeout: 10m From d12c9fb9b8b2b85910e3a0486700c43d0b860055 Mon Sep 17 00:00:00 2001 From: Bilal Al-Shahwany Date: Tue, 3 Feb 2026 09:18:13 -0800 Subject: [PATCH 036/155] set aiohttp to 3.8.4 --- setup.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/setup.py b/setup.py index d6a6663a..3698f46d 100644 --- a/setup.py +++ b/setup.py @@ -15,7 +15,7 @@ 'iniconfig==1.1.1', 'attrs==22.1.0', 'pytest-asyncio==0.21.0', - 'aiohttp<=3.8.4', + 'aiohttp==3.8.4', 'aiofiles>=23.1.0', 'requests-kerberos>=0.15.0', 'urllib3==2.0.7' From cd0b558a6f9bd54dd09cc8806572013344011e7f Mon Sep 17 00:00:00 2001 From: Bilal Al-Shahwany Date: Tue, 3 Feb 2026 17:21:34 +0000 Subject: [PATCH 037/155] Update pipeline python-client --- .../PROD/projects/Harness_Split/pipelines/pythonclient.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml b/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml index 558d457a..8f497bef 100644 --- a/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml +++ b/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml @@ -89,7 +89,6 @@ pipeline: pip install --upgrade pip pip install -U setuptools pip wheel - pip install aiohttp==3.8.4 echo "Python dependencies installed successfully" timeout: 10m @@ -105,6 +104,7 @@ pipeline: command: |- # Run pytest with JUnit XML report output cd /harness + pip install aiohttp==3.8.4 python setup.py test envVariables: PYTHONPATH: ${PYTHONPATH}:. From abc2f4d056fa5e2eea6674c291eed3ac3cd26ccc Mon Sep 17 00:00:00 2001 From: Bilal Al-Shahwany Date: Tue, 3 Feb 2026 09:26:19 -0800 Subject: [PATCH 038/155] set cryptography to 45.0.7 or below --- setup.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/setup.py b/setup.py index 3698f46d..3f7ddc07 100644 --- a/setup.py +++ b/setup.py @@ -18,7 +18,8 @@ 'aiohttp==3.8.4', 'aiofiles>=23.1.0', 'requests-kerberos>=0.15.0', - 'urllib3==2.0.7' + 'urllib3==2.0.7', + 'cryptography<=45.0.7' ] INSTALL_REQUIRES = [ From aaa38826a866e96979c1b5b500c907d8fdbcc297 Mon Sep 17 00:00:00 2001 From: Bilal Al-Shahwany Date: Tue, 3 Feb 2026 17:29:38 +0000 Subject: [PATCH 039/155] Update pipeline python-client --- .../orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml b/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml index 8f497bef..cea24f37 100644 --- a/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml +++ b/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml @@ -105,6 +105,7 @@ pipeline: # Run pytest with JUnit XML report output cd /harness pip install aiohttp==3.8.4 + pip install cryptography==45.0.7 python setup.py test envVariables: PYTHONPATH: ${PYTHONPATH}:. From ee89b54a804fb6a186c2119c3b41fd267ab0ef53 Mon Sep 17 00:00:00 2001 From: Bilal Al-Shahwany Date: Tue, 3 Feb 2026 17:36:30 +0000 Subject: [PATCH 040/155] Update pipeline python-client --- .../orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml b/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml index cea24f37..4df65dc6 100644 --- a/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml +++ b/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml @@ -106,6 +106,7 @@ pipeline: cd /harness pip install aiohttp==3.8.4 pip install cryptography==45.0.7 + pip install pycparser==2.21 python setup.py test envVariables: PYTHONPATH: ${PYTHONPATH}:. From 3705788d534a53b4bea51e95f7266236ee44f95f Mon Sep 17 00:00:00 2001 From: Bilal Al-Shahwany Date: Tue, 3 Feb 2026 18:26:53 +0000 Subject: [PATCH 041/155] Update pipeline python-client --- .../PROD/projects/Harness_Split/pipelines/pythonclient.yaml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml b/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml index 4df65dc6..d99c1f67 100644 --- a/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml +++ b/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml @@ -85,6 +85,8 @@ pipeline: image: python:3.7.16-alpine shell: Sh command: |- + apk add --no-cache krb5-dev musl-dev libffi-dev build-base python3-dev + # Upgrade pip pip install --upgrade pip From 319ea95e74e6c3f492270d043b56c426510433d0 Mon Sep 17 00:00:00 2001 From: Bilal Al-Shahwany Date: Tue, 3 Feb 2026 18:29:56 +0000 Subject: [PATCH 042/155] Update pipeline python-client --- .../PROD/projects/Harness_Split/pipelines/pythonclient.yaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml b/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml index d99c1f67..7abd599b 100644 --- a/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml +++ b/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml @@ -85,8 +85,6 @@ pipeline: image: python:3.7.16-alpine shell: Sh command: |- - apk add --no-cache krb5-dev musl-dev libffi-dev build-base python3-dev - # Upgrade pip pip install --upgrade pip @@ -104,6 +102,8 @@ pipeline: image: python:3.7.16-alpine shell: Sh command: |- + apk add --no-cache krb5-dev musl-dev libffi-dev build-base python3-dev + # Run pytest with JUnit XML report output cd /harness pip install aiohttp==3.8.4 From 10bb79cb2b7fdb21814fd25398a00b6843d1c4ba Mon Sep 17 00:00:00 2001 From: Bilal Al-Shahwany Date: Tue, 3 Feb 2026 18:33:58 +0000 Subject: [PATCH 043/155] Update pipeline python-client --- .../orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml b/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml index 7abd599b..a2d564ab 100644 --- a/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml +++ b/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml @@ -106,6 +106,7 @@ pipeline: # Run pytest with JUnit XML report output cd /harness + pip install Cython pip install aiohttp==3.8.4 pip install cryptography==45.0.7 pip install pycparser==2.21 From a97cf4f18c75dcb8985cc7ef4d613ac6a6a3f0bd Mon Sep 17 00:00:00 2001 From: Bilal Al-Shahwany Date: Tue, 3 Feb 2026 18:39:32 +0000 Subject: [PATCH 044/155] Update pipeline python-client --- .../Harness_Split/pipelines/pythonclient.yaml | 20 +++---------------- 1 file changed, 3 insertions(+), 17 deletions(-) diff --git a/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml b/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml index a2d564ab..e49bbf06 100644 --- a/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml +++ b/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml @@ -76,22 +76,6 @@ pipeline: apk add --no-cache krb5-dev musl-dev libffi-dev build-base python3-dev gcc -v timeout: 10m - - step: - type: Run - name: Install Python Dependencies - identifier: install_python_dependencies - spec: - connectorRef: account.harnessImage - image: python:3.7.16-alpine - shell: Sh - command: |- - # Upgrade pip - pip install --upgrade pip - - pip install -U setuptools pip wheel - - echo "Python dependencies installed successfully" - timeout: 10m - step: type: Test name: Run Python Tests @@ -106,7 +90,9 @@ pipeline: # Run pytest with JUnit XML report output cd /harness - pip install Cython + pip install --upgrade pip + pip install -U setuptools pip wheel + pip install Cython==3.0.12 pip install aiohttp==3.8.4 pip install cryptography==45.0.7 pip install pycparser==2.21 From 144857ded5f339040e685ee1cdcffbf414de800b Mon Sep 17 00:00:00 2001 From: Bilal Al-Shahwany Date: Tue, 3 Feb 2026 18:48:31 +0000 Subject: [PATCH 045/155] Update pipeline python-client --- .../orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml b/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml index e49bbf06..f9b66d9f 100644 --- a/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml +++ b/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml @@ -96,6 +96,7 @@ pipeline: pip install aiohttp==3.8.4 pip install cryptography==45.0.7 pip install pycparser==2.21 + pip install redis==5.0.8 python setup.py test envVariables: PYTHONPATH: ${PYTHONPATH}:. From 33d479ff3db5c72bb0b62202bdd68088c4aa8cc8 Mon Sep 17 00:00:00 2001 From: Bilal Al-Shahwany Date: Tue, 3 Feb 2026 19:00:20 +0000 Subject: [PATCH 046/155] Update pipeline python-client --- .../PROD/projects/Harness_Split/pipelines/pythonclient.yaml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml b/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml index f9b66d9f..68a7c269 100644 --- a/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml +++ b/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml @@ -86,7 +86,8 @@ pipeline: image: python:3.7.16-alpine shell: Sh command: |- - apk add --no-cache krb5-dev musl-dev libffi-dev build-base python3-dev + apk add --no-cache krb5-dev musl-dev libffi-dev build-base python3-dev redis + redis-server /etc/redis.conf # Run pytest with JUnit XML report output cd /harness From 30d946be9e7c25bd9b68f84ec158cf5efe9f84b5 Mon Sep 17 00:00:00 2001 From: Bilal Al-Shahwany Date: Tue, 3 Feb 2026 22:18:56 +0000 Subject: [PATCH 047/155] Update pipeline python-client --- .../Harness_Split/pipelines/pythonclient.yaml | 27 +------------------ 1 file changed, 1 insertion(+), 26 deletions(-) diff --git a/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml b/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml index 68a7c269..52c7770f 100644 --- a/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml +++ b/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml @@ -33,12 +33,6 @@ pipeline: platform: os: Linux arch: Amd64 - serviceDependencies: - - type: Service - identifier: redis - name: Redis - spec: - image: redis:latest execution: steps: - step: @@ -53,29 +47,9 @@ pipeline: # Python is already installed in this image python --version pip --version - - # Install any additional system packages if needed - apk update - apk add --no-cache gcc musl-dev libffi-dev outputVariables: - name: PYTHON_VERSION timeout: 2m - - step: - type: Run - name: Install System Dependencies - identifier: install_system_dependencies - spec: - connectorRef: account.harnessImage - image: python:3.7.16-alpine - shell: Sh - command: |- - # Update package lists - apk update - - # Install libkrb5-dev package - apk add --no-cache krb5-dev musl-dev libffi-dev build-base python3-dev - gcc -v - timeout: 10m - step: type: Test name: Run Python Tests @@ -86,6 +60,7 @@ pipeline: image: python:3.7.16-alpine shell: Sh command: |- + apk update apk add --no-cache krb5-dev musl-dev libffi-dev build-base python3-dev redis redis-server /etc/redis.conf From 78319bd8e5bb7c8f87e9ba97c12c97cf095e71c9 Mon Sep 17 00:00:00 2001 From: Bilal Al-Shahwany Date: Tue, 3 Feb 2026 22:23:50 +0000 Subject: [PATCH 048/155] Update pipeline python-client --- .../PROD/projects/Harness_Split/pipelines/pythonclient.yaml | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml b/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml index 52c7770f..075fae85 100644 --- a/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml +++ b/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml @@ -28,7 +28,7 @@ pipeline: runtime: type: Cloud spec: - size: small + size: medium nestedVirtualization: true platform: os: Linux @@ -61,7 +61,7 @@ pipeline: shell: Sh command: |- apk update - apk add --no-cache krb5-dev musl-dev libffi-dev build-base python3-dev redis + apk add --no-cache krb5-dev musl-dev libffi-dev build-base redis redis-server /etc/redis.conf # Run pytest with JUnit XML report output @@ -77,6 +77,7 @@ pipeline: envVariables: PYTHONPATH: ${PYTHONPATH}:. PYTEST_ADDOPTS: "--verbose" + intelligenceMode: true - step: type: Run name: Extract Version From eeaa3fb864e8aa627f5f034076bcc49fe6466eff Mon Sep 17 00:00:00 2001 From: Bilal Al-Shahwany Date: Tue, 3 Feb 2026 22:34:34 +0000 Subject: [PATCH 049/155] Update pipeline python-client --- .../PROD/projects/Harness_Split/pipelines/pythonclient.yaml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml b/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml index 075fae85..a28fbad9 100644 --- a/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml +++ b/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml @@ -61,7 +61,8 @@ pipeline: shell: Sh command: |- apk update - apk add --no-cache krb5-dev musl-dev libffi-dev build-base redis + apk add --no-cache krb5-dev musl-dev libffi-dev build-base + apk add --no-cache redis redis-server /etc/redis.conf # Run pytest with JUnit XML report output From 86ebe746d3e900ef579a702f6638c4521cab6f28 Mon Sep 17 00:00:00 2001 From: Bilal Al-Shahwany Date: Tue, 3 Feb 2026 22:54:43 +0000 Subject: [PATCH 050/155] Update pipeline python-client --- .../PROD/projects/Harness_Split/pipelines/pythonclient.yaml | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml b/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml index a28fbad9..64784e39 100644 --- a/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml +++ b/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml @@ -62,8 +62,6 @@ pipeline: command: |- apk update apk add --no-cache krb5-dev musl-dev libffi-dev build-base - apk add --no-cache redis - redis-server /etc/redis.conf # Run pytest with JUnit XML report output cd /harness @@ -73,6 +71,10 @@ pipeline: pip install aiohttp==3.8.4 pip install cryptography==45.0.7 pip install pycparser==2.21 + + apk --update add redis + redis-server /etc/redis.conf + pip install redis==5.0.8 python setup.py test envVariables: From dc08364a1a05eb70db93cc5b1799426068b6456e Mon Sep 17 00:00:00 2001 From: Bilal Al-Shahwany Date: Tue, 3 Feb 2026 23:08:42 +0000 Subject: [PATCH 051/155] Update pipeline python-client --- .../PROD/projects/Harness_Split/pipelines/pythonclient.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml b/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml index 64784e39..996bf006 100644 --- a/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml +++ b/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml @@ -80,7 +80,7 @@ pipeline: envVariables: PYTHONPATH: ${PYTHONPATH}:. PYTEST_ADDOPTS: "--verbose" - intelligenceMode: true + timeout: 40m - step: type: Run name: Extract Version From 6dd0d5392deebf0979990dc9f38e818cd1e28b66 Mon Sep 17 00:00:00 2001 From: Bilal Al-Shahwany Date: Tue, 3 Feb 2026 23:22:27 +0000 Subject: [PATCH 052/155] Update pipeline python-client --- .../PROD/projects/Harness_Split/pipelines/pythonclient.yaml | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml b/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml index 996bf006..16c13191 100644 --- a/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml +++ b/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml @@ -72,8 +72,9 @@ pipeline: pip install cryptography==45.0.7 pip install pycparser==2.21 - apk --update add redis - redis-server /etc/redis.conf + apk add redis + rc-update add redis default + rc-service redis start pip install redis==5.0.8 python setup.py test From 952efb310322d56c103c7c01f495f6aa7a85bf12 Mon Sep 17 00:00:00 2001 From: Bilal Al-Shahwany Date: Tue, 3 Feb 2026 23:27:47 +0000 Subject: [PATCH 053/155] Update pipeline python-client --- .../PROD/projects/Harness_Split/pipelines/pythonclient.yaml | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml b/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml index 16c13191..3218a97e 100644 --- a/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml +++ b/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml @@ -73,8 +73,7 @@ pipeline: pip install pycparser==2.21 apk add redis - rc-update add redis default - rc-service redis start + redis-server /etc/redis.conf & pip install redis==5.0.8 python setup.py test From 1e458ca60ad8c4d8e901da14e988e626a46ca78c Mon Sep 17 00:00:00 2001 From: Bilal Al-Shahwany Date: Tue, 3 Feb 2026 23:43:43 +0000 Subject: [PATCH 054/155] Update pipeline python-client --- .../PROD/projects/Harness_Split/pipelines/pythonclient.yaml | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml b/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml index 3218a97e..59c6bada 100644 --- a/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml +++ b/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml @@ -51,10 +51,10 @@ pipeline: - name: PYTHON_VERSION timeout: 2m - step: + timeout: 30m type: Test name: Run Python Tests identifier: run_tests - timeout: 10m spec: connectorRef: account.harnessImage image: python:3.7.16-alpine @@ -80,7 +80,6 @@ pipeline: envVariables: PYTHONPATH: ${PYTHONPATH}:. PYTEST_ADDOPTS: "--verbose" - timeout: 40m - step: type: Run name: Extract Version From fe4257771de00a6998e9776f0d176921e0a3a2ea Mon Sep 17 00:00:00 2001 From: Bilal Al-Shahwany Date: Wed, 4 Feb 2026 03:45:16 +0000 Subject: [PATCH 055/155] Update pipeline python-client --- .../Harness_Split/pipelines/pythonclient.yaml | 33 ++----------------- 1 file changed, 2 insertions(+), 31 deletions(-) diff --git a/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml b/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml index 59c6bada..82816f3c 100644 --- a/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml +++ b/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml @@ -80,35 +80,6 @@ pipeline: envVariables: PYTHONPATH: ${PYTHONPATH}:. PYTEST_ADDOPTS: "--verbose" - - step: - type: Run - name: Extract Version - identifier: extract_version - spec: - connectorRef: account.harnessImage - image: python:3.7.16-alpine - shell: Python - command: | - import os - import re - - # Read the version.py file - with open('splitio/version.py', 'r') as file: - content = file.read() - - # Extract version using regex - version_match = re.search(r'__version__\s*=\s*["\']([^"\']*)["\']\'', content) - if version_match: - version = version_match.group(1) - print(f"Extracted version: {version}") - # Export as environment variable for output - os.environ["VERSION"] = version - else: - print("Version not found in version.py file") - os.environ["VERSION"] = "not_found" - outputVariables: - - name: VERSION - timeout: 10m - step: identifier: sonarqube_scan name: SonarQube Scan @@ -121,7 +92,7 @@ pipeline: type: repository detection: auto auth: - access_token: <+pipeline.variables.sonarqube_token> + access_token: <+secrets.getValue("sonarqube-token")> tool: project_key: <+codebase.repoName> branch_name: <+codebase.branch> @@ -129,7 +100,7 @@ pipeline: pull_request_branch: <+codebase.targetBranch> pull_request_base: <+codebase.sourceBranch> settings: - sonar.host.url: <+pipeline.variables.sonarqube_host> + sonar.host.url: https://sonar.harness.io/ sonar.qualitygate.wait: true sonar.branch.name: <+codebase.branch> sonar.pullrequest.key: <+codebase.prNumber> From 94c26c708abdd906cb00414eddcaab333cf7071e Mon Sep 17 00:00:00 2001 From: Bilal Al-Shahwany Date: Wed, 4 Feb 2026 04:12:08 +0000 Subject: [PATCH 056/155] Update pipeline python-client --- .../Harness_Split/pipelines/pythonclient.yaml | 62 +++++-------------- 1 file changed, 16 insertions(+), 46 deletions(-) diff --git a/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml b/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml index 82816f3c..19334cc0 100644 --- a/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml +++ b/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml @@ -36,20 +36,22 @@ pipeline: execution: steps: - step: - type: Run - name: Verify Python Installation - identifier: verify_python + type: Sonarqube + name: Sonarqube + identifier: Sonarqube spec: - connectorRef: account.harnessImage - image: python:3.7.16-alpine - shell: Sh - command: |- - # Python is already installed in this image - python --version - pip --version - outputVariables: - - name: PYTHON_VERSION - timeout: 2m + mode: orchestration + config: default + target: + type: repository + detection: auto + advanced: + log: + level: info + auth: + access_token: <+secrets.getValue("sonarqube-token")> + domain: https://sonar.harness.io/ + ssl: true - step: timeout: 30m type: Test @@ -80,39 +82,7 @@ pipeline: envVariables: PYTHONPATH: ${PYTHONPATH}:. PYTEST_ADDOPTS: "--verbose" - - step: - identifier: sonarqube_scan - name: SonarQube Scan - type: Sonarqube - timeout: 10m - spec: - mode: orchestration - config: default - target: - type: repository - detection: auto - auth: - access_token: <+secrets.getValue("sonarqube-token")> - tool: - project_key: <+codebase.repoName> - branch_name: <+codebase.branch> - pull_request_key: <+codebase.prNumber> - pull_request_branch: <+codebase.targetBranch> - pull_request_base: <+codebase.sourceBranch> - settings: - sonar.host.url: https://sonar.harness.io/ - sonar.qualitygate.wait: true - sonar.branch.name: <+codebase.branch> - sonar.pullrequest.key: <+codebase.prNumber> - sonar.pullrequest.branch: <+codebase.targetBranch> - sonar.pullrequest.base: <+codebase.sourceBranch> - strategy: - when: <+codebase.prNumber != ""> - matrix: - config: - - default - - branch-scan - rollbackSteps: [] + rollbackSteps: [] caching: enabled: false paths: [] From 06ab212d534666b00c2d4659deffb473419a40ca Mon Sep 17 00:00:00 2001 From: Bilal Al-Shahwany Date: Wed, 4 Feb 2026 04:25:58 +0000 Subject: [PATCH 057/155] Update pipeline python-client --- .../Harness_Split/pipelines/pythonclient.yaml | 32 +++++++++++++++++++ 1 file changed, 32 insertions(+) diff --git a/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml b/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml index 19334cc0..fcb35216 100644 --- a/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml +++ b/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml @@ -52,6 +52,38 @@ pipeline: access_token: <+secrets.getValue("sonarqube-token")> domain: https://sonar.harness.io/ ssl: true + - step: + type: Run + name: Post Quality Gate to GitHub + identifier: Post_Quality_Gate_to_GitHub + spec: + shell: Sh + command: |- + # Get SonarQube quality gate status + QUALITY_GATE_STATUS=$(curl -s -u <+secrets.getValue("sonarqube_token")>: \ + "https://sonar.harness.io/api/qualitygates/project_status?projectKey=python-client&pullRequest=<+codebase.prNumber>" \ + | jq -r '.projectStatus.status') + + # Set GitHub status based on quality gate + if [ "$QUALITY_GATE_STATUS" = "OK" ]; then + STATE="success" + DESCRIPTION="SonarQube Quality Gate passed" + else + STATE="failure" + DESCRIPTION="SonarQube Quality Gate failed" + fi + + # Post status to GitHub + curl -X POST \ + -H "Authorization: token <+secrets.getValue("github_token")>" \ + -H "Content-Type: application/json" \ + -d "{ + \"state\": \"$STATE\", + \"description\": \"$DESCRIPTION\", + \"context\": \"sonarqube/qualitygate\", + \"target_url\": \"https://sonar.harness.io/dashboard?id=python-client&pullRequest=<+codebase.prNumber>\" + }" \ + "https://api.github.com/repos/splitio/python-client/statuses/<+codebase.commitSha>" - step: timeout: 30m type: Test From 70e64352df433d32fa0abcf659a53c13f8f2f985 Mon Sep 17 00:00:00 2001 From: Bilal Al-Shahwany Date: Tue, 3 Feb 2026 20:35:19 -0800 Subject: [PATCH 058/155] remove github actions --- .github/workflows/ci.yml | 74 ----------------------- .github/workflows/update-license-year.yml | 45 -------------- 2 files changed, 119 deletions(-) delete mode 100644 .github/workflows/ci.yml delete mode 100644 .github/workflows/update-license-year.yml diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml deleted file mode 100644 index df28cd54..00000000 --- a/.github/workflows/ci.yml +++ /dev/null @@ -1,74 +0,0 @@ -name: ci -on: - push: - branches: - - master - - development - pull_request: - branches: - - master - - development - -concurrency: - group: ${{ github.workflow }}-${{ github.event.pull_request.number }} - cancel-in-progress: true - -jobs: - test: - name: Test - runs-on: ubuntu-22.04 - services: - redis: - image: redis - ports: - - 6379:6379 - steps: - - name: Checkout code - uses: actions/checkout@v5 - with: - fetch-depth: 0 - - - name: Setup Python - uses: actions/setup-python@v6 - with: - python-version: '3.7.16' - - - name: Install dependencies - run: | - sudo apt update - sudo apt-get install -y libkrb5-dev - pip install -U setuptools pip wheel - pip install -e .[cpphash,redis,uwsgi] - - - name: Run tests - run: python setup.py test - - - name: Set VERSION env - run: echo "VERSION=$(cat splitio/version.py | grep "__version__" | awk -F\' '{print $2}')" >> $GITHUB_ENV - - - name: SonarQube Scan (Push) - if: github.event_name == 'push' - uses: SonarSource/sonarqube-scan-action@v6 - env: - SONAR_TOKEN: ${{ secrets.SONARQUBE_TOKEN }} - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - with: - projectBaseDir: . - args: > - -Dsonar.host.url=${{ secrets.SONARQUBE_HOST }} - -Dsonar.projectVersion=${{ env.VERSION }} - - - name: SonarQube Scan (Pull Request) - if: github.event_name == 'pull_request' - uses: SonarSource/sonarqube-scan-action@v6 - env: - SONAR_TOKEN: ${{ secrets.SONARQUBE_TOKEN }} - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - with: - projectBaseDir: . - args: > - -Dsonar.host.url=${{ secrets.SONARQUBE_HOST }} - -Dsonar.projectVersion=${{ env.VERSION }} - -Dsonar.pullrequest.key=${{ github.event.pull_request.number }} - -Dsonar.pullrequest.branch=${{ github.event.pull_request.head.ref }} - -Dsonar.pullrequest.base=${{ github.event.pull_request.base.ref }} diff --git a/.github/workflows/update-license-year.yml b/.github/workflows/update-license-year.yml deleted file mode 100644 index 884edbe9..00000000 --- a/.github/workflows/update-license-year.yml +++ /dev/null @@ -1,45 +0,0 @@ -name: Update License Year - -on: - schedule: - - cron: "0 3 1 1 *" # 03:00 AM on January 1 - -permissions: - contents: write - pull-requests: write - -jobs: - test: - runs-on: ubuntu-latest - steps: - - name: Checkout - uses: actions/checkout@v4 - with: - fetch-depth: 0 - - - name: Set Current year - run: "echo CURRENT=$(date +%Y) >> $GITHUB_ENV" - - - name: Set Previous Year - run: "echo PREVIOUS=$(($CURRENT-1)) >> $GITHUB_ENV" - - - name: Update LICENSE - uses: jacobtomlinson/gha-find-replace@v3 - with: - find: ${{ env.PREVIOUS }} - replace: ${{ env.CURRENT }} - include: "LICENSE.txt" - regex: false - - - name: Commit files - run: | - git config user.name 'github-actions[bot]' - git config user.email 'github-actions[bot]@users.noreply.github.com' - git commit -m "Updated License Year" -a - - - name: Create Pull Request - uses: peter-evans/create-pull-request@v5 - with: - token: ${{ secrets.GITHUB_TOKEN }} - title: Update License Year - branch: update-license From df8d5f3e8c31de4490515fb7a03925ff71b7e5e6 Mon Sep 17 00:00:00 2001 From: Bilal Al-Shahwany Date: Wed, 4 Feb 2026 05:13:59 +0000 Subject: [PATCH 059/155] Update pipeline python-client --- .../Harness_Split/pipelines/pythonclient.yaml | 39 ++++++++++++------- 1 file changed, 24 insertions(+), 15 deletions(-) diff --git a/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml b/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml index fcb35216..e2fcbc06 100644 --- a/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml +++ b/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml @@ -36,22 +36,31 @@ pipeline: execution: steps: - step: - type: Sonarqube - name: Sonarqube - identifier: Sonarqube + type: Run + name: SonarQube PR Analysis + identifier: sonarqube_pr_analysis spec: - mode: orchestration - config: default - target: - type: repository - detection: auto - advanced: - log: - level: info - auth: - access_token: <+secrets.getValue("sonarqube-token")> - domain: https://sonar.harness.io/ - ssl: true + shell: Sh + command: | + if [ "<+codebase.prNumber>" != "" ]; then + # Pull Request Analysis + sonar-scanner \ + -Dsonar.projectKey=python-client \ + -Dsonar.sources=. \ + -Dsonar.host.url="https://sonar.harness.io/" \ + -Dsonar.login=<+secrets.getValue("sonarqube-token")> \ + -Dsonar.pullrequest.key=<+codebase.prNumber> \ + -Dsonar.pullrequest.branch=<+codebase.sourceBranch> \ + -Dsonar.pullrequest.base=<+codebase.targetBranch> + else + # Branch Analysis + sonar-scanner \ + -Dsonar.projectKey=python-client \ + -Dsonar.sources=. \ + -Dsonar.host.url="https://sonar.harness.io/" \ + -Dsonar.login=<+secrets.getValue("sonarqube-token")> \ + -Dsonar.branch.name=<+codebase.branch> + fi - step: type: Run name: Post Quality Gate to GitHub From 14f34fbd77d7685073202e3e2b87b72a997c3af5 Mon Sep 17 00:00:00 2001 From: Bilal Al-Shahwany Date: Wed, 4 Feb 2026 05:23:37 +0000 Subject: [PATCH 060/155] Update pipeline python-client --- .../Harness_Split/pipelines/pythonclient.yaml | 31 ++++++++++++++++++- 1 file changed, 30 insertions(+), 1 deletion(-) diff --git a/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml b/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml index e2fcbc06..2dd2ea72 100644 --- a/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml +++ b/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml @@ -35,6 +35,34 @@ pipeline: arch: Amd64 execution: steps: + - step: + type: Run + name: Install SonarQube Scanner + identifier: install_sonarqube_scanner + spec: + connectorRef: account.harnessImage + image: alpine + shell: Bash + command: | + # Download and install SonarQube Scanner + wget https://binaries.sonarsource.com/Distribution/sonar-scanner-cli/sonar-scanner-cli-4.7.0.2747-linux.zip + unzip sonar-scanner-cli-4.7.0.2747-linux.zip + mv sonar-scanner-4.7.0.2747-linux /opt/sonar-scanner + + # Add SonarQube Scanner to PATH + export PATH="$PATH:/opt/sonar-scanner/bin" + echo "export PATH=\"$PATH:/opt/sonar-scanner/bin\"" >> $HOME/.bashrc + + # Verify installation + sonar-scanner --version + + # Export the PATH as an output variable + export SONAR_SCANNER_PATH="/opt/sonar-scanner/bin" + envVariables: + SONAR_TOKEN: <+pipeline.variables.sonarqube_token> + outputVariables: + - name: SONAR_SCANNER_PATH + timeout: 10m - step: type: Run name: SonarQube PR Analysis @@ -123,6 +151,7 @@ pipeline: envVariables: PYTHONPATH: ${PYTHONPATH}:. PYTEST_ADDOPTS: "--verbose" + rollbackSteps: [] rollbackSteps: [] caching: enabled: false @@ -130,4 +159,4 @@ pipeline: buildIntelligence: enabled: false description: "" - description: This pipeline was updated by Harness AI on 2026-02-03 04:38:30 UTC by Bilal Al-Shahwany. + description: This pipeline was updated by Harness AI on 2026-02-04 05:22:48 UTC by Bilal Al-Shahwany. From f58cb4b7887a9d8dc9c6e8d74e0fd1f91aedb019 Mon Sep 17 00:00:00 2001 From: Bilal Al-Shahwany Date: Wed, 4 Feb 2026 05:27:52 +0000 Subject: [PATCH 061/155] Update pipeline python-client --- .../PROD/projects/Harness_Split/pipelines/pythonclient.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml b/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml index 2dd2ea72..4546dab7 100644 --- a/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml +++ b/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml @@ -42,7 +42,7 @@ pipeline: spec: connectorRef: account.harnessImage image: alpine - shell: Bash + shell: Sh command: | # Download and install SonarQube Scanner wget https://binaries.sonarsource.com/Distribution/sonar-scanner-cli/sonar-scanner-cli-4.7.0.2747-linux.zip From ebeb75ca91b80537ea40695d2bd822d68324c5ce Mon Sep 17 00:00:00 2001 From: Bilal Al-Shahwany Date: Wed, 4 Feb 2026 05:34:45 +0000 Subject: [PATCH 062/155] Update pipeline python-client --- .../orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml b/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml index 4546dab7..ba1afb26 100644 --- a/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml +++ b/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml @@ -44,6 +44,7 @@ pipeline: image: alpine shell: Sh command: | + apk add unzip # Download and install SonarQube Scanner wget https://binaries.sonarsource.com/Distribution/sonar-scanner-cli/sonar-scanner-cli-4.7.0.2747-linux.zip unzip sonar-scanner-cli-4.7.0.2747-linux.zip From c174338ae3ffa96bb5cde01bbaedf1ebd0897d4b Mon Sep 17 00:00:00 2001 From: Bilal Al-Shahwany Date: Wed, 4 Feb 2026 05:37:58 +0000 Subject: [PATCH 063/155] Update pipeline python-client --- .../PROD/projects/Harness_Split/pipelines/pythonclient.yaml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml b/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml index ba1afb26..7249d4b1 100644 --- a/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml +++ b/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml @@ -45,6 +45,8 @@ pipeline: shell: Sh command: | apk add unzip + apk add openjdk21-jre-headless + # Download and install SonarQube Scanner wget https://binaries.sonarsource.com/Distribution/sonar-scanner-cli/sonar-scanner-cli-4.7.0.2747-linux.zip unzip sonar-scanner-cli-4.7.0.2747-linux.zip From bea06aa42ab0b85e357a02fb6f3291de7aa1a661 Mon Sep 17 00:00:00 2001 From: Bilal Al-Shahwany Date: Wed, 4 Feb 2026 05:44:01 +0000 Subject: [PATCH 064/155] Update pipeline python-client --- .../PROD/projects/Harness_Split/pipelines/pythonclient.yaml | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml b/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml index 7249d4b1..74dca913 100644 --- a/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml +++ b/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml @@ -45,7 +45,6 @@ pipeline: shell: Sh command: | apk add unzip - apk add openjdk21-jre-headless # Download and install SonarQube Scanner wget https://binaries.sonarsource.com/Distribution/sonar-scanner-cli/sonar-scanner-cli-4.7.0.2747-linux.zip @@ -55,7 +54,7 @@ pipeline: # Add SonarQube Scanner to PATH export PATH="$PATH:/opt/sonar-scanner/bin" echo "export PATH=\"$PATH:/opt/sonar-scanner/bin\"" >> $HOME/.bashrc - + ls -ail /opt/sonar-scanner/jre/bin/ # Verify installation sonar-scanner --version From fedb9930bc90b768dd78ed9f2a45648cf92a2a0d Mon Sep 17 00:00:00 2001 From: Bilal Al-Shahwany Date: Wed, 4 Feb 2026 05:50:11 +0000 Subject: [PATCH 065/155] Update pipeline python-client --- .../PROD/projects/Harness_Split/pipelines/pythonclient.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml b/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml index 74dca913..ef9f03a8 100644 --- a/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml +++ b/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml @@ -54,7 +54,7 @@ pipeline: # Add SonarQube Scanner to PATH export PATH="$PATH:/opt/sonar-scanner/bin" echo "export PATH=\"$PATH:/opt/sonar-scanner/bin\"" >> $HOME/.bashrc - ls -ail /opt/sonar-scanner/jre/bin/ + /opt/sonar-scanner/jre/bin/java -version # Verify installation sonar-scanner --version From af11efd615a86b137d421378cc67dd0d4e0dd0be Mon Sep 17 00:00:00 2001 From: Bilal Al-Shahwany Date: Wed, 4 Feb 2026 05:52:47 +0000 Subject: [PATCH 066/155] Update pipeline python-client --- .../PROD/projects/Harness_Split/pipelines/pythonclient.yaml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml b/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml index ef9f03a8..fe3229eb 100644 --- a/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml +++ b/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml @@ -54,6 +54,8 @@ pipeline: # Add SonarQube Scanner to PATH export PATH="$PATH:/opt/sonar-scanner/bin" echo "export PATH=\"$PATH:/opt/sonar-scanner/bin\"" >> $HOME/.bashrc + ls -ail /opt/sonar-scanner/jre/bin/ + ls -ail /opt/sonar-scanner/jre/bin/java /opt/sonar-scanner/jre/bin/java -version # Verify installation sonar-scanner --version From c38a45922ad039bb71c1d6905f0eafbf79d0663b Mon Sep 17 00:00:00 2001 From: Bilal Al-Shahwany Date: Wed, 4 Feb 2026 17:14:16 +0000 Subject: [PATCH 067/155] Update pipeline python-client --- .../projects/Harness_Split/pipelines/pythonclient.yaml | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml b/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml index fe3229eb..8dc86623 100644 --- a/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml +++ b/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml @@ -54,9 +54,10 @@ pipeline: # Add SonarQube Scanner to PATH export PATH="$PATH:/opt/sonar-scanner/bin" echo "export PATH=\"$PATH:/opt/sonar-scanner/bin\"" >> $HOME/.bashrc - ls -ail /opt/sonar-scanner/jre/bin/ - ls -ail /opt/sonar-scanner/jre/bin/java - /opt/sonar-scanner/jre/bin/java -version + + cd /opt/sonar-scanner/jre/bin/ + ls -ail + java -version # Verify installation sonar-scanner --version From 3e23e8701ad1fd89ab11864f1102f3f792d3e757 Mon Sep 17 00:00:00 2001 From: Bilal Al-Shahwany Date: Wed, 4 Feb 2026 17:17:03 +0000 Subject: [PATCH 068/155] Update pipeline python-client --- .../PROD/projects/Harness_Split/pipelines/pythonclient.yaml | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml b/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml index 8dc86623..9efea416 100644 --- a/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml +++ b/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml @@ -55,9 +55,8 @@ pipeline: export PATH="$PATH:/opt/sonar-scanner/bin" echo "export PATH=\"$PATH:/opt/sonar-scanner/bin\"" >> $HOME/.bashrc - cd /opt/sonar-scanner/jre/bin/ - ls -ail - java -version + chmon 777 /opt/sonar-scanner/jre/bin/java + /opt/sonar-scanner/jre/bin/java -version # Verify installation sonar-scanner --version From 3d84f155597149ec49572455649668e57e79116f Mon Sep 17 00:00:00 2001 From: Bilal Al-Shahwany Date: Wed, 4 Feb 2026 17:19:19 +0000 Subject: [PATCH 069/155] Update pipeline python-client --- .../PROD/projects/Harness_Split/pipelines/pythonclient.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml b/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml index 9efea416..80678dac 100644 --- a/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml +++ b/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml @@ -55,7 +55,7 @@ pipeline: export PATH="$PATH:/opt/sonar-scanner/bin" echo "export PATH=\"$PATH:/opt/sonar-scanner/bin\"" >> $HOME/.bashrc - chmon 777 /opt/sonar-scanner/jre/bin/java + chmod 777 /opt/sonar-scanner/jre/bin/java /opt/sonar-scanner/jre/bin/java -version # Verify installation sonar-scanner --version From 3836f8e9bdf24ede26f535c9983ce2eaf48b1ada Mon Sep 17 00:00:00 2001 From: Bilal Al-Shahwany Date: Wed, 4 Feb 2026 17:23:08 +0000 Subject: [PATCH 070/155] Update pipeline python-client --- .../PROD/projects/Harness_Split/pipelines/pythonclient.yaml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml b/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml index 80678dac..ea32eb7b 100644 --- a/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml +++ b/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml @@ -56,6 +56,8 @@ pipeline: echo "export PATH=\"$PATH:/opt/sonar-scanner/bin\"" >> $HOME/.bashrc chmod 777 /opt/sonar-scanner/jre/bin/java + chmod +x /opt/sonar-scanner/jre/bin/java + echo "checking java version" /opt/sonar-scanner/jre/bin/java -version # Verify installation sonar-scanner --version From 38e459ea0c68b049913d31ae9e8efcb79c6206aa Mon Sep 17 00:00:00 2001 From: Bilal Al-Shahwany Date: Wed, 4 Feb 2026 17:28:03 +0000 Subject: [PATCH 071/155] Update pipeline python-client --- .../orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml b/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml index ea32eb7b..7a121ca0 100644 --- a/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml +++ b/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml @@ -45,6 +45,7 @@ pipeline: shell: Sh command: | apk add unzip + apk add --no-cache libc6-compat # Download and install SonarQube Scanner wget https://binaries.sonarsource.com/Distribution/sonar-scanner-cli/sonar-scanner-cli-4.7.0.2747-linux.zip From 472661c435e6704320473b2b5995a674259f7e0e Mon Sep 17 00:00:00 2001 From: Bilal Al-Shahwany Date: Wed, 4 Feb 2026 17:30:32 +0000 Subject: [PATCH 072/155] Update pipeline python-client --- .../orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml b/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml index 7a121ca0..e88d3da1 100644 --- a/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml +++ b/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml @@ -46,6 +46,7 @@ pipeline: command: | apk add unzip apk add --no-cache libc6-compat + apk add --no-cache gcompat # Download and install SonarQube Scanner wget https://binaries.sonarsource.com/Distribution/sonar-scanner-cli/sonar-scanner-cli-4.7.0.2747-linux.zip From 8c23ba1ec7a8ee8e0bb33fb3691dce632a847517 Mon Sep 17 00:00:00 2001 From: Bilal Al-Shahwany Date: Wed, 4 Feb 2026 17:33:54 +0000 Subject: [PATCH 073/155] Update pipeline python-client --- .../PROD/projects/Harness_Split/pipelines/pythonclient.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml b/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml index e88d3da1..937b1696 100644 --- a/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml +++ b/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml @@ -41,7 +41,7 @@ pipeline: identifier: install_sonarqube_scanner spec: connectorRef: account.harnessImage - image: alpine + image: eclipse-temurin:21-jdk-alpine shell: Sh command: | apk add unzip From ddbc217af008c2f549b7ae0ba7b3da72ab8bd253 Mon Sep 17 00:00:00 2001 From: Bilal Al-Shahwany Date: Wed, 4 Feb 2026 17:37:42 +0000 Subject: [PATCH 074/155] Update pipeline python-client --- .../PROD/projects/Harness_Split/pipelines/pythonclient.yaml | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml b/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml index 937b1696..c15a1524 100644 --- a/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml +++ b/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml @@ -41,12 +41,10 @@ pipeline: identifier: install_sonarqube_scanner spec: connectorRef: account.harnessImage - image: eclipse-temurin:21-jdk-alpine + image: eclipse-temurin:21-jdk shell: Sh command: | apk add unzip - apk add --no-cache libc6-compat - apk add --no-cache gcompat # Download and install SonarQube Scanner wget https://binaries.sonarsource.com/Distribution/sonar-scanner-cli/sonar-scanner-cli-4.7.0.2747-linux.zip From a262d5fdbb87e8dee6ea07c9e50b7ab1aa3398d7 Mon Sep 17 00:00:00 2001 From: Bilal Al-Shahwany Date: Wed, 4 Feb 2026 17:42:26 +0000 Subject: [PATCH 075/155] Update pipeline python-client --- .../Harness_Split/pipelines/pythonclient.yaml | 27 ++++++++++--------- 1 file changed, 14 insertions(+), 13 deletions(-) diff --git a/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml b/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml index c15a1524..ba15b762 100644 --- a/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml +++ b/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml @@ -42,23 +42,24 @@ pipeline: spec: connectorRef: account.harnessImage image: eclipse-temurin:21-jdk - shell: Sh + shell: Bash command: | - apk add unzip - # Download and install SonarQube Scanner - wget https://binaries.sonarsource.com/Distribution/sonar-scanner-cli/sonar-scanner-cli-4.7.0.2747-linux.zip - unzip sonar-scanner-cli-4.7.0.2747-linux.zip - mv sonar-scanner-4.7.0.2747-linux /opt/sonar-scanner + apt-get update && apt-get install -y curl unzip && rm -rf /var/lib/apt/lists/* + + # Define SonarScanner version + export SONAR_SCANNER_VERSION=5.0.1.3000 + export SONAR_SCANNER_HOME=/opt/sonar-scanner + + # Download, unzip, and clean up SonarScanner CLI + curl -sSL https://binaries.sonarsource.com{SONAR_SCANNER_VERSION}-linux.zip -o sonar-scanner.zip \ + && unzip sonar-scanner.zip -d /opt \ + && mv /opt/sonar-scanner-${SONAR_SCANNER_VERSION}-linux $SONAR_SCANNER_HOME \ + && rm sonar-scanner.zip - # Add SonarQube Scanner to PATH - export PATH="$PATH:/opt/sonar-scanner/bin" - echo "export PATH=\"$PATH:/opt/sonar-scanner/bin\"" >> $HOME/.bashrc + # Add SonarScanner to the PATH environment variable + export PATH="${SONAR_SCANNER_HOME}/bin:${PATH}" - chmod 777 /opt/sonar-scanner/jre/bin/java - chmod +x /opt/sonar-scanner/jre/bin/java - echo "checking java version" - /opt/sonar-scanner/jre/bin/java -version # Verify installation sonar-scanner --version From 79dfbbb9a3d48963320078032c65b06b2c0d3865 Mon Sep 17 00:00:00 2001 From: Bilal Al-Shahwany Date: Wed, 4 Feb 2026 17:45:09 +0000 Subject: [PATCH 076/155] Update pipeline python-client --- .../PROD/projects/Harness_Split/pipelines/pythonclient.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml b/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml index ba15b762..806bb19f 100644 --- a/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml +++ b/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml @@ -52,7 +52,7 @@ pipeline: export SONAR_SCANNER_HOME=/opt/sonar-scanner # Download, unzip, and clean up SonarScanner CLI - curl -sSL https://binaries.sonarsource.com{SONAR_SCANNER_VERSION}-linux.zip -o sonar-scanner.zip \ + curl -sSL https://binaries.sonarsource.com/{SONAR_SCANNER_VERSION}-linux.zip -o sonar-scanner.zip \ && unzip sonar-scanner.zip -d /opt \ && mv /opt/sonar-scanner-${SONAR_SCANNER_VERSION}-linux $SONAR_SCANNER_HOME \ && rm sonar-scanner.zip From 0c0d2ce8770b38bbd887fc6bc497deff6bbf004f Mon Sep 17 00:00:00 2001 From: Bilal Al-Shahwany Date: Wed, 4 Feb 2026 17:57:29 +0000 Subject: [PATCH 077/155] Update pipeline python-client --- .../Harness_Split/pipelines/pythonclient.yaml | 14 ++++---------- 1 file changed, 4 insertions(+), 10 deletions(-) diff --git a/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml b/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml index 806bb19f..7af68058 100644 --- a/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml +++ b/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml @@ -44,18 +44,12 @@ pipeline: image: eclipse-temurin:21-jdk shell: Bash command: | - apt-get update && apt-get install -y curl unzip && rm -rf /var/lib/apt/lists/* - # Define SonarScanner version - export SONAR_SCANNER_VERSION=5.0.1.3000 - export SONAR_SCANNER_HOME=/opt/sonar-scanner - - # Download, unzip, and clean up SonarScanner CLI - curl -sSL https://binaries.sonarsource.com/{SONAR_SCANNER_VERSION}-linux.zip -o sonar-scanner.zip \ - && unzip sonar-scanner.zip -d /opt \ - && mv /opt/sonar-scanner-${SONAR_SCANNER_VERSION}-linux $SONAR_SCANNER_HOME \ - && rm sonar-scanner.zip + cd /opt + wget https://binaries.sonarsource.com/Distribution/sonar-scanner-cli/sonar-scanner-cli-5.0.1.3006-linux.zip + unzip sonar-scanner-cli-*.zip + mv sonar-scanner-5.0.1.3006-linux sonar-scanner # Add SonarScanner to the PATH environment variable export PATH="${SONAR_SCANNER_HOME}/bin:${PATH}" From 00eb5660a72214152b3b62889df25d62f5bea287 Mon Sep 17 00:00:00 2001 From: Bilal Al-Shahwany Date: Wed, 4 Feb 2026 18:12:24 +0000 Subject: [PATCH 078/155] Update pipeline python-client --- .../Harness_Split/pipelines/pythonclient.yaml | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml b/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml index 7af68058..f8faa423 100644 --- a/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml +++ b/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml @@ -41,17 +41,19 @@ pipeline: identifier: install_sonarqube_scanner spec: connectorRef: account.harnessImage - image: eclipse-temurin:21-jdk + image: Ubuntu shell: Bash command: | - apt-get update && apt-get install -y curl unzip && rm -rf /var/lib/apt/lists/* + apt-get update && apt-get install -y curl unzip + SONAR_SCANNER_VERSION="4.8.0.2856" + mkdir -p /opt/sonar-scanner - cd /opt - wget https://binaries.sonarsource.com/Distribution/sonar-scanner-cli/sonar-scanner-cli-5.0.1.3006-linux.zip - unzip sonar-scanner-cli-*.zip - mv sonar-scanner-5.0.1.3006-linux sonar-scanner + curl -sSLo sonar-scanner.zip https://binaries.sonarsource.com/Distribution/sonar-scanner-cli/sonar-scanner-cli-${SONAR_SCANNER_VERSION}.zip + unzip sonar-scanner.zip -d /opt + mv /opt/sonar-scanner-${SONAR_SCANNER_VERSION} /opt/sonar-scanner # Add SonarScanner to the PATH environment variable + export SONAR_SCANNER_HOME="/opt/sonar-scanner" export PATH="${SONAR_SCANNER_HOME}/bin:${PATH}" # Verify installation From 1471bb79b18406ea8f3878f2c363b92459c34bcf Mon Sep 17 00:00:00 2001 From: Bilal Al-Shahwany Date: Wed, 4 Feb 2026 18:17:04 +0000 Subject: [PATCH 079/155] Update pipeline python-client --- .../PROD/projects/Harness_Split/pipelines/pythonclient.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml b/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml index f8faa423..d1fdd0fa 100644 --- a/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml +++ b/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml @@ -41,7 +41,7 @@ pipeline: identifier: install_sonarqube_scanner spec: connectorRef: account.harnessImage - image: Ubuntu + image: ubuntu shell: Bash command: | apt-get update && apt-get install -y curl unzip From 482c5076646dbb2c0ea7876df37900fb7903ec7d Mon Sep 17 00:00:00 2001 From: Bilal Al-Shahwany Date: Wed, 4 Feb 2026 18:26:15 +0000 Subject: [PATCH 080/155] Update pipeline python-client --- .../PROD/projects/Harness_Split/pipelines/pythonclient.yaml | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml b/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml index d1fdd0fa..0df8a72e 100644 --- a/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml +++ b/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml @@ -51,13 +51,15 @@ pipeline: curl -sSLo sonar-scanner.zip https://binaries.sonarsource.com/Distribution/sonar-scanner-cli/sonar-scanner-cli-${SONAR_SCANNER_VERSION}.zip unzip sonar-scanner.zip -d /opt mv /opt/sonar-scanner-${SONAR_SCANNER_VERSION} /opt/sonar-scanner + echo "sonnar is moved" # Add SonarScanner to the PATH environment variable export SONAR_SCANNER_HOME="/opt/sonar-scanner" export PATH="${SONAR_SCANNER_HOME}/bin:${PATH}" # Verify installation - sonar-scanner --version + ls -ail /opt/sonar-scanner/bin + /opt/sonar-scanner/bin/sonar-scanner --version # Export the PATH as an output variable export SONAR_SCANNER_PATH="/opt/sonar-scanner/bin" From b8db2c2fa5c9c2949f8df25fb93d8c2ec9cb1959 Mon Sep 17 00:00:00 2001 From: Bilal Al-Shahwany Date: Wed, 4 Feb 2026 18:29:21 +0000 Subject: [PATCH 081/155] Update pipeline python-client --- .../PROD/projects/Harness_Split/pipelines/pythonclient.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml b/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml index 0df8a72e..5d8156de 100644 --- a/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml +++ b/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml @@ -58,7 +58,7 @@ pipeline: export PATH="${SONAR_SCANNER_HOME}/bin:${PATH}" # Verify installation - ls -ail /opt/sonar-scanner/bin + ls -ail /opt/sonar-scanner /opt/sonar-scanner/bin/sonar-scanner --version # Export the PATH as an output variable From 5309aa4bfb4aa6352ab187cf0cf6fdf8b6258fe0 Mon Sep 17 00:00:00 2001 From: Bilal Al-Shahwany Date: Wed, 4 Feb 2026 18:38:28 +0000 Subject: [PATCH 082/155] Update pipeline python-client --- .../projects/Harness_Split/pipelines/pythonclient.yaml | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml b/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml index 5d8156de..9efcd26b 100644 --- a/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml +++ b/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml @@ -50,13 +50,14 @@ pipeline: curl -sSLo sonar-scanner.zip https://binaries.sonarsource.com/Distribution/sonar-scanner-cli/sonar-scanner-cli-${SONAR_SCANNER_VERSION}.zip unzip sonar-scanner.zip -d /opt - mv /opt/sonar-scanner-${SONAR_SCANNER_VERSION} /opt/sonar-scanner - echo "sonnar is moved" + # Add SonarScanner to the PATH environment variable export SONAR_SCANNER_HOME="/opt/sonar-scanner" export PATH="${SONAR_SCANNER_HOME}/bin:${PATH}" - + + mv sonar-scanner-4.8.0.2856 /opt/sonar-scanner + echo "sonnar is moved" # Verify installation ls -ail /opt/sonar-scanner /opt/sonar-scanner/bin/sonar-scanner --version From b2e4920986266844da4f22caae3e50b4367cd783 Mon Sep 17 00:00:00 2001 From: Bilal Al-Shahwany Date: Wed, 4 Feb 2026 18:41:15 +0000 Subject: [PATCH 083/155] Update pipeline python-client --- .../PROD/projects/Harness_Split/pipelines/pythonclient.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml b/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml index 9efcd26b..55d0ecec 100644 --- a/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml +++ b/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml @@ -56,7 +56,7 @@ pipeline: export SONAR_SCANNER_HOME="/opt/sonar-scanner" export PATH="${SONAR_SCANNER_HOME}/bin:${PATH}" - mv sonar-scanner-4.8.0.2856 /opt/sonar-scanner + mv /opt/sonar-scanner-4.8.0.2856 /opt/sonar-scanner echo "sonnar is moved" # Verify installation ls -ail /opt/sonar-scanner From 4a7ffcaa3e36f0564291ca21ab692a366df0a930 Mon Sep 17 00:00:00 2001 From: Bilal Al-Shahwany Date: Wed, 4 Feb 2026 18:46:38 +0000 Subject: [PATCH 084/155] Update pipeline python-client --- .../PROD/projects/Harness_Split/pipelines/pythonclient.yaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml b/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml index 55d0ecec..09305a57 100644 --- a/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml +++ b/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml @@ -60,10 +60,10 @@ pipeline: echo "sonnar is moved" # Verify installation ls -ail /opt/sonar-scanner - /opt/sonar-scanner/bin/sonar-scanner --version + /opt/sonar-scanner-4.8.0.2856/bin/sonar-scanner --version # Export the PATH as an output variable - export SONAR_SCANNER_PATH="/opt/sonar-scanner/bin" + export SONAR_SCANNER_PATH="/opt/sonar-scanner-4.8.0.2856/bin" envVariables: SONAR_TOKEN: <+pipeline.variables.sonarqube_token> outputVariables: From 62e6fb3c385288c34c85e9c6585a539ad1618937 Mon Sep 17 00:00:00 2001 From: Bilal Al-Shahwany Date: Wed, 4 Feb 2026 18:50:40 +0000 Subject: [PATCH 085/155] Update pipeline python-client --- .../PROD/projects/Harness_Split/pipelines/pythonclient.yaml | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml b/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml index 09305a57..906a44a3 100644 --- a/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml +++ b/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml @@ -56,10 +56,8 @@ pipeline: export SONAR_SCANNER_HOME="/opt/sonar-scanner" export PATH="${SONAR_SCANNER_HOME}/bin:${PATH}" - mv /opt/sonar-scanner-4.8.0.2856 /opt/sonar-scanner - echo "sonnar is moved" # Verify installation - ls -ail /opt/sonar-scanner + ls -ail /opt/sonar-scanner-4.8.0.2856/bin/sonar-scanner /opt/sonar-scanner-4.8.0.2856/bin/sonar-scanner --version # Export the PATH as an output variable From 9b095dcb0fd3dda5114f767cf9b6afcad207ad9a Mon Sep 17 00:00:00 2001 From: Bilal Al-Shahwany Date: Wed, 4 Feb 2026 18:53:49 +0000 Subject: [PATCH 086/155] Update pipeline python-client --- .../PROD/projects/Harness_Split/pipelines/pythonclient.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml b/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml index 906a44a3..33190839 100644 --- a/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml +++ b/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml @@ -57,7 +57,7 @@ pipeline: export PATH="${SONAR_SCANNER_HOME}/bin:${PATH}" # Verify installation - ls -ail /opt/sonar-scanner-4.8.0.2856/bin/sonar-scanner + ls -ail /opt/sonar-scanner-4.8.0.2856/bin/ /opt/sonar-scanner-4.8.0.2856/bin/sonar-scanner --version # Export the PATH as an output variable From 49ec6fb5daafd69d3559febf37f2e7d627efbe0a Mon Sep 17 00:00:00 2001 From: Bilal Al-Shahwany Date: Wed, 4 Feb 2026 18:56:49 +0000 Subject: [PATCH 087/155] Update pipeline python-client --- .../PROD/projects/Harness_Split/pipelines/pythonclient.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml b/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml index 33190839..73d7e544 100644 --- a/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml +++ b/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml @@ -57,7 +57,7 @@ pipeline: export PATH="${SONAR_SCANNER_HOME}/bin:${PATH}" # Verify installation - ls -ail /opt/sonar-scanner-4.8.0.2856/bin/ + ls -ail /opt/sonar-scanner-4.8.0.2856/ /opt/sonar-scanner-4.8.0.2856/bin/sonar-scanner --version # Export the PATH as an output variable From eb62627ff38fc9782c34cbf85dc00123e9e83936 Mon Sep 17 00:00:00 2001 From: Bilal Al-Shahwany Date: Wed, 4 Feb 2026 18:59:54 +0000 Subject: [PATCH 088/155] Update pipeline python-client --- .../PROD/projects/Harness_Split/pipelines/pythonclient.yaml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml b/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml index 73d7e544..5f29cbaa 100644 --- a/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml +++ b/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml @@ -45,13 +45,14 @@ pipeline: shell: Bash command: | apt-get update && apt-get install -y curl unzip + apt-get install openjdk-21-jdk + SONAR_SCANNER_VERSION="4.8.0.2856" mkdir -p /opt/sonar-scanner curl -sSLo sonar-scanner.zip https://binaries.sonarsource.com/Distribution/sonar-scanner-cli/sonar-scanner-cli-${SONAR_SCANNER_VERSION}.zip unzip sonar-scanner.zip -d /opt - # Add SonarScanner to the PATH environment variable export SONAR_SCANNER_HOME="/opt/sonar-scanner" export PATH="${SONAR_SCANNER_HOME}/bin:${PATH}" From 7f975c5bb47008ca6916578013975ab88d45b93e Mon Sep 17 00:00:00 2001 From: Bilal Al-Shahwany Date: Wed, 4 Feb 2026 19:02:26 +0000 Subject: [PATCH 089/155] Update pipeline python-client --- .../PROD/projects/Harness_Split/pipelines/pythonclient.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml b/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml index 5f29cbaa..0df2cca2 100644 --- a/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml +++ b/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml @@ -45,7 +45,7 @@ pipeline: shell: Bash command: | apt-get update && apt-get install -y curl unzip - apt-get install openjdk-21-jdk + apt-get install -y openjdk-21-jdk SONAR_SCANNER_VERSION="4.8.0.2856" mkdir -p /opt/sonar-scanner From 517795280f7e61a88812926045f49798fae37d55 Mon Sep 17 00:00:00 2001 From: Bilal Al-Shahwany Date: Wed, 4 Feb 2026 19:05:40 +0000 Subject: [PATCH 090/155] Update pipeline python-client --- .../Harness_Split/pipelines/pythonclient.yaml | 19 ++++++------------- 1 file changed, 6 insertions(+), 13 deletions(-) diff --git a/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml b/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml index 0df2cca2..2ecd7127 100644 --- a/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml +++ b/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml @@ -37,7 +37,7 @@ pipeline: steps: - step: type: Run - name: Install SonarQube Scanner + name: Install and Run SonarQube Scanner identifier: install_sonarqube_scanner spec: connectorRef: account.harnessImage @@ -63,18 +63,6 @@ pipeline: # Export the PATH as an output variable export SONAR_SCANNER_PATH="/opt/sonar-scanner-4.8.0.2856/bin" - envVariables: - SONAR_TOKEN: <+pipeline.variables.sonarqube_token> - outputVariables: - - name: SONAR_SCANNER_PATH - timeout: 10m - - step: - type: Run - name: SonarQube PR Analysis - identifier: sonarqube_pr_analysis - spec: - shell: Sh - command: | if [ "<+codebase.prNumber>" != "" ]; then # Pull Request Analysis sonar-scanner \ @@ -94,6 +82,11 @@ pipeline: -Dsonar.login=<+secrets.getValue("sonarqube-token")> \ -Dsonar.branch.name=<+codebase.branch> fi + envVariables: + SONAR_TOKEN: <+pipeline.variables.sonarqube_token> + outputVariables: + - name: SONAR_SCANNER_PATH + timeout: 10m - step: type: Run name: Post Quality Gate to GitHub From d21e02cb304c3e0137e1d0a5fdd6941d0dbb6523 Mon Sep 17 00:00:00 2001 From: Bilal Al-Shahwany Date: Wed, 4 Feb 2026 19:08:41 +0000 Subject: [PATCH 091/155] Update pipeline python-client --- .../PROD/projects/Harness_Split/pipelines/pythonclient.yaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml b/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml index 2ecd7127..4c9a1dc4 100644 --- a/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml +++ b/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml @@ -65,7 +65,7 @@ pipeline: export SONAR_SCANNER_PATH="/opt/sonar-scanner-4.8.0.2856/bin" if [ "<+codebase.prNumber>" != "" ]; then # Pull Request Analysis - sonar-scanner \ + /opt/sonar-scanner-4.8.0.2856/bin/sonar-scanner \ -Dsonar.projectKey=python-client \ -Dsonar.sources=. \ -Dsonar.host.url="https://sonar.harness.io/" \ @@ -75,7 +75,7 @@ pipeline: -Dsonar.pullrequest.base=<+codebase.targetBranch> else # Branch Analysis - sonar-scanner \ + /opt/sonar-scanner-4.8.0.2856/bin/sonar-scanner \ -Dsonar.projectKey=python-client \ -Dsonar.sources=. \ -Dsonar.host.url="https://sonar.harness.io/" \ From 7c51ff20b5a9c640e5117a228d18baa0eb67c659 Mon Sep 17 00:00:00 2001 From: Bilal Al-Shahwany Date: Wed, 4 Feb 2026 19:12:31 +0000 Subject: [PATCH 092/155] Update pipeline python-client --- .../PROD/projects/Harness_Split/pipelines/pythonclient.yaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml b/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml index 4c9a1dc4..ac392bc2 100644 --- a/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml +++ b/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml @@ -69,7 +69,7 @@ pipeline: -Dsonar.projectKey=python-client \ -Dsonar.sources=. \ -Dsonar.host.url="https://sonar.harness.io/" \ - -Dsonar.login=<+secrets.getValue("sonarqube-token")> \ + -Dsonar.login=<+secrets.getValue('github-devops-token')> \ -Dsonar.pullrequest.key=<+codebase.prNumber> \ -Dsonar.pullrequest.branch=<+codebase.sourceBranch> \ -Dsonar.pullrequest.base=<+codebase.targetBranch> @@ -79,7 +79,7 @@ pipeline: -Dsonar.projectKey=python-client \ -Dsonar.sources=. \ -Dsonar.host.url="https://sonar.harness.io/" \ - -Dsonar.login=<+secrets.getValue("sonarqube-token")> \ + -Dsonar.login=<+secrets.getValue('github-devops-token')> \ -Dsonar.branch.name=<+codebase.branch> fi envVariables: From d4599939bc927f40fb54b283885c9482bf76f945 Mon Sep 17 00:00:00 2001 From: Bilal Al-Shahwany Date: Wed, 4 Feb 2026 19:17:41 +0000 Subject: [PATCH 093/155] Update pipeline python-client --- .../PROD/projects/Harness_Split/pipelines/pythonclient.yaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml b/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml index ac392bc2..20b4ec27 100644 --- a/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml +++ b/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml @@ -69,7 +69,7 @@ pipeline: -Dsonar.projectKey=python-client \ -Dsonar.sources=. \ -Dsonar.host.url="https://sonar.harness.io/" \ - -Dsonar.login=<+secrets.getValue('github-devops-token')> \ + -Dsonar.login=<+secrets.getValue('sonarqube-token')> \ -Dsonar.pullrequest.key=<+codebase.prNumber> \ -Dsonar.pullrequest.branch=<+codebase.sourceBranch> \ -Dsonar.pullrequest.base=<+codebase.targetBranch> @@ -79,7 +79,7 @@ pipeline: -Dsonar.projectKey=python-client \ -Dsonar.sources=. \ -Dsonar.host.url="https://sonar.harness.io/" \ - -Dsonar.login=<+secrets.getValue('github-devops-token')> \ + -Dsonar.login=<+secrets.getValue('sonarqube-token')> \ -Dsonar.branch.name=<+codebase.branch> fi envVariables: From 9ce10cc052e567dcdd5e80a59ec50bc473ee02ec Mon Sep 17 00:00:00 2001 From: Bilal Al-Shahwany Date: Wed, 4 Feb 2026 19:23:01 +0000 Subject: [PATCH 094/155] Update pipeline python-client --- .../projects/Harness_Split/pipelines/pythonclient.yaml | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml b/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml index 20b4ec27..8b4b3c09 100644 --- a/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml +++ b/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml @@ -64,22 +64,23 @@ pipeline: # Export the PATH as an output variable export SONAR_SCANNER_PATH="/opt/sonar-scanner-4.8.0.2856/bin" if [ "<+codebase.prNumber>" != "" ]; then - # Pull Request Analysis + + echo "Pull Request Analysis" /opt/sonar-scanner-4.8.0.2856/bin/sonar-scanner \ -Dsonar.projectKey=python-client \ -Dsonar.sources=. \ -Dsonar.host.url="https://sonar.harness.io/" \ - -Dsonar.login=<+secrets.getValue('sonarqube-token')> \ + -Dsonar.token=<+secrets.getValue('sonarqube-token')> \ -Dsonar.pullrequest.key=<+codebase.prNumber> \ -Dsonar.pullrequest.branch=<+codebase.sourceBranch> \ -Dsonar.pullrequest.base=<+codebase.targetBranch> else - # Branch Analysis + echo "Branch Analysis" /opt/sonar-scanner-4.8.0.2856/bin/sonar-scanner \ -Dsonar.projectKey=python-client \ -Dsonar.sources=. \ -Dsonar.host.url="https://sonar.harness.io/" \ - -Dsonar.login=<+secrets.getValue('sonarqube-token')> \ + -Dsonar.token=<+secrets.getValue('sonarqube-token')> \ -Dsonar.branch.name=<+codebase.branch> fi envVariables: From e8c1b054c552b1d11d6101e9ad6d5719cfbd11ce Mon Sep 17 00:00:00 2001 From: Bilal Al-Shahwany Date: Wed, 4 Feb 2026 19:38:14 +0000 Subject: [PATCH 095/155] Update pipeline python-client --- .../PROD/projects/Harness_Split/pipelines/pythonclient.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml b/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml index 8b4b3c09..494fe3ef 100644 --- a/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml +++ b/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml @@ -66,7 +66,7 @@ pipeline: if [ "<+codebase.prNumber>" != "" ]; then echo "Pull Request Analysis" - /opt/sonar-scanner-4.8.0.2856/bin/sonar-scanner \ + /opt/sonar-scanner-4.8.0.2856/bin/sonar-scanner -X \ -Dsonar.projectKey=python-client \ -Dsonar.sources=. \ -Dsonar.host.url="https://sonar.harness.io/" \ From 287c42b80d91dc66bad45a15ab523aff501df90b Mon Sep 17 00:00:00 2001 From: Bilal Al-Shahwany Date: Wed, 4 Feb 2026 19:42:57 +0000 Subject: [PATCH 096/155] Update pipeline python-client --- .../PROD/projects/Harness_Split/pipelines/pythonclient.yaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml b/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml index 494fe3ef..1ef77f1f 100644 --- a/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml +++ b/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml @@ -68,7 +68,7 @@ pipeline: echo "Pull Request Analysis" /opt/sonar-scanner-4.8.0.2856/bin/sonar-scanner -X \ -Dsonar.projectKey=python-client \ - -Dsonar.sources=. \ + #-Dsonar.sources=. \ -Dsonar.host.url="https://sonar.harness.io/" \ -Dsonar.token=<+secrets.getValue('sonarqube-token')> \ -Dsonar.pullrequest.key=<+codebase.prNumber> \ @@ -78,7 +78,7 @@ pipeline: echo "Branch Analysis" /opt/sonar-scanner-4.8.0.2856/bin/sonar-scanner \ -Dsonar.projectKey=python-client \ - -Dsonar.sources=. \ + #-Dsonar.sources=. \ -Dsonar.host.url="https://sonar.harness.io/" \ -Dsonar.token=<+secrets.getValue('sonarqube-token')> \ -Dsonar.branch.name=<+codebase.branch> From 8bc36571de65acc02327fdd1dc00ecd80dadce7f Mon Sep 17 00:00:00 2001 From: Bilal Al-Shahwany Date: Wed, 4 Feb 2026 19:49:11 +0000 Subject: [PATCH 097/155] Update pipeline python-client --- .../PROD/projects/Harness_Split/pipelines/pythonclient.yaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml b/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml index 1ef77f1f..dae55d6f 100644 --- a/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml +++ b/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml @@ -69,7 +69,7 @@ pipeline: /opt/sonar-scanner-4.8.0.2856/bin/sonar-scanner -X \ -Dsonar.projectKey=python-client \ #-Dsonar.sources=. \ - -Dsonar.host.url="https://sonar.harness.io/" \ + -Dsonar.host.url="https://sonar.harness.io" \ -Dsonar.token=<+secrets.getValue('sonarqube-token')> \ -Dsonar.pullrequest.key=<+codebase.prNumber> \ -Dsonar.pullrequest.branch=<+codebase.sourceBranch> \ @@ -79,7 +79,7 @@ pipeline: /opt/sonar-scanner-4.8.0.2856/bin/sonar-scanner \ -Dsonar.projectKey=python-client \ #-Dsonar.sources=. \ - -Dsonar.host.url="https://sonar.harness.io/" \ + -Dsonar.host.url="https://sonar.harness.io" \ -Dsonar.token=<+secrets.getValue('sonarqube-token')> \ -Dsonar.branch.name=<+codebase.branch> fi From 3497e4459bba82d91d6b7ad4c69ca52b0a607c78 Mon Sep 17 00:00:00 2001 From: Bilal Al-Shahwany Date: Wed, 4 Feb 2026 20:31:18 +0000 Subject: [PATCH 098/155] Update pipeline python-client --- .../PROD/projects/Harness_Split/pipelines/pythonclient.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml b/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml index dae55d6f..cc1cbb02 100644 --- a/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml +++ b/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml @@ -63,8 +63,8 @@ pipeline: # Export the PATH as an output variable export SONAR_SCANNER_PATH="/opt/sonar-scanner-4.8.0.2856/bin" + cat /harness/sonar-project.properties if [ "<+codebase.prNumber>" != "" ]; then - echo "Pull Request Analysis" /opt/sonar-scanner-4.8.0.2856/bin/sonar-scanner -X \ -Dsonar.projectKey=python-client \ From 4e4e61179b5d94df6788d5cb3f8215608b3e4905 Mon Sep 17 00:00:00 2001 From: Bilal Al-Shahwany Date: Wed, 4 Feb 2026 20:35:44 +0000 Subject: [PATCH 099/155] Update pipeline python-client --- .../PROD/projects/Harness_Split/pipelines/pythonclient.yaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml b/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml index cc1cbb02..fd55d677 100644 --- a/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml +++ b/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml @@ -69,7 +69,7 @@ pipeline: /opt/sonar-scanner-4.8.0.2856/bin/sonar-scanner -X \ -Dsonar.projectKey=python-client \ #-Dsonar.sources=. \ - -Dsonar.host.url="https://sonar.harness.io" \ + -Dsonar.host.url=https://sonar.harness.io \ -Dsonar.token=<+secrets.getValue('sonarqube-token')> \ -Dsonar.pullrequest.key=<+codebase.prNumber> \ -Dsonar.pullrequest.branch=<+codebase.sourceBranch> \ @@ -79,7 +79,7 @@ pipeline: /opt/sonar-scanner-4.8.0.2856/bin/sonar-scanner \ -Dsonar.projectKey=python-client \ #-Dsonar.sources=. \ - -Dsonar.host.url="https://sonar.harness.io" \ + -Dsonar.host.url=https://sonar.harness.io \ -Dsonar.token=<+secrets.getValue('sonarqube-token')> \ -Dsonar.branch.name=<+codebase.branch> fi From 98beefb1ca539f77ca9d155400682b9fc5cdb5d9 Mon Sep 17 00:00:00 2001 From: Bilal Al-Shahwany Date: Wed, 4 Feb 2026 20:40:11 +0000 Subject: [PATCH 100/155] Update pipeline python-client --- .../orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml b/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml index fd55d677..fb28cf21 100644 --- a/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml +++ b/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml @@ -63,6 +63,7 @@ pipeline: # Export the PATH as an output variable export SONAR_SCANNER_PATH="/opt/sonar-scanner-4.8.0.2856/bin" + echo "sonar.host.url=https://sonar.harness.io" >> /harness/sonar-project.properties cat /harness/sonar-project.properties if [ "<+codebase.prNumber>" != "" ]; then echo "Pull Request Analysis" From 9ee571c5d88213fdca289afb1b0622ac32f6b167 Mon Sep 17 00:00:00 2001 From: Bilal Al-Shahwany Date: Wed, 4 Feb 2026 20:47:58 +0000 Subject: [PATCH 101/155] Update pipeline python-client --- .../PROD/projects/Harness_Split/pipelines/pythonclient.yaml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml b/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml index fb28cf21..9ae13387 100644 --- a/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml +++ b/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml @@ -41,7 +41,7 @@ pipeline: identifier: install_sonarqube_scanner spec: connectorRef: account.harnessImage - image: ubuntu + image: SonarSource/sonarqube-scan-action@v6 shell: Bash command: | apt-get update && apt-get install -y curl unzip @@ -65,6 +65,7 @@ pipeline: export SONAR_SCANNER_PATH="/opt/sonar-scanner-4.8.0.2856/bin" echo "sonar.host.url=https://sonar.harness.io" >> /harness/sonar-project.properties cat /harness/sonar-project.properties + cd /harness if [ "<+codebase.prNumber>" != "" ]; then echo "Pull Request Analysis" /opt/sonar-scanner-4.8.0.2856/bin/sonar-scanner -X \ From 02c037ff4b39c8793f3957af3be9b76ab46af33b Mon Sep 17 00:00:00 2001 From: Bilal Al-Shahwany Date: Wed, 4 Feb 2026 20:49:22 +0000 Subject: [PATCH 102/155] Update pipeline python-client --- .../Harness_Split/pipelines/pythonclient.yaml | 21 ------------------- 1 file changed, 21 deletions(-) diff --git a/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml b/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml index 9ae13387..8a6b92ce 100644 --- a/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml +++ b/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml @@ -44,27 +44,6 @@ pipeline: image: SonarSource/sonarqube-scan-action@v6 shell: Bash command: | - apt-get update && apt-get install -y curl unzip - apt-get install -y openjdk-21-jdk - - SONAR_SCANNER_VERSION="4.8.0.2856" - mkdir -p /opt/sonar-scanner - - curl -sSLo sonar-scanner.zip https://binaries.sonarsource.com/Distribution/sonar-scanner-cli/sonar-scanner-cli-${SONAR_SCANNER_VERSION}.zip - unzip sonar-scanner.zip -d /opt - - # Add SonarScanner to the PATH environment variable - export SONAR_SCANNER_HOME="/opt/sonar-scanner" - export PATH="${SONAR_SCANNER_HOME}/bin:${PATH}" - - # Verify installation - ls -ail /opt/sonar-scanner-4.8.0.2856/ - /opt/sonar-scanner-4.8.0.2856/bin/sonar-scanner --version - - # Export the PATH as an output variable - export SONAR_SCANNER_PATH="/opt/sonar-scanner-4.8.0.2856/bin" - echo "sonar.host.url=https://sonar.harness.io" >> /harness/sonar-project.properties - cat /harness/sonar-project.properties cd /harness if [ "<+codebase.prNumber>" != "" ]; then echo "Pull Request Analysis" From 6a03245d1592a2c2eb825976cf44ba737ffb5754 Mon Sep 17 00:00:00 2001 From: Bilal Al-Shahwany Date: Wed, 4 Feb 2026 20:52:49 +0000 Subject: [PATCH 103/155] Update pipeline python-client --- .../PROD/projects/Harness_Split/pipelines/pythonclient.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml b/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml index 8a6b92ce..008795ac 100644 --- a/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml +++ b/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml @@ -41,7 +41,7 @@ pipeline: identifier: install_sonarqube_scanner spec: connectorRef: account.harnessImage - image: SonarSource/sonarqube-scan-action@v6 + image: sonarqube:lts-community shell: Bash command: | cd /harness From b2e588b7a3896759ebf0af754262dd2292458e21 Mon Sep 17 00:00:00 2001 From: Bilal Al-Shahwany Date: Wed, 4 Feb 2026 20:55:15 +0000 Subject: [PATCH 104/155] Update pipeline python-client --- .../PROD/projects/Harness_Split/pipelines/pythonclient.yaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml b/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml index 008795ac..ffc6d17e 100644 --- a/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml +++ b/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml @@ -47,7 +47,7 @@ pipeline: cd /harness if [ "<+codebase.prNumber>" != "" ]; then echo "Pull Request Analysis" - /opt/sonar-scanner-4.8.0.2856/bin/sonar-scanner -X \ + sonar-scanner -X \ -Dsonar.projectKey=python-client \ #-Dsonar.sources=. \ -Dsonar.host.url=https://sonar.harness.io \ @@ -57,7 +57,7 @@ pipeline: -Dsonar.pullrequest.base=<+codebase.targetBranch> else echo "Branch Analysis" - /opt/sonar-scanner-4.8.0.2856/bin/sonar-scanner \ + sonar-scanner \ -Dsonar.projectKey=python-client \ #-Dsonar.sources=. \ -Dsonar.host.url=https://sonar.harness.io \ From c7c714b08e6695feefa0e20d2b78e7cbcd8a0155 Mon Sep 17 00:00:00 2001 From: Bilal Al-Shahwany Date: Wed, 4 Feb 2026 21:00:18 +0000 Subject: [PATCH 105/155] Update pipeline python-client --- .../PROD/projects/Harness_Split/pipelines/pythonclient.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml b/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml index ffc6d17e..a6bda008 100644 --- a/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml +++ b/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml @@ -41,7 +41,7 @@ pipeline: identifier: install_sonarqube_scanner spec: connectorRef: account.harnessImage - image: sonarqube:lts-community + image: sonarsource/sonar-scanner-cli shell: Bash command: | cd /harness From ce962552569817b7e905b2a563b46a2375ff4585 Mon Sep 17 00:00:00 2001 From: Bilal Al-Shahwany Date: Wed, 4 Feb 2026 21:04:11 +0000 Subject: [PATCH 106/155] Update pipeline python-client --- .../PROD/projects/Harness_Split/pipelines/pythonclient.yaml | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml b/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml index a6bda008..64ae331c 100644 --- a/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml +++ b/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml @@ -54,7 +54,8 @@ pipeline: -Dsonar.token=<+secrets.getValue('sonarqube-token')> \ -Dsonar.pullrequest.key=<+codebase.prNumber> \ -Dsonar.pullrequest.branch=<+codebase.sourceBranch> \ - -Dsonar.pullrequest.base=<+codebase.targetBranch> + -Dsonar.pullrequest.base=<+codebase.targetBranch> \ + -Dsonar.scanner.skipSystemTruststore=true else echo "Branch Analysis" sonar-scanner \ @@ -62,7 +63,8 @@ pipeline: #-Dsonar.sources=. \ -Dsonar.host.url=https://sonar.harness.io \ -Dsonar.token=<+secrets.getValue('sonarqube-token')> \ - -Dsonar.branch.name=<+codebase.branch> + -Dsonar.branch.name=<+codebase.branch> \ + -Dsonar.scanner.skipSystemTruststore=true fi envVariables: SONAR_TOKEN: <+pipeline.variables.sonarqube_token> From b16f19c3ef6165279edd63abc54ef37ac82220da Mon Sep 17 00:00:00 2001 From: Bilal Al-Shahwany Date: Wed, 4 Feb 2026 21:04:34 +0000 Subject: [PATCH 107/155] Create inputset entry2 --- .../pythonclient/input_sets/entry2.yaml | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) create mode 100644 .harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient/input_sets/entry2.yaml diff --git a/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient/input_sets/entry2.yaml b/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient/input_sets/entry2.yaml new file mode 100644 index 00000000..d97a24aa --- /dev/null +++ b/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient/input_sets/entry2.yaml @@ -0,0 +1,16 @@ +inputSet: + pipeline: + identifier: pythonclient + properties: + ci: + codebase: + connectorRef: fmegithubharnessgitops + repoName: python-client + build: + type: PR + spec: + number: "626" + name: entry2 + identifier: entry2 + orgIdentifier: PROD + projectIdentifier: Harness_Split From fbf7b2116685fab05ed86742733174fa5ebb6e00 Mon Sep 17 00:00:00 2001 From: Bilal Al-Shahwany Date: Wed, 4 Feb 2026 21:09:57 +0000 Subject: [PATCH 108/155] Update pipeline python-client --- .../orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml b/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml index 64ae331c..42ebe4ac 100644 --- a/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml +++ b/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml @@ -45,6 +45,7 @@ pipeline: shell: Bash command: | cd /harness + cat /harness/sonar-project.properties if [ "<+codebase.prNumber>" != "" ]; then echo "Pull Request Analysis" sonar-scanner -X \ From 31cd96cd234f822064fa55cee0039c38423e8989 Mon Sep 17 00:00:00 2001 From: Bilal Al-Shahwany Date: Wed, 4 Feb 2026 21:13:14 +0000 Subject: [PATCH 109/155] Update pipeline python-client --- .../orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml b/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml index 42ebe4ac..547997d3 100644 --- a/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml +++ b/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml @@ -46,6 +46,7 @@ pipeline: command: | cd /harness cat /harness/sonar-project.properties + rm /harness/sonar-project.properties if [ "<+codebase.prNumber>" != "" ]; then echo "Pull Request Analysis" sonar-scanner -X \ From 04e786991405d2592f2e116b3ee9d957f27c92b3 Mon Sep 17 00:00:00 2001 From: Bilal Al-Shahwany Date: Wed, 4 Feb 2026 21:16:03 +0000 Subject: [PATCH 110/155] Update pipeline python-client --- .../PROD/projects/Harness_Split/pipelines/pythonclient.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml b/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml index 547997d3..ba984a62 100644 --- a/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml +++ b/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml @@ -45,8 +45,8 @@ pipeline: shell: Bash command: | cd /harness + echo "sonar.host.url=https://sonar.harness.io" >> /harness/sonar-project.properties cat /harness/sonar-project.properties - rm /harness/sonar-project.properties if [ "<+codebase.prNumber>" != "" ]; then echo "Pull Request Analysis" sonar-scanner -X \ From d002dea3f27fd413b405484b4f56e4e442c20a9f Mon Sep 17 00:00:00 2001 From: Bilal Al-Shahwany Date: Wed, 4 Feb 2026 22:05:45 +0000 Subject: [PATCH 111/155] Update pipeline python-client --- .../PROD/projects/Harness_Split/pipelines/pythonclient.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml b/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml index ba984a62..6049f92f 100644 --- a/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml +++ b/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml @@ -45,7 +45,7 @@ pipeline: shell: Bash command: | cd /harness - echo "sonar.host.url=https://sonar.harness.io" >> /harness/sonar-project.properties + sudo echo "sonar.host.url=https://sonar.harness.io" >> /harness/sonar-project.properties cat /harness/sonar-project.properties if [ "<+codebase.prNumber>" != "" ]; then echo "Pull Request Analysis" From f30bd0d80deed704221b5049435b6195b3505702 Mon Sep 17 00:00:00 2001 From: Bilal Al-Shahwany Date: Wed, 4 Feb 2026 22:15:40 +0000 Subject: [PATCH 112/155] Update pipeline python-client --- .../Harness_Split/pipelines/pythonclient.yaml | 49 +++++++++---------- 1 file changed, 24 insertions(+), 25 deletions(-) diff --git a/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml b/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml index 6049f92f..0478bcab 100644 --- a/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml +++ b/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml @@ -45,7 +45,6 @@ pipeline: shell: Bash command: | cd /harness - sudo echo "sonar.host.url=https://sonar.harness.io" >> /harness/sonar-project.properties cat /harness/sonar-project.properties if [ "<+codebase.prNumber>" != "" ]; then echo "Pull Request Analysis" @@ -81,30 +80,30 @@ pipeline: shell: Sh command: |- # Get SonarQube quality gate status - QUALITY_GATE_STATUS=$(curl -s -u <+secrets.getValue("sonarqube_token")>: \ - "https://sonar.harness.io/api/qualitygates/project_status?projectKey=python-client&pullRequest=<+codebase.prNumber>" \ - | jq -r '.projectStatus.status') - - # Set GitHub status based on quality gate - if [ "$QUALITY_GATE_STATUS" = "OK" ]; then - STATE="success" - DESCRIPTION="SonarQube Quality Gate passed" - else - STATE="failure" - DESCRIPTION="SonarQube Quality Gate failed" - fi - - # Post status to GitHub - curl -X POST \ - -H "Authorization: token <+secrets.getValue("github_token")>" \ - -H "Content-Type: application/json" \ - -d "{ - \"state\": \"$STATE\", - \"description\": \"$DESCRIPTION\", - \"context\": \"sonarqube/qualitygate\", - \"target_url\": \"https://sonar.harness.io/dashboard?id=python-client&pullRequest=<+codebase.prNumber>\" - }" \ - "https://api.github.com/repos/splitio/python-client/statuses/<+codebase.commitSha>" + QUALITY_GATE_STATUS=$(curl -s -u <+secrets.getValue("sonarqube_token")>: \ + "https://sonar.harness.io/api/qualitygates/project_status?projectKey=python-client&pullRequest=<+codebase.prNumber>" \ + | jq -r '.projectStatus.status') + + # Set GitHub status based on quality gate + if [ "$QUALITY_GATE_STATUS" = "OK" ]; then + STATE="success" + DESCRIPTION="SonarQube Quality Gate passed" + else + STATE="failure" + DESCRIPTION="SonarQube Quality Gate failed" + fi + + # Post status to GitHub + curl -X POST \ + -H "Authorization: token <+secrets.getValue("github_token")>" \ + -H "Content-Type: application/json" \ + -d "{ + \"state\": \"$STATE\", + \"description\": \"$DESCRIPTION\", + \"context\": \"sonarqube/qualitygate\", + \"target_url\": \"https://sonar.harness.io/dashboard?id=python-client&pullRequest=<+codebase.prNumber>\" + }" \ + "https://api.github.com/repos/splitio/python-client/statuses/<+codebase.commitSha>" - step: timeout: 30m type: Test From 763a5aa25916ee96fe97db126636052e57c8151a Mon Sep 17 00:00:00 2001 From: Bilal Al-Shahwany Date: Wed, 4 Feb 2026 22:27:00 +0000 Subject: [PATCH 113/155] Update pipeline python-client --- .../PROD/projects/Harness_Split/pipelines/pythonclient.yaml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml b/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml index 0478bcab..4b34401f 100644 --- a/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml +++ b/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml @@ -50,6 +50,7 @@ pipeline: echo "Pull Request Analysis" sonar-scanner -X \ -Dsonar.projectKey=python-client \ + -Dsonar.scanner.skipJreProvisioning=true \ #-Dsonar.sources=. \ -Dsonar.host.url=https://sonar.harness.io \ -Dsonar.token=<+secrets.getValue('sonarqube-token')> \ @@ -61,6 +62,7 @@ pipeline: echo "Branch Analysis" sonar-scanner \ -Dsonar.projectKey=python-client \ + -Dsonar.scanner.skipJreProvisioning=true \ #-Dsonar.sources=. \ -Dsonar.host.url=https://sonar.harness.io \ -Dsonar.token=<+secrets.getValue('sonarqube-token')> \ From c236db71a0de8b105d2796ecfd3b4cc85d318859 Mon Sep 17 00:00:00 2001 From: Bilal Al-Shahwany Date: Wed, 4 Feb 2026 22:52:56 +0000 Subject: [PATCH 114/155] Update pipeline python-client --- .../PROD/projects/Harness_Split/pipelines/pythonclient.yaml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml b/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml index 4b34401f..9990e129 100644 --- a/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml +++ b/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml @@ -45,7 +45,8 @@ pipeline: shell: Bash command: | cd /harness - cat /harness/sonar-project.properties + echo "sonar.host.url=https://sonar.harness.io" >> /opt/sonar-scanner/conf/sonar-scanner.properties + cat /opt/sonar-scanner/conf/sonar-scanner.properties if [ "<+codebase.prNumber>" != "" ]; then echo "Pull Request Analysis" sonar-scanner -X \ From 0745cafbfad69ecb7dbdb7b8e46bb833c2058f29 Mon Sep 17 00:00:00 2001 From: Bilal Al-Shahwany Date: Wed, 4 Feb 2026 22:55:16 +0000 Subject: [PATCH 115/155] Update pipeline python-client --- .../orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml | 1 - 1 file changed, 1 deletion(-) diff --git a/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml b/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml index 9990e129..6577d9a1 100644 --- a/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml +++ b/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml @@ -45,7 +45,6 @@ pipeline: shell: Bash command: | cd /harness - echo "sonar.host.url=https://sonar.harness.io" >> /opt/sonar-scanner/conf/sonar-scanner.properties cat /opt/sonar-scanner/conf/sonar-scanner.properties if [ "<+codebase.prNumber>" != "" ]; then echo "Pull Request Analysis" From ea26cca56ca9e25ed4627b0fa2a3c979077fa88b Mon Sep 17 00:00:00 2001 From: Bilal Al-Shahwany Date: Wed, 4 Feb 2026 22:58:46 +0000 Subject: [PATCH 116/155] Update pipeline python-client --- .../PROD/projects/Harness_Split/pipelines/pythonclient.yaml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml b/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml index 6577d9a1..8e52dc70 100644 --- a/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml +++ b/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml @@ -45,7 +45,8 @@ pipeline: shell: Bash command: | cd /harness - cat /opt/sonar-scanner/conf/sonar-scanner.properties + chmod 777 /harness/sonar-project.properties + echo "sonar.host.url=https://sonar.harness.io" >> /harness/sonar-project.properties if [ "<+codebase.prNumber>" != "" ]; then echo "Pull Request Analysis" sonar-scanner -X \ From e6ab12c2b5bb0d7a91edb1a1aa5752009fdc9ba3 Mon Sep 17 00:00:00 2001 From: Bilal Al-Shahwany Date: Wed, 4 Feb 2026 23:01:07 +0000 Subject: [PATCH 117/155] Update pipeline python-client --- .../orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml b/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml index 8e52dc70..ad6df25d 100644 --- a/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml +++ b/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml @@ -45,6 +45,7 @@ pipeline: shell: Bash command: | cd /harness + sudo su - chmod 777 /harness/sonar-project.properties echo "sonar.host.url=https://sonar.harness.io" >> /harness/sonar-project.properties if [ "<+codebase.prNumber>" != "" ]; then From d70944ed82d3a0ef9387134e2f54eccc0b55cfb2 Mon Sep 17 00:00:00 2001 From: Bilal Al-Shahwany Date: Wed, 4 Feb 2026 23:03:27 +0000 Subject: [PATCH 118/155] Update pipeline python-client --- .../PROD/projects/Harness_Split/pipelines/pythonclient.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml b/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml index ad6df25d..5ebe8943 100644 --- a/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml +++ b/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml @@ -45,7 +45,7 @@ pipeline: shell: Bash command: | cd /harness - sudo su - + su - chmod 777 /harness/sonar-project.properties echo "sonar.host.url=https://sonar.harness.io" >> /harness/sonar-project.properties if [ "<+codebase.prNumber>" != "" ]; then From 8d4d93cc6d113128f3a08ad222ecae6d274fe275 Mon Sep 17 00:00:00 2001 From: Bilal Al-Shahwany Date: Wed, 4 Feb 2026 23:12:47 +0000 Subject: [PATCH 119/155] Update pipeline python-client --- .../PROD/projects/Harness_Split/pipelines/pythonclient.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml b/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml index 5ebe8943..0c761186 100644 --- a/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml +++ b/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml @@ -46,7 +46,7 @@ pipeline: command: | cd /harness su - - chmod 777 /harness/sonar-project.properties + chown sonar: /harness/sonar-project.properties echo "sonar.host.url=https://sonar.harness.io" >> /harness/sonar-project.properties if [ "<+codebase.prNumber>" != "" ]; then echo "Pull Request Analysis" From 85b219821d9b5f475a00c37ebba72bb727a8fcc2 Mon Sep 17 00:00:00 2001 From: Bilal Al-Shahwany Date: Wed, 4 Feb 2026 23:14:45 +0000 Subject: [PATCH 120/155] Update pipeline python-client --- .../orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml | 1 - 1 file changed, 1 deletion(-) diff --git a/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml b/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml index 0c761186..99d504e0 100644 --- a/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml +++ b/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml @@ -45,7 +45,6 @@ pipeline: shell: Bash command: | cd /harness - su - chown sonar: /harness/sonar-project.properties echo "sonar.host.url=https://sonar.harness.io" >> /harness/sonar-project.properties if [ "<+codebase.prNumber>" != "" ]; then From 817b152f5b9dc535fa4dd66c86f6fcbc71daa047 Mon Sep 17 00:00:00 2001 From: Bilal Al-Shahwany Date: Wed, 4 Feb 2026 23:17:09 +0000 Subject: [PATCH 121/155] Update pipeline python-client --- .../PROD/projects/Harness_Split/pipelines/pythonclient.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml b/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml index 99d504e0..f850e79b 100644 --- a/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml +++ b/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml @@ -45,7 +45,7 @@ pipeline: shell: Bash command: | cd /harness - chown sonar: /harness/sonar-project.properties + chown sonar /harness/sonar-project.properties echo "sonar.host.url=https://sonar.harness.io" >> /harness/sonar-project.properties if [ "<+codebase.prNumber>" != "" ]; then echo "Pull Request Analysis" From e655b1b928a1186a16ad29328907f61e1d29cb73 Mon Sep 17 00:00:00 2001 From: Bilal Al-Shahwany Date: Wed, 4 Feb 2026 23:22:15 +0000 Subject: [PATCH 122/155] Update pipeline python-client --- .../PROD/projects/Harness_Split/pipelines/pythonclient.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml b/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml index f850e79b..3ab17024 100644 --- a/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml +++ b/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml @@ -45,7 +45,7 @@ pipeline: shell: Bash command: | cd /harness - chown sonar /harness/sonar-project.properties + chown 1000 /harness/sonar-project.properties echo "sonar.host.url=https://sonar.harness.io" >> /harness/sonar-project.properties if [ "<+codebase.prNumber>" != "" ]; then echo "Pull Request Analysis" From 99a155e3290b63049bf926401c1b1e42d585d260 Mon Sep 17 00:00:00 2001 From: Bilal Al-Shahwany Date: Wed, 4 Feb 2026 23:24:54 +0000 Subject: [PATCH 123/155] Update pipeline python-client --- .../PROD/projects/Harness_Split/pipelines/pythonclient.yaml | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml b/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml index 3ab17024..27c54a68 100644 --- a/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml +++ b/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml @@ -45,15 +45,13 @@ pipeline: shell: Bash command: | cd /harness - chown 1000 /harness/sonar-project.properties - echo "sonar.host.url=https://sonar.harness.io" >> /harness/sonar-project.properties if [ "<+codebase.prNumber>" != "" ]; then echo "Pull Request Analysis" sonar-scanner -X \ -Dsonar.projectKey=python-client \ -Dsonar.scanner.skipJreProvisioning=true \ #-Dsonar.sources=. \ - -Dsonar.host.url=https://sonar.harness.io \ + -Dsonar.host.url="https://sonar.harness.io" \ -Dsonar.token=<+secrets.getValue('sonarqube-token')> \ -Dsonar.pullrequest.key=<+codebase.prNumber> \ -Dsonar.pullrequest.branch=<+codebase.sourceBranch> \ From a86d2a9f19f87220b196d018abb4a38a31258c60 Mon Sep 17 00:00:00 2001 From: Bilal Al-Shahwany Date: Wed, 4 Feb 2026 23:31:38 +0000 Subject: [PATCH 124/155] Update pipeline python-client --- .../PROD/projects/Harness_Split/pipelines/pythonclient.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml b/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml index 27c54a68..b7b16e09 100644 --- a/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml +++ b/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml @@ -48,10 +48,10 @@ pipeline: if [ "<+codebase.prNumber>" != "" ]; then echo "Pull Request Analysis" sonar-scanner -X \ + -Dsonar.host.url=https://sonar.harness.io \ -Dsonar.projectKey=python-client \ -Dsonar.scanner.skipJreProvisioning=true \ #-Dsonar.sources=. \ - -Dsonar.host.url="https://sonar.harness.io" \ -Dsonar.token=<+secrets.getValue('sonarqube-token')> \ -Dsonar.pullrequest.key=<+codebase.prNumber> \ -Dsonar.pullrequest.branch=<+codebase.sourceBranch> \ From 94a3f90bdc676909e561d84cfd3f505984d02f70 Mon Sep 17 00:00:00 2001 From: Bilal Al-Shahwany Date: Wed, 4 Feb 2026 23:35:08 +0000 Subject: [PATCH 125/155] Update pipeline python-client --- .../projects/Harness_Split/pipelines/pythonclient.yaml | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml b/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml index b7b16e09..6b85cf89 100644 --- a/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml +++ b/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml @@ -49,10 +49,9 @@ pipeline: echo "Pull Request Analysis" sonar-scanner -X \ -Dsonar.host.url=https://sonar.harness.io \ + -Dsonar.token=<+secrets.getValue('sonarqube-token')> \ -Dsonar.projectKey=python-client \ -Dsonar.scanner.skipJreProvisioning=true \ - #-Dsonar.sources=. \ - -Dsonar.token=<+secrets.getValue('sonarqube-token')> \ -Dsonar.pullrequest.key=<+codebase.prNumber> \ -Dsonar.pullrequest.branch=<+codebase.sourceBranch> \ -Dsonar.pullrequest.base=<+codebase.targetBranch> \ @@ -60,11 +59,10 @@ pipeline: else echo "Branch Analysis" sonar-scanner \ - -Dsonar.projectKey=python-client \ - -Dsonar.scanner.skipJreProvisioning=true \ - #-Dsonar.sources=. \ -Dsonar.host.url=https://sonar.harness.io \ -Dsonar.token=<+secrets.getValue('sonarqube-token')> \ + -Dsonar.projectKey=python-client \ + -Dsonar.scanner.skipJreProvisioning=true \ -Dsonar.branch.name=<+codebase.branch> \ -Dsonar.scanner.skipSystemTruststore=true fi From f42eb438ea31d587714a58c0437b8fc0ecb590d4 Mon Sep 17 00:00:00 2001 From: Bilal Al-Shahwany Date: Wed, 4 Feb 2026 23:47:38 +0000 Subject: [PATCH 126/155] Update pipeline python-client --- .../PROD/projects/Harness_Split/pipelines/pythonclient.yaml | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml b/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml index 6b85cf89..7c49854d 100644 --- a/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml +++ b/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml @@ -79,7 +79,9 @@ pipeline: shell: Sh command: |- # Get SonarQube quality gate status - QUALITY_GATE_STATUS=$(curl -s -u <+secrets.getValue("sonarqube_token")>: \ + curl -s -u <+secrets.getValue("sonarqube_token")> \ + "https://sonar.harness.io/api/qualitygates/project_status?projectKey=python-client&pullRequest=<+codebase.prNumber>" + QUALITY_GATE_STATUS=$(curl -s -u <+secrets.getValue("sonarqube_token")> \ "https://sonar.harness.io/api/qualitygates/project_status?projectKey=python-client&pullRequest=<+codebase.prNumber>" \ | jq -r '.projectStatus.status') From 35da1f3c25a6e5971bfee8b2a1a1638bfa3d4781 Mon Sep 17 00:00:00 2001 From: Bilal Al-Shahwany Date: Wed, 4 Feb 2026 23:52:10 +0000 Subject: [PATCH 127/155] Update pipeline python-client --- .../PROD/projects/Harness_Split/pipelines/pythonclient.yaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml b/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml index 7c49854d..17ebd0cd 100644 --- a/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml +++ b/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml @@ -80,9 +80,9 @@ pipeline: command: |- # Get SonarQube quality gate status curl -s -u <+secrets.getValue("sonarqube_token")> \ - "https://sonar.harness.io/api/qualitygates/project_status?projectKey=python-client&pullRequest=<+codebase.prNumber>" + "https://sonar.harness.io/api/qualitygates/project_status?projectKey=python-client&pullRequest=${<+codebase.prNumber>}" QUALITY_GATE_STATUS=$(curl -s -u <+secrets.getValue("sonarqube_token")> \ - "https://sonar.harness.io/api/qualitygates/project_status?projectKey=python-client&pullRequest=<+codebase.prNumber>" \ + "https://sonar.harness.io/api/qualitygates/project_status?projectKey=python-client&pullRequest=${<+codebase.prNumber>}" \ | jq -r '.projectStatus.status') # Set GitHub status based on quality gate From 71a7b703d4bf40a538f76b3e72c43a903f08a732 Mon Sep 17 00:00:00 2001 From: Bilal Al-Shahwany Date: Wed, 4 Feb 2026 23:56:47 +0000 Subject: [PATCH 128/155] Update pipeline python-client --- .../Harness_Split/pipelines/pythonclient.yaml | 68 +++++++++---------- 1 file changed, 34 insertions(+), 34 deletions(-) diff --git a/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml b/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml index 17ebd0cd..1e4b818c 100644 --- a/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml +++ b/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml @@ -35,6 +35,40 @@ pipeline: arch: Amd64 execution: steps: + - step: + type: Run + name: Post Quality Gate to GitHub + identifier: Post_Quality_Gate_to_GitHub + spec: + shell: Sh + command: |- + # Get SonarQube quality gate status + curl -u <+secrets.getValue("sonarqube_token")>: \ + -s "https://sonar.harness.io/api/qualitygates/project_status?projectKey=python-client&pullRequest=${<+codebase.prNumber>}" + QUALITY_GATE_STATUS=$(curl -u <+secrets.getValue("sonarqube_token")> :\ + -s "https://sonar.harness.io/api/qualitygates/project_status?projectKey=python-client&pullRequest=${<+codebase.prNumber>}" \ + | jq -r '.projectStatus.status') + + # Set GitHub status based on quality gate + if [ "$QUALITY_GATE_STATUS" = "OK" ]; then + STATE="success" + DESCRIPTION="SonarQube Quality Gate passed" + else + STATE="failure" + DESCRIPTION="SonarQube Quality Gate failed" + fi + + # Post status to GitHub + curl -X POST \ + -H "Authorization: token <+secrets.getValue("github_token")>" \ + -H "Content-Type: application/json" \ + -d "{ + \"state\": \"$STATE\", + \"description\": \"$DESCRIPTION\", + \"context\": \"sonarqube/qualitygate\", + \"target_url\": \"https://sonar.harness.io/dashboard?id=python-client&pullRequest=<+codebase.prNumber>\" + }" \ + "https://api.github.com/repos/splitio/python-client/statuses/<+codebase.commitSha>" - step: type: Run name: Install and Run SonarQube Scanner @@ -71,40 +105,6 @@ pipeline: outputVariables: - name: SONAR_SCANNER_PATH timeout: 10m - - step: - type: Run - name: Post Quality Gate to GitHub - identifier: Post_Quality_Gate_to_GitHub - spec: - shell: Sh - command: |- - # Get SonarQube quality gate status - curl -s -u <+secrets.getValue("sonarqube_token")> \ - "https://sonar.harness.io/api/qualitygates/project_status?projectKey=python-client&pullRequest=${<+codebase.prNumber>}" - QUALITY_GATE_STATUS=$(curl -s -u <+secrets.getValue("sonarqube_token")> \ - "https://sonar.harness.io/api/qualitygates/project_status?projectKey=python-client&pullRequest=${<+codebase.prNumber>}" \ - | jq -r '.projectStatus.status') - - # Set GitHub status based on quality gate - if [ "$QUALITY_GATE_STATUS" = "OK" ]; then - STATE="success" - DESCRIPTION="SonarQube Quality Gate passed" - else - STATE="failure" - DESCRIPTION="SonarQube Quality Gate failed" - fi - - # Post status to GitHub - curl -X POST \ - -H "Authorization: token <+secrets.getValue("github_token")>" \ - -H "Content-Type: application/json" \ - -d "{ - \"state\": \"$STATE\", - \"description\": \"$DESCRIPTION\", - \"context\": \"sonarqube/qualitygate\", - \"target_url\": \"https://sonar.harness.io/dashboard?id=python-client&pullRequest=<+codebase.prNumber>\" - }" \ - "https://api.github.com/repos/splitio/python-client/statuses/<+codebase.commitSha>" - step: timeout: 30m type: Test From f57855885ad2e05cabf560f9945e80a8345c2d59 Mon Sep 17 00:00:00 2001 From: Bilal Al-Shahwany Date: Thu, 5 Feb 2026 00:00:03 +0000 Subject: [PATCH 129/155] Update pipeline python-client --- .../PROD/projects/Harness_Split/pipelines/pythonclient.yaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml b/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml index 1e4b818c..f2352d2e 100644 --- a/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml +++ b/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml @@ -43,9 +43,9 @@ pipeline: shell: Sh command: |- # Get SonarQube quality gate status - curl -u <+secrets.getValue("sonarqube_token")>: \ + curl -u <+secrets.getValue('sonarqube-token')>: \ -s "https://sonar.harness.io/api/qualitygates/project_status?projectKey=python-client&pullRequest=${<+codebase.prNumber>}" - QUALITY_GATE_STATUS=$(curl -u <+secrets.getValue("sonarqube_token")> :\ + QUALITY_GATE_STATUS=$(curl -u <+secrets.getValue('sonarqube_token')> :\ -s "https://sonar.harness.io/api/qualitygates/project_status?projectKey=python-client&pullRequest=${<+codebase.prNumber>}" \ | jq -r '.projectStatus.status') From d7485ed1d6787a57b8488d73338e4b666f416fd9 Mon Sep 17 00:00:00 2001 From: Bilal Al-Shahwany Date: Thu, 5 Feb 2026 00:03:44 +0000 Subject: [PATCH 130/155] Update pipeline python-client --- .../PROD/projects/Harness_Split/pipelines/pythonclient.yaml | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml b/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml index f2352d2e..a26daccd 100644 --- a/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml +++ b/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml @@ -44,9 +44,10 @@ pipeline: command: |- # Get SonarQube quality gate status curl -u <+secrets.getValue('sonarqube-token')>: \ - -s "https://sonar.harness.io/api/qualitygates/project_status?projectKey=python-client&pullRequest=${<+codebase.prNumber>}" + -s 'https://sonar.harness.io/api/qualitygates/project_status?projectKey=python-client&pullRequest=${<+codebase.prNumber>}' + QUALITY_GATE_STATUS=$(curl -u <+secrets.getValue('sonarqube_token')> :\ - -s "https://sonar.harness.io/api/qualitygates/project_status?projectKey=python-client&pullRequest=${<+codebase.prNumber>}" \ + -s 'https://sonar.harness.io/api/qualitygates/project_status?projectKey=python-client&pullRequest=${<+codebase.prNumber>}' \ | jq -r '.projectStatus.status') # Set GitHub status based on quality gate From fa18fab6174db3ffb12381978ad66fa85c8e7732 Mon Sep 17 00:00:00 2001 From: Bilal Al-Shahwany Date: Thu, 5 Feb 2026 00:09:51 +0000 Subject: [PATCH 131/155] Update pipeline python-client --- .../PROD/projects/Harness_Split/pipelines/pythonclient.yaml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml b/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml index a26daccd..3cf5fed0 100644 --- a/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml +++ b/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml @@ -46,9 +46,9 @@ pipeline: curl -u <+secrets.getValue('sonarqube-token')>: \ -s 'https://sonar.harness.io/api/qualitygates/project_status?projectKey=python-client&pullRequest=${<+codebase.prNumber>}' - QUALITY_GATE_STATUS=$(curl -u <+secrets.getValue('sonarqube_token')> :\ - -s 'https://sonar.harness.io/api/qualitygates/project_status?projectKey=python-client&pullRequest=${<+codebase.prNumber>}' \ - | jq -r '.projectStatus.status') + QUALITY_GATE_STATUS=$(curl -u <+secrets.getValue(\'sonarqube_token\')> :\ + -s \'https://sonar.harness.io/api/qualitygates/project_status?projectKey=python-client&pullRequest=${<+codebase.prNumber>}\' \ + | jq -r \'.projectStatus.status\') # Set GitHub status based on quality gate if [ "$QUALITY_GATE_STATUS" = "OK" ]; then From 491b03667d2d2f5e5754a6441fa255536674030a Mon Sep 17 00:00:00 2001 From: Bilal Al-Shahwany Date: Thu, 5 Feb 2026 00:13:05 +0000 Subject: [PATCH 132/155] Update pipeline python-client --- .../PROD/projects/Harness_Split/pipelines/pythonclient.yaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml b/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml index 3cf5fed0..ab5bb050 100644 --- a/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml +++ b/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml @@ -48,7 +48,7 @@ pipeline: QUALITY_GATE_STATUS=$(curl -u <+secrets.getValue(\'sonarqube_token\')> :\ -s \'https://sonar.harness.io/api/qualitygates/project_status?projectKey=python-client&pullRequest=${<+codebase.prNumber>}\' \ - | jq -r \'.projectStatus.status\') + | jq -r .projectStatus.status) # Set GitHub status based on quality gate if [ "$QUALITY_GATE_STATUS" = "OK" ]; then @@ -61,7 +61,7 @@ pipeline: # Post status to GitHub curl -X POST \ - -H "Authorization: token <+secrets.getValue("github_token")>" \ + -H "Authorization: token <+secrets.getValue('github_token')>" \ -H "Content-Type: application/json" \ -d "{ \"state\": \"$STATE\", From 0b04f8f878183b75dd32e0fd1579e767fabc1d42 Mon Sep 17 00:00:00 2001 From: Bilal Al-Shahwany Date: Thu, 5 Feb 2026 00:17:03 +0000 Subject: [PATCH 133/155] Update pipeline python-client --- .../projects/Harness_Split/pipelines/pythonclient.yaml | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml b/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml index ab5bb050..71f9316d 100644 --- a/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml +++ b/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml @@ -43,13 +43,11 @@ pipeline: shell: Sh command: |- # Get SonarQube quality gate status - curl -u <+secrets.getValue('sonarqube-token')>: \ - -s 'https://sonar.harness.io/api/qualitygates/project_status?projectKey=python-client&pullRequest=${<+codebase.prNumber>}' - QUALITY_GATE_STATUS=$(curl -u <+secrets.getValue(\'sonarqube_token\')> :\ -s \'https://sonar.harness.io/api/qualitygates/project_status?projectKey=python-client&pullRequest=${<+codebase.prNumber>}\' \ | jq -r .projectStatus.status) + echo "QUALITY_GATE_STATUS: $QUALITY_GATE_STATUS" # Set GitHub status based on quality gate if [ "$QUALITY_GATE_STATUS" = "OK" ]; then STATE="success" @@ -61,13 +59,13 @@ pipeline: # Post status to GitHub curl -X POST \ - -H "Authorization: token <+secrets.getValue('github_token')>" \ + -H "Authorization: token ${<+secrets.getValue('github_token')>}" \ -H "Content-Type: application/json" \ -d "{ \"state\": \"$STATE\", \"description\": \"$DESCRIPTION\", \"context\": \"sonarqube/qualitygate\", - \"target_url\": \"https://sonar.harness.io/dashboard?id=python-client&pullRequest=<+codebase.prNumber>\" + \"target_url\": \"https://sonar.harness.io/dashboard?id=python-client&pullRequest=${<+codebase.prNumber>}\" }" \ "https://api.github.com/repos/splitio/python-client/statuses/<+codebase.commitSha>" - step: From 4bb773054503cef232524a20a08ba05b50f56201 Mon Sep 17 00:00:00 2001 From: Bilal Al-Shahwany Date: Thu, 5 Feb 2026 00:19:47 +0000 Subject: [PATCH 134/155] Update pipeline python-client --- .../PROD/projects/Harness_Split/pipelines/pythonclient.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml b/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml index 71f9316d..e3d34ccb 100644 --- a/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml +++ b/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml @@ -43,7 +43,7 @@ pipeline: shell: Sh command: |- # Get SonarQube quality gate status - QUALITY_GATE_STATUS=$(curl -u <+secrets.getValue(\'sonarqube_token\')> :\ + QUALITY_GATE_STATUS=$(curl -u <+secrets.getValue('sonarqube_token')> :\ -s \'https://sonar.harness.io/api/qualitygates/project_status?projectKey=python-client&pullRequest=${<+codebase.prNumber>}\' \ | jq -r .projectStatus.status) From d3b27ff5ac1e984e002f0986222b8c529ee67852 Mon Sep 17 00:00:00 2001 From: Bilal Al-Shahwany Date: Thu, 5 Feb 2026 00:22:25 +0000 Subject: [PATCH 135/155] Update pipeline python-client --- .../PROD/projects/Harness_Split/pipelines/pythonclient.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml b/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml index e3d34ccb..0e38abde 100644 --- a/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml +++ b/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml @@ -44,7 +44,7 @@ pipeline: command: |- # Get SonarQube quality gate status QUALITY_GATE_STATUS=$(curl -u <+secrets.getValue('sonarqube_token')> :\ - -s \'https://sonar.harness.io/api/qualitygates/project_status?projectKey=python-client&pullRequest=${<+codebase.prNumber>}\' \ + -s 'https://sonar.harness.io/api/qualitygates/project_status?projectKey=python-client&pullRequest=${<+codebase.prNumber>}' \ | jq -r .projectStatus.status) echo "QUALITY_GATE_STATUS: $QUALITY_GATE_STATUS" From 37e36e46779202004df715cf99bfdada644aaf3f Mon Sep 17 00:00:00 2001 From: Bilal Al-Shahwany Date: Thu, 5 Feb 2026 00:25:39 +0000 Subject: [PATCH 136/155] Update pipeline python-client --- .../PROD/projects/Harness_Split/pipelines/pythonclient.yaml | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml b/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml index 0e38abde..3e2dffd8 100644 --- a/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml +++ b/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml @@ -43,9 +43,7 @@ pipeline: shell: Sh command: |- # Get SonarQube quality gate status - QUALITY_GATE_STATUS=$(curl -u <+secrets.getValue('sonarqube_token')> :\ - -s 'https://sonar.harness.io/api/qualitygates/project_status?projectKey=python-client&pullRequest=${<+codebase.prNumber>}' \ - | jq -r .projectStatus.status) + QUALITY_GATE_STATUS=$(curl -u <+secrets.getValue('sonarqube_token')> : -s 'https://sonar.harness.io/api/qualitygates/project_status?projectKey=python-client&pullRequest=${<+codebase.prNumber>}' | jq -r .projectStatus.status) echo "QUALITY_GATE_STATUS: $QUALITY_GATE_STATUS" # Set GitHub status based on quality gate From 3948cfd028dab11c590e95fb2bfdc72582d3f905 Mon Sep 17 00:00:00 2001 From: Bilal Al-Shahwany Date: Thu, 5 Feb 2026 00:28:33 +0000 Subject: [PATCH 137/155] Update pipeline python-client --- .../PROD/projects/Harness_Split/pipelines/pythonclient.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml b/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml index 3e2dffd8..ec7e7d7c 100644 --- a/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml +++ b/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml @@ -42,10 +42,10 @@ pipeline: spec: shell: Sh command: |- - # Get SonarQube quality gate status QUALITY_GATE_STATUS=$(curl -u <+secrets.getValue('sonarqube_token')> : -s 'https://sonar.harness.io/api/qualitygates/project_status?projectKey=python-client&pullRequest=${<+codebase.prNumber>}' | jq -r .projectStatus.status) echo "QUALITY_GATE_STATUS: $QUALITY_GATE_STATUS" + # Set GitHub status based on quality gate if [ "$QUALITY_GATE_STATUS" = "OK" ]; then STATE="success" From ddb26c0a24c3f74dde0d6bdbb8990a75f4ba1bea Mon Sep 17 00:00:00 2001 From: Bilal Al-Shahwany Date: Thu, 5 Feb 2026 00:31:15 +0000 Subject: [PATCH 138/155] Update pipeline python-client --- .../PROD/projects/Harness_Split/pipelines/pythonclient.yaml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml b/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml index ec7e7d7c..03b5d9c8 100644 --- a/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml +++ b/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml @@ -42,6 +42,8 @@ pipeline: spec: shell: Sh command: |- + curl -u <+secrets.getValue('sonarqube_token')> : -s 'https://sonar.harness.io/api/qualitygates/project_status?projectKey=python-client&pullRequest=${<+codebase.prNumber>}' | jq -r .projectStatus.status + QUALITY_GATE_STATUS=$(curl -u <+secrets.getValue('sonarqube_token')> : -s 'https://sonar.harness.io/api/qualitygates/project_status?projectKey=python-client&pullRequest=${<+codebase.prNumber>}' | jq -r .projectStatus.status) echo "QUALITY_GATE_STATUS: $QUALITY_GATE_STATUS" From 526aae8fecb52692792c495d8ca53d8ed443bda0 Mon Sep 17 00:00:00 2001 From: Bilal Al-Shahwany Date: Thu, 5 Feb 2026 00:33:23 +0000 Subject: [PATCH 139/155] Update pipeline python-client --- .../PROD/projects/Harness_Split/pipelines/pythonclient.yaml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml b/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml index 03b5d9c8..04fe5238 100644 --- a/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml +++ b/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml @@ -42,6 +42,8 @@ pipeline: spec: shell: Sh command: |- + curl -u <+secrets.getValue('sonarqube_token')> : -s 'https://sonar.harness.io/api/qualitygates/project_status?projectKey=python-client&pullRequest=${<+codebase.prNumber>}' + curl -u <+secrets.getValue('sonarqube_token')> : -s 'https://sonar.harness.io/api/qualitygates/project_status?projectKey=python-client&pullRequest=${<+codebase.prNumber>}' | jq -r .projectStatus.status QUALITY_GATE_STATUS=$(curl -u <+secrets.getValue('sonarqube_token')> : -s 'https://sonar.harness.io/api/qualitygates/project_status?projectKey=python-client&pullRequest=${<+codebase.prNumber>}' | jq -r .projectStatus.status) From f40ebff330683c869d5b199ce930f01064777ff6 Mon Sep 17 00:00:00 2001 From: Bilal Al-Shahwany Date: Thu, 5 Feb 2026 00:35:55 +0000 Subject: [PATCH 140/155] Update pipeline python-client --- .../PROD/projects/Harness_Split/pipelines/pythonclient.yaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml b/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml index 04fe5238..c37491d6 100644 --- a/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml +++ b/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml @@ -42,9 +42,9 @@ pipeline: spec: shell: Sh command: |- - curl -u <+secrets.getValue('sonarqube_token')> : -s 'https://sonar.harness.io/api/qualitygates/project_status?projectKey=python-client&pullRequest=${<+codebase.prNumber>}' + curl -u ${<+secrets.getValue('sonarqube_token')>} : -s 'https://sonar.harness.io/api/qualitygates/project_status?projectKey=python-client&pullRequest=${<+codebase.prNumber>}' - curl -u <+secrets.getValue('sonarqube_token')> : -s 'https://sonar.harness.io/api/qualitygates/project_status?projectKey=python-client&pullRequest=${<+codebase.prNumber>}' | jq -r .projectStatus.status + curl -u ${<+secrets.getValue('sonarqube_token')>} : -s 'https://sonar.harness.io/api/qualitygates/project_status?projectKey=python-client&pullRequest=${<+codebase.prNumber>}' | jq -r .projectStatus.status QUALITY_GATE_STATUS=$(curl -u <+secrets.getValue('sonarqube_token')> : -s 'https://sonar.harness.io/api/qualitygates/project_status?projectKey=python-client&pullRequest=${<+codebase.prNumber>}' | jq -r .projectStatus.status) From d4c09c98d21c98d0898970c138893846f96ea9da Mon Sep 17 00:00:00 2001 From: Bilal Al-Shahwany Date: Thu, 5 Feb 2026 00:38:04 +0000 Subject: [PATCH 141/155] Update pipeline python-client --- .../PROD/projects/Harness_Split/pipelines/pythonclient.yaml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml b/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml index c37491d6..305286b9 100644 --- a/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml +++ b/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml @@ -42,11 +42,11 @@ pipeline: spec: shell: Sh command: |- - curl -u ${<+secrets.getValue('sonarqube_token')>} : -s 'https://sonar.harness.io/api/qualitygates/project_status?projectKey=python-client&pullRequest=${<+codebase.prNumber>}' + curl -u ${<+secrets.getValue('sonarqube_token')>}: -s 'https://sonar.harness.io/api/qualitygates/project_status?projectKey=python-client&pullRequest=${<+codebase.prNumber>}' - curl -u ${<+secrets.getValue('sonarqube_token')>} : -s 'https://sonar.harness.io/api/qualitygates/project_status?projectKey=python-client&pullRequest=${<+codebase.prNumber>}' | jq -r .projectStatus.status + curl -u ${<+secrets.getValue('sonarqube_token')>}: -s 'https://sonar.harness.io/api/qualitygates/project_status?projectKey=python-client&pullRequest=${<+codebase.prNumber>}' | jq -r .projectStatus.status - QUALITY_GATE_STATUS=$(curl -u <+secrets.getValue('sonarqube_token')> : -s 'https://sonar.harness.io/api/qualitygates/project_status?projectKey=python-client&pullRequest=${<+codebase.prNumber>}' | jq -r .projectStatus.status) + QUALITY_GATE_STATUS=$(curl -u <+secrets.getValue('sonarqube_token')>: -s 'https://sonar.harness.io/api/qualitygates/project_status?projectKey=python-client&pullRequest=${<+codebase.prNumber>}' | jq -r .projectStatus.status) echo "QUALITY_GATE_STATUS: $QUALITY_GATE_STATUS" From f84897c38c83b3d371e134ea24e2d6e82b4016ee Mon Sep 17 00:00:00 2001 From: Bilal Al-Shahwany Date: Thu, 5 Feb 2026 00:42:04 +0000 Subject: [PATCH 142/155] Update pipeline python-client --- .../PROD/projects/Harness_Split/pipelines/pythonclient.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml b/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml index 305286b9..15d0703b 100644 --- a/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml +++ b/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml @@ -42,7 +42,7 @@ pipeline: spec: shell: Sh command: |- - curl -u ${<+secrets.getValue('sonarqube_token')>}: -s 'https://sonar.harness.io/api/qualitygates/project_status?projectKey=python-client&pullRequest=${<+codebase.prNumber>}' + curl -u ${<+secrets.getValue('sonarqube_token')>}: -s "https://sonar.harness.io/api/qualitygates/project_status?projectKey=python-client&pullRequest=${<+codebase.prNumber>}" curl -u ${<+secrets.getValue('sonarqube_token')>}: -s 'https://sonar.harness.io/api/qualitygates/project_status?projectKey=python-client&pullRequest=${<+codebase.prNumber>}' | jq -r .projectStatus.status From c0f55549ffc1315abdf19e90cf8c1e0d741396b8 Mon Sep 17 00:00:00 2001 From: Bilal Al-Shahwany Date: Thu, 5 Feb 2026 00:46:31 +0000 Subject: [PATCH 143/155] Update pipeline python-client --- .../PROD/projects/Harness_Split/pipelines/pythonclient.yaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml b/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml index 15d0703b..03866994 100644 --- a/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml +++ b/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml @@ -42,9 +42,9 @@ pipeline: spec: shell: Sh command: |- - curl -u ${<+secrets.getValue('sonarqube_token')>}: -s "https://sonar.harness.io/api/qualitygates/project_status?projectKey=python-client&pullRequest=${<+codebase.prNumber>}" + curl -u <+secrets.getValue('sonarqube_token')>: -s "https://sonar.harness.io/api/qualitygates/project_status?projectKey=python-client&pullRequest=${<+codebase.prNumber>}" - curl -u ${<+secrets.getValue('sonarqube_token')>}: -s 'https://sonar.harness.io/api/qualitygates/project_status?projectKey=python-client&pullRequest=${<+codebase.prNumber>}' | jq -r .projectStatus.status + curl -u <+secrets.getValue('sonarqube_token')>: -s 'https://sonar.harness.io/api/qualitygates/project_status?projectKey=python-client&pullRequest=${<+codebase.prNumber>}' | jq -r .projectStatus.status QUALITY_GATE_STATUS=$(curl -u <+secrets.getValue('sonarqube_token')>: -s 'https://sonar.harness.io/api/qualitygates/project_status?projectKey=python-client&pullRequest=${<+codebase.prNumber>}' | jq -r .projectStatus.status) From fd617fa2e4a3bcd70e5d039e80cfccabee27d3e7 Mon Sep 17 00:00:00 2001 From: Bilal Al-Shahwany Date: Thu, 5 Feb 2026 00:50:13 +0000 Subject: [PATCH 144/155] Update pipeline python-client --- .../Harness_Split/pipelines/pythonclient.yaml | 48 ++++++++++--------- 1 file changed, 25 insertions(+), 23 deletions(-) diff --git a/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml b/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml index 03866994..65d8648b 100644 --- a/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml +++ b/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml @@ -42,34 +42,36 @@ pipeline: spec: shell: Sh command: |- - curl -u <+secrets.getValue('sonarqube_token')>: -s "https://sonar.harness.io/api/qualitygates/project_status?projectKey=python-client&pullRequest=${<+codebase.prNumber>}" + # Get SonarQube quality gate status + curl -u <+secrets.getValue("sonarqube_token")>: \ + -s "https://sonar.harness.io/api/qualitygates/project_status?projectKey=python-client&pullRequest=${<+codebase.prNumber>}" - curl -u <+secrets.getValue('sonarqube_token')>: -s 'https://sonar.harness.io/api/qualitygates/project_status?projectKey=python-client&pullRequest=${<+codebase.prNumber>}' | jq -r .projectStatus.status + curl -u <+secrets.getValue('sonarqube_token')>: -s 'https://sonar.harness.io/api/qualitygates/project_status?projectKey=python-client&pullRequest=${<+codebase.prNumber>}' | jq -r .projectStatus.status - QUALITY_GATE_STATUS=$(curl -u <+secrets.getValue('sonarqube_token')>: -s 'https://sonar.harness.io/api/qualitygates/project_status?projectKey=python-client&pullRequest=${<+codebase.prNumber>}' | jq -r .projectStatus.status) + QUALITY_GATE_STATUS=$(curl -u <+secrets.getValue('sonarqube_token')>: -s 'https://sonar.harness.io/api/qualitygates/project_status?projectKey=python-client&pullRequest=${<+codebase.prNumber>}' | jq -r .projectStatus.status) - echo "QUALITY_GATE_STATUS: $QUALITY_GATE_STATUS" + echo "QUALITY_GATE_STATUS: $QUALITY_GATE_STATUS" - # Set GitHub status based on quality gate - if [ "$QUALITY_GATE_STATUS" = "OK" ]; then - STATE="success" - DESCRIPTION="SonarQube Quality Gate passed" - else - STATE="failure" - DESCRIPTION="SonarQube Quality Gate failed" - fi + # Set GitHub status based on quality gate + if [ "$QUALITY_GATE_STATUS" = "OK" ]; then + STATE="success" + DESCRIPTION="SonarQube Quality Gate passed" + else + STATE="failure" + DESCRIPTION="SonarQube Quality Gate failed" + fi - # Post status to GitHub - curl -X POST \ - -H "Authorization: token ${<+secrets.getValue('github_token')>}" \ - -H "Content-Type: application/json" \ - -d "{ - \"state\": \"$STATE\", - \"description\": \"$DESCRIPTION\", - \"context\": \"sonarqube/qualitygate\", - \"target_url\": \"https://sonar.harness.io/dashboard?id=python-client&pullRequest=${<+codebase.prNumber>}\" - }" \ - "https://api.github.com/repos/splitio/python-client/statuses/<+codebase.commitSha>" + # Post status to GitHub + curl -X POST \ + -H "Authorization: token ${<+secrets.getValue('github_token')>}" \ + -H "Content-Type: application/json" \ + -d "{ + \"state\": \"$STATE\", + \"description\": \"$DESCRIPTION\", + \"context\": \"sonarqube/qualitygate\", + \"target_url\": \"https://sonar.harness.io/dashboard?id=python-client&pullRequest=${<+codebase.prNumber>}\" + }" \ + "https://api.github.com/repos/splitio/python-client/statuses/<+codebase.commitSha>" - step: type: Run name: Install and Run SonarQube Scanner From 6cb30c78128d9f295378f777c9b8823f74dec348 Mon Sep 17 00:00:00 2001 From: Bilal Al-Shahwany Date: Thu, 5 Feb 2026 00:53:26 +0000 Subject: [PATCH 145/155] Update pipeline python-client --- .../PROD/projects/Harness_Split/pipelines/pythonclient.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml b/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml index 65d8648b..5fd087b1 100644 --- a/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml +++ b/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml @@ -43,7 +43,7 @@ pipeline: shell: Sh command: |- # Get SonarQube quality gate status - curl -u <+secrets.getValue("sonarqube_token")>: \ + curl -u <+secrets.getValue('sonarqube_token')>: \ -s "https://sonar.harness.io/api/qualitygates/project_status?projectKey=python-client&pullRequest=${<+codebase.prNumber>}" curl -u <+secrets.getValue('sonarqube_token')>: -s 'https://sonar.harness.io/api/qualitygates/project_status?projectKey=python-client&pullRequest=${<+codebase.prNumber>}' | jq -r .projectStatus.status From 824d20dd1d897efcdc6327a34bcefeffdb460e1b Mon Sep 17 00:00:00 2001 From: Bilal Al-Shahwany Date: Thu, 5 Feb 2026 00:57:32 +0000 Subject: [PATCH 146/155] Update pipeline python-client --- .../PROD/projects/Harness_Split/pipelines/pythonclient.yaml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml b/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml index 5fd087b1..1794af64 100644 --- a/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml +++ b/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml @@ -43,12 +43,12 @@ pipeline: shell: Sh command: |- # Get SonarQube quality gate status - curl -u <+secrets.getValue('sonarqube_token')>: \ + curl -u <+secrets.getValue('sonarqube-token')>: \ -s "https://sonar.harness.io/api/qualitygates/project_status?projectKey=python-client&pullRequest=${<+codebase.prNumber>}" - curl -u <+secrets.getValue('sonarqube_token')>: -s 'https://sonar.harness.io/api/qualitygates/project_status?projectKey=python-client&pullRequest=${<+codebase.prNumber>}' | jq -r .projectStatus.status + curl -u <+secrets.getValue('sonarqube-token')>: -s 'https://sonar.harness.io/api/qualitygates/project_status?projectKey=python-client&pullRequest=${<+codebase.prNumber>}' | jq -r .projectStatus.status - QUALITY_GATE_STATUS=$(curl -u <+secrets.getValue('sonarqube_token')>: -s 'https://sonar.harness.io/api/qualitygates/project_status?projectKey=python-client&pullRequest=${<+codebase.prNumber>}' | jq -r .projectStatus.status) + QUALITY_GATE_STATUS=$(curl -u <+secrets.getValue('sonarqube-token')>: -s 'https://sonar.harness.io/api/qualitygates/project_status?projectKey=python-client&pullRequest=${<+codebase.prNumber>}' | jq -r .projectStatus.status) echo "QUALITY_GATE_STATUS: $QUALITY_GATE_STATUS" From 367990007a31b88b834d12951d41f100d98ae9ed Mon Sep 17 00:00:00 2001 From: Bilal Al-Shahwany Date: Thu, 5 Feb 2026 01:00:42 +0000 Subject: [PATCH 147/155] Update pipeline python-client --- .../PROD/projects/Harness_Split/pipelines/pythonclient.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml b/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml index 1794af64..58dc32ed 100644 --- a/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml +++ b/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml @@ -63,7 +63,7 @@ pipeline: # Post status to GitHub curl -X POST \ - -H "Authorization: token ${<+secrets.getValue('github_token')>}" \ + -H "Authorization: token ${<+secrets.getValue('github-token')>}" \ -H "Content-Type: application/json" \ -d "{ \"state\": \"$STATE\", From 7b3860eed24bf648e8d79d12a771fd781e6624f4 Mon Sep 17 00:00:00 2001 From: Bilal Al-Shahwany Date: Thu, 5 Feb 2026 01:04:29 +0000 Subject: [PATCH 148/155] Update pipeline python-client --- .../PROD/projects/Harness_Split/pipelines/pythonclient.yaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml b/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml index 58dc32ed..32f8f78d 100644 --- a/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml +++ b/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml @@ -66,8 +66,8 @@ pipeline: -H "Authorization: token ${<+secrets.getValue('github-token')>}" \ -H "Content-Type: application/json" \ -d "{ - \"state\": \"$STATE\", - \"description\": \"$DESCRIPTION\", + \"state\": \"${STATE}\", + \"description\": \"${DESCRIPTION}\", \"context\": \"sonarqube/qualitygate\", \"target_url\": \"https://sonar.harness.io/dashboard?id=python-client&pullRequest=${<+codebase.prNumber>}\" }" \ From 0e723da70675e10089e94d6c063354b45e136dcc Mon Sep 17 00:00:00 2001 From: Bilal Al-Shahwany Date: Thu, 5 Feb 2026 01:08:47 +0000 Subject: [PATCH 149/155] Update pipeline python-client --- .../PROD/projects/Harness_Split/pipelines/pythonclient.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml b/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml index 32f8f78d..d870e0c7 100644 --- a/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml +++ b/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml @@ -63,7 +63,7 @@ pipeline: # Post status to GitHub curl -X POST \ - -H "Authorization: token ${<+secrets.getValue('github-token')>}" \ + -H "Authorization: token ${<+secrets.getValue('github-devops-token')>}" \ -H "Content-Type: application/json" \ -d "{ \"state\": \"${STATE}\", From 51700a07f9b61b13c5241f5e73136e1b24200063 Mon Sep 17 00:00:00 2001 From: Bilal Al-Shahwany Date: Thu, 5 Feb 2026 01:27:13 +0000 Subject: [PATCH 150/155] Update pipeline python-client --- .../Harness_Split/pipelines/pythonclient.yaml | 106 +++++++++--------- 1 file changed, 53 insertions(+), 53 deletions(-) diff --git a/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml b/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml index d870e0c7..2be61cb1 100644 --- a/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml +++ b/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient.yaml @@ -36,42 +36,35 @@ pipeline: execution: steps: - step: - type: Run - name: Post Quality Gate to GitHub - identifier: Post_Quality_Gate_to_GitHub + timeout: 30m + type: Test + name: Run Python Tests + identifier: run_tests spec: + connectorRef: account.harnessImage + image: python:3.7.16-alpine shell: Sh command: |- - # Get SonarQube quality gate status - curl -u <+secrets.getValue('sonarqube-token')>: \ - -s "https://sonar.harness.io/api/qualitygates/project_status?projectKey=python-client&pullRequest=${<+codebase.prNumber>}" - - curl -u <+secrets.getValue('sonarqube-token')>: -s 'https://sonar.harness.io/api/qualitygates/project_status?projectKey=python-client&pullRequest=${<+codebase.prNumber>}' | jq -r .projectStatus.status - - QUALITY_GATE_STATUS=$(curl -u <+secrets.getValue('sonarqube-token')>: -s 'https://sonar.harness.io/api/qualitygates/project_status?projectKey=python-client&pullRequest=${<+codebase.prNumber>}' | jq -r .projectStatus.status) + apk update + apk add --no-cache krb5-dev musl-dev libffi-dev build-base - echo "QUALITY_GATE_STATUS: $QUALITY_GATE_STATUS" + # Run pytest with JUnit XML report output + cd /harness + pip install --upgrade pip + pip install -U setuptools pip wheel + pip install Cython==3.0.12 + pip install aiohttp==3.8.4 + pip install cryptography==45.0.7 + pip install pycparser==2.21 - # Set GitHub status based on quality gate - if [ "$QUALITY_GATE_STATUS" = "OK" ]; then - STATE="success" - DESCRIPTION="SonarQube Quality Gate passed" - else - STATE="failure" - DESCRIPTION="SonarQube Quality Gate failed" - fi + apk add redis + redis-server /etc/redis.conf & - # Post status to GitHub - curl -X POST \ - -H "Authorization: token ${<+secrets.getValue('github-devops-token')>}" \ - -H "Content-Type: application/json" \ - -d "{ - \"state\": \"${STATE}\", - \"description\": \"${DESCRIPTION}\", - \"context\": \"sonarqube/qualitygate\", - \"target_url\": \"https://sonar.harness.io/dashboard?id=python-client&pullRequest=${<+codebase.prNumber>}\" - }" \ - "https://api.github.com/repos/splitio/python-client/statuses/<+codebase.commitSha>" + pip install redis==5.0.8 + python setup.py test + envVariables: + PYTHONPATH: ${PYTHONPATH}:. + PYTEST_ADDOPTS: "--verbose" - step: type: Run name: Install and Run SonarQube Scanner @@ -109,35 +102,42 @@ pipeline: - name: SONAR_SCANNER_PATH timeout: 10m - step: - timeout: 30m - type: Test - name: Run Python Tests - identifier: run_tests + type: Run + name: Post Quality Gate to GitHub + identifier: Post_Quality_Gate_to_GitHub spec: - connectorRef: account.harnessImage - image: python:3.7.16-alpine shell: Sh command: |- - apk update - apk add --no-cache krb5-dev musl-dev libffi-dev build-base + # Get SonarQube quality gate status + curl -u <+secrets.getValue('sonarqube-token')>: \ + -s "https://sonar.harness.io/api/qualitygates/project_status?projectKey=python-client&pullRequest=${<+codebase.prNumber>}" - # Run pytest with JUnit XML report output - cd /harness - pip install --upgrade pip - pip install -U setuptools pip wheel - pip install Cython==3.0.12 - pip install aiohttp==3.8.4 - pip install cryptography==45.0.7 - pip install pycparser==2.21 + curl -u <+secrets.getValue('sonarqube-token')>: -s 'https://sonar.harness.io/api/qualitygates/project_status?projectKey=python-client&pullRequest=${<+codebase.prNumber>}' | jq -r .projectStatus.status - apk add redis - redis-server /etc/redis.conf & + QUALITY_GATE_STATUS=$(curl -u <+secrets.getValue('sonarqube-token')>: -s 'https://sonar.harness.io/api/qualitygates/project_status?projectKey=python-client&pullRequest=${<+codebase.prNumber>}' | jq -r .projectStatus.status) - pip install redis==5.0.8 - python setup.py test - envVariables: - PYTHONPATH: ${PYTHONPATH}:. - PYTEST_ADDOPTS: "--verbose" + echo "QUALITY_GATE_STATUS: $QUALITY_GATE_STATUS" + + # Set GitHub status based on quality gate + if [ "$QUALITY_GATE_STATUS" = "OK" ]; then + STATE="success" + DESCRIPTION="SonarQube Quality Gate passed" + else + STATE="failure" + DESCRIPTION="SonarQube Quality Gate failed" + fi + + # Post status to GitHub + curl -X POST \ + -H "Authorization: token ${<+secrets.getValue('github-devops-token')>}" \ + -H "Content-Type: application/json" \ + -d "{ + \"state\": \"${STATE}\", + \"description\": \"${DESCRIPTION}\", + \"context\": \"sonarqube/qualitygate\", + \"target_url\": \"https://sonar.harness.io/dashboard?id=python-client&pullRequest=${<+codebase.prNumber>}\" + }" \ + "https://api.github.com/repos/splitio/python-client/statuses/<+codebase.commitSha>" rollbackSteps: [] rollbackSteps: [] caching: From 7ac947ffec5ebc9af9af039051b0330739f0762a Mon Sep 17 00:00:00 2001 From: Bilal Al-Shahwany Date: Thu, 5 Feb 2026 17:09:31 +0000 Subject: [PATCH 151/155] Create inputset python-client --- .../pythonclient/input_sets/pythonclient.yaml | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) create mode 100644 .harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient/input_sets/pythonclient.yaml diff --git a/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient/input_sets/pythonclient.yaml b/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient/input_sets/pythonclient.yaml new file mode 100644 index 00000000..31ad6fff --- /dev/null +++ b/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient/input_sets/pythonclient.yaml @@ -0,0 +1,16 @@ +inputSet: + name: python-client + identifier: pythonclient + orgIdentifier: PROD + projectIdentifier: Harness_Split + pipeline: + identifier: pythonclient + properties: + ci: + codebase: + connectorRef: fmegithubharnessgitops + repoName: python-client + build: + type: PR + spec: + number: <+trigger.prNumber> From 7cbe9581ae930827dae8f1a4d96f3b3c9e36a0a7 Mon Sep 17 00:00:00 2001 From: Bilal Al-Shahwany Date: Thu, 5 Feb 2026 09:18:12 -0800 Subject: [PATCH 152/155] polish --- .../pipelines/pythonclient/input_sets/entry.yaml | 16 ---------------- .../pythonclient/input_sets/entry2.yaml | 16 ---------------- LICENSE.txt | 2 +- setup.py | 7 +++---- 4 files changed, 4 insertions(+), 37 deletions(-) delete mode 100644 .harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient/input_sets/entry.yaml delete mode 100644 .harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient/input_sets/entry2.yaml diff --git a/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient/input_sets/entry.yaml b/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient/input_sets/entry.yaml deleted file mode 100644 index ff5a4c23..00000000 --- a/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient/input_sets/entry.yaml +++ /dev/null @@ -1,16 +0,0 @@ -inputSet: - pipeline: - identifier: pythonclient - properties: - ci: - codebase: - connectorRef: fmegithubharnessgitops - repoName: python-client - build: - spec: - branch: harness_pipeline - type: branch - name: entry - identifier: entry - orgIdentifier: PROD - projectIdentifier: Harness_Split diff --git a/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient/input_sets/entry2.yaml b/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient/input_sets/entry2.yaml deleted file mode 100644 index d97a24aa..00000000 --- a/.harness/orgs/PROD/projects/Harness_Split/pipelines/pythonclient/input_sets/entry2.yaml +++ /dev/null @@ -1,16 +0,0 @@ -inputSet: - pipeline: - identifier: pythonclient - properties: - ci: - codebase: - connectorRef: fmegithubharnessgitops - repoName: python-client - build: - type: PR - spec: - number: "626" - name: entry2 - identifier: entry2 - orgIdentifier: PROD - projectIdentifier: Harness_Split diff --git a/LICENSE.txt b/LICENSE.txt index 0f9e8a59..0f4dec61 100644 --- a/LICENSE.txt +++ b/LICENSE.txt @@ -157,7 +157,7 @@ Apache License file or class name and description of purpose be included on the same "printed page" as the copyright notice for easier identification within third-party archives. - Copyright [yyyy] [name of copyright owner] + Copyright 2025 Harness Corporation Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at diff --git a/setup.py b/setup.py index 3f7ddc07..e2b4c74a 100644 --- a/setup.py +++ b/setup.py @@ -15,16 +15,15 @@ 'iniconfig==1.1.1', 'attrs==22.1.0', 'pytest-asyncio==0.21.0', - 'aiohttp==3.8.4', + 'aiohttp>=3.8.4', 'aiofiles>=23.1.0', 'requests-kerberos>=0.15.0', - 'urllib3==2.0.7', - 'cryptography<=45.0.7' + 'urllib3==2.0.7' ] INSTALL_REQUIRES = [ 'requests', - 'pyyaml<=6.0.1', + 'pyyaml', 'docopt>=0.6.2', 'enum34;python_version<"3.4"', 'bloom-filter2>=2.0.0' From 9582109b509793e7fb88ac3e4f8270a44e8d4673 Mon Sep 17 00:00:00 2001 From: Emiliano Sanchez Date: Sat, 20 Jun 2026 00:50:43 -0300 Subject: [PATCH 153/155] Bug fixes and polishing --- CHANGES.txt | 5 ++ NOTICE.txt | 4 +- doc/source/introduction.rst | 133 ++++++++++++++++++++++++----------- splitio/api/client.py | 4 +- splitio/api/splits.py | 28 +++++--- splitio/client/config.py | 2 +- splitio/engine/evaluator.py | 8 ++- tests/api/test_httpclient.py | 10 +-- 8 files changed, 129 insertions(+), 65 deletions(-) diff --git a/CHANGES.txt b/CHANGES.txt index 0845c52e..59743eca 100644 --- a/CHANGES.txt +++ b/CHANGES.txt @@ -1,3 +1,8 @@ +10.6.1 (Jun 23, 2026) +- Fixed connectionTimeout config to accept values in seconds, with a default of 15 seconds. +- Fixed splitChanges parsing to handle responses without the 'rbs' field. +- Fixed fallback treatment not being applied when a feature flag has an unsupported matcher type. + 10.6.0 (Jan 28, 2026) - Fixed non-blocking error when fetching feature flags from redis. - Added the ability to listen to different events triggered by the SDK. Read more in our docs. diff --git a/NOTICE.txt b/NOTICE.txt index 7d7d845e..440c9e31 100644 --- a/NOTICE.txt +++ b/NOTICE.txt @@ -1,5 +1,5 @@ -Harness Feature Management JavaScript SDK Copyright 2024-2026 Harness Inc. +Harness Feature Management Python SDK Copyright 2024-2026 Harness Inc. This product includes software developed at Harness Inc. (https://harness.io/). -This product includes software originally developed by Split Software, Inc. (https://www.split.io/). Copyright 2015-2024 Split Software, Inc. +This product includes software originally developed by Split Software, Inc. (https://www.split.io/). Copyright 2016-2024 Split Software, Inc. diff --git a/doc/source/introduction.rst b/doc/source/introduction.rst index a6df7a71..aa7e0d00 100644 --- a/doc/source/introduction.rst +++ b/doc/source/introduction.rst @@ -6,7 +6,7 @@ This project provides Python programs access to the `Split.io Installation and Requirements ----------------------------- -``splitio_client`` supports Python 3 (3.3 or later). Stable versions can be installed from `PyPI `_ using pip: :: +``splitio_client`` supports Python 3 (3.7 or later). Stable versions can be installed from `PyPI `_ using pip: :: pip install splitio_client @@ -14,95 +14,141 @@ and development versions are installed directly from the `Github >> from splitio import get_factory - >>> factory = get_factory('some_api_key') + >>> factory = get_factory('YOUR_SDK_KEY') + >>> factory.block_until_ready(5) >>> client = factory.client() >>> client.get_treatment('some_user', 'some_feature') 'SOME_TREATMENT' +For asyncio environments: :: + + >>> from splitio import get_factory_async + >>> factory = await get_factory_async('YOUR_SDK_KEY') + >>> await factory.block_until_ready(5) + >>> client = factory.client() + >>> await client.get_treatment('some_user', 'some_feature') + 'SOME_TREATMENT' + Bucketing key ------------- -In advanced mode the key can be set as two different parts, one of them just to match the condition and the other one to calculate the treatment bucket :: +In advanced mode the key can be set as two different parts, one of them just to match the condition and the other one to calculate the treatment bucket: :: >>> from splitio import get_factory, Key >>> user = 'some_user_or_anonymous' >>> bucketing_key = 'some_random_string' >>> split_key = Key(user, bucketing_key) - >>> factory = get_factory('API_KEY') + >>> factory = get_factory('YOUR_SDK_KEY') + >>> factory.block_until_ready(5) >>> client = factory.client() >>> client.get_treatment(split_key, 'some_feature') Manager API ----------- -Manager API is very useful to get a representation (view) of cached splits: :: +Manager API is useful to get a representation (view) of cached feature flags: :: >>> from splitio import get_factory - >>> factory = get_factory('API_KEY') + >>> factory = get_factory('YOUR_SDK_KEY') + >>> factory.block_until_ready(5) >>> manager = factory.manager() Available methods: -**splits():** Returns a list of SplitView instance :: +**splits():** Returns a list of SplitView instances: :: + >>> manager.splits() -**split(name):** Returns a SplitView instance :: - >>> manager.split('some_test_name') +**split(name):** Returns a SplitView instance: :: + + >>> manager.split('some_feature_flag') + +**split_names():** Returns a list of feature flag names (String): :: -**split_names():** Returns a list of Split names (String) :: >>> manager.split_names() +Client API +---------- + +The client provides the following methods for evaluating feature flags: + +**get_treatment(key, feature_flag_name, attributes=None, evaluation_options=None):** Returns a treatment string for a single flag. + +**get_treatment_with_config(key, feature_flag_name, attributes=None, evaluation_options=None):** Returns a treatment string and configuration for a single flag. + +**get_treatments(key, feature_flag_names, attributes=None, evaluation_options=None):** Returns treatments for multiple flags. + +**get_treatments_with_config(key, feature_flag_names, attributes=None, evaluation_options=None):** Returns treatments and configurations for multiple flags. + +**get_treatments_by_flag_set(key, flag_set, attributes=None, evaluation_options=None):** Returns treatments for all flags in a flag set. + +**get_treatments_by_flag_sets(key, flag_sets, attributes=None, evaluation_options=None):** Returns treatments for all flags in multiple flag sets. + +**get_treatments_with_config_by_flag_set(key, flag_set, attributes=None, evaluation_options=None):** Returns treatments and configs for all flags in a flag set. + +**get_treatments_with_config_by_flag_sets(key, flag_sets, attributes=None, evaluation_options=None):** Returns treatments and configs for all flags in multiple flag sets. + +**track(key, traffic_type, event_type, value=None, properties=None):** Tracks custom events. + +**destroy():** Gracefully shuts down the client and flushes pending data. + Client configuration -------------------- -It's possible to control certain aspects of the client behaviour by supplying a ``config`` dictionary. For instance, the following snippets shows you how to set the segment update interval to 10 seconds: :: +It's possible to control certain aspects of the client behaviour by supplying a ``config`` dictionary. For instance, the following snippet shows you how to set the segment update interval to 10 seconds: :: >>> from splitio import get_factory >>> config = {'segmentsRefreshRate': 10} - >>> factory = get_factory('some_api_key', config=config) + >>> factory = get_factory('YOUR_SDK_KEY', config=config) + >>> factory.block_until_ready(5) >>> client = factory.client() All the possible configuration options are: -+------------------------+------+--------------------------------------------------------+---------+ -| Key | Type | Description | Default | -+========================+======+========================================================+=========+ -| connectionTimeout | int | The timeout for HTTP connections in milliseconds. | 1500 | -+------------------------+------+--------------------------------------------------------+---------+ -| readTimeout | int | The read timeout for HTTP connections in milliseconds. | 1500 | -+------------------------+------+--------------------------------------------------------+---------+ -| featuresRefreshRate | int | The features (splits) update refresh period in | 5 | -| | | seconds. | | -+------------------------+------+--------------------------------------------------------+---------+ -| segmentsRefreshRate | int | The segments update refresh period in seconds. | 60 | -+------------------------+------+--------------------------------------------------------+---------+ -| metricsRefreshRate | int | The metrics report period in seconds | 60 | -+------------------------+------+--------------------------------------------------------+---------+ -| impressionsRefreshRate | int | The impressions report period in seconds | 60 | -+------------------------+------+--------------------------------------------------------+---------+ -| ready | int | How long to wait (in milliseconds) for the features | | -| | | and segments information to be available. If the | | -| | | timeout is exceeded, a ``TimeoutException`` will be | | -| | | raised. If value is 0, the constructor will return | | -| | | immediately but not all the information might be | | -| | | available right away. | | -+------------------------+------+--------------------------------------------------------+---------+ ++----------------------------+------+--------------------------------------------------------+-----------+ +| Key | Type | Description | Default | ++============================+======+========================================================+===========+ +| connectionTimeout | int | The timeout for HTTP connections in seconds. | 15 | ++----------------------------+------+--------------------------------------------------------+-----------+ +| featuresRefreshRate | int | The feature flags update refresh period in seconds. | 30 | ++----------------------------+------+--------------------------------------------------------+-----------+ +| segmentsRefreshRate | int | The segments update refresh period in seconds. | 30 | ++----------------------------+------+--------------------------------------------------------+-----------+ +| impressionsRefreshRate | int | The impressions report period in seconds. | 300 | ++----------------------------+------+--------------------------------------------------------+-----------+ +| eventsPushRate | int | The events report period in seconds. | 10 | ++----------------------------+------+--------------------------------------------------------+-----------+ +| impressionsMode | str | Impressions tracking mode: OPTIMIZED, DEBUG, or NONE. | OPTIMIZED | ++----------------------------+------+--------------------------------------------------------+-----------+ +| streamingEnabled | bool | Enable streaming updates via SSE. | True | ++----------------------------+------+--------------------------------------------------------+-----------+ +| labelsEnabled | bool | Whether to send rule labels with impressions. | True | ++----------------------------+------+--------------------------------------------------------+-----------+ +| IPAddressesEnabled | bool | Send machine name and IP in headers. | True | ++----------------------------+------+--------------------------------------------------------+-----------+ +| flagSetsFilter | list | Only sync feature flags belonging to these flag sets. | None | ++----------------------------+------+--------------------------------------------------------+-----------+ .. _localhost_environment: + The localhost environment ------------------------- -During development it is possible to create a 'localhost client' to avoid hitting the -Split.io API SDK. The configuration is taken from a ``.split`` file in the user's *HOME* -directory. The ``.split`` file has the following format: :: +During development it is possible to create a 'localhost client' to avoid hitting the Split.io API. The configuration is taken from a ``.split`` file in the user's *HOME* directory or from a JSON file. The ``.split`` file has the following format: :: file: (comment | split_line)+ comment : '#' string*\n @@ -120,6 +166,7 @@ Whenever a treatment is requested for the feature ``feature_0``, ``treatment_0`` >>> from splitio import get_factory >>> factory = get_factory('localhost') + >>> factory.block_until_ready(5) >>> client = factory.client() >>> client.get_treatment('some_user', 'feature_0') 'treatment_0' @@ -128,11 +175,11 @@ Whenever a treatment is requested for the feature ``feature_0``, ``treatment_0`` >>> client.get_treatment('yet_another_user', 'feature_1') 'treatment_1' >>> client.get_treatment('some_user', 'non_existent_feature') - 'CONTROL' + 'control' -Notice that an API key is not necessary for the localhost environment, and the ``CONTROL`` is returned for non existent features. +Notice that an SDK key is not necessary for the localhost environment, and ``control`` is returned for non-existent features. -It is possible to specify a different splits file using the ``split_definition_file_name`` argument: :: +JSON files are also supported in localhost mode by setting the ``splitFile`` config option to a ``.json`` file path: :: >>> from splitio import get_factory >>> factory = get_factory('localhost', split_definition_file_name='/path/to/splits/file') diff --git a/splitio/api/client.py b/splitio/api/client.py index c9032e0e..8c90e653 100644 --- a/splitio/api/client.py +++ b/splitio/api/client.py @@ -108,7 +108,7 @@ def __init__(self, timeout=None, sdk_url=None, events_url=None, auth_url=None, t :type telemetry_url: str """ _LOGGER.debug("Initializing httpclient") - self._timeout = timeout/1000 if timeout else None # Convert ms to seconds. + self._timeout = timeout if timeout else None self._urls = _construct_urls(sdk_url, events_url, auth_url, telemetry_url) @abc.abstractmethod @@ -399,7 +399,7 @@ def __init__(self, timeout=None, sdk_url=None, events_url=None, auth_url=None, t :type authentication_params: [str, str] """ _LOGGER.debug("Initializing httpclient for Kerberos auth") - self._timeout = timeout/1000 if timeout else None # Convert ms to seconds. + self._timeout = timeout if timeout else None self._urls = _construct_urls(sdk_url, events_url, auth_url, telemetry_url) self._authentication_scheme = authentication_scheme self._authentication_params = authentication_params diff --git a/splitio/api/splits.py b/splitio/api/splits.py index 771100fc..a86ec019 100644 --- a/splitio/api/splits.py +++ b/splitio/api/splits.py @@ -104,24 +104,27 @@ def fetch_splits(self, change_number, rbs_change_number, fetch_options): if 200 <= response.status_code < 300: if self._spec_version == _SPEC_1_1: return util.convert_to_new_spec(json.loads(response.body)) - + self.clear_storage = self._last_proxy_check_timestamp != 0 self._last_proxy_check_timestamp = 0 - return json.loads(response.body) + parsed = json.loads(response.body) + if 'rbs' not in parsed: + parsed['rbs'] = {"d": [], "s": -1, "t": -1} + return parsed else: if response.status_code == 414: _LOGGER.error('Error fetching feature flags; the amount of flag sets provided are too big, causing uri length error.') - + if self._client.is_sdk_endpoint_overridden() and response.status_code == 400 and self._spec_version == SPEC_VERSION: _LOGGER.warning('Detected proxy response error, changing spec version from %s to %s and re-fetching.', self._spec_version, _SPEC_1_1) self._spec_version = _SPEC_1_1 - self._last_proxy_check_timestamp = utctime_ms() + self._last_proxy_check_timestamp = utctime_ms() return self.fetch_splits(change_number, None, FetchOptions(fetch_options.cache_control_headers, fetch_options.change_number, None, fetch_options.sets, self._spec_version)) - + raise APIException(response.body, response.status_code) - + except HttpClientException as exc: _LOGGER.error('Error fetching feature flags because an exception was raised by the HTTPClient') _LOGGER.debug('Error: ', exc_info=True) @@ -178,24 +181,27 @@ async def fetch_splits(self, change_number, rbs_change_number, fetch_options): if 200 <= response.status_code < 300: if self._spec_version == _SPEC_1_1: return util.convert_to_new_spec(json.loads(response.body)) - + self.clear_storage = self._last_proxy_check_timestamp != 0 self._last_proxy_check_timestamp = 0 - return json.loads(response.body) + parsed = json.loads(response.body) + if 'rbs' not in parsed: + parsed['rbs'] = {"d": [], "s": -1, "t": -1} + return parsed else: if response.status_code == 414: _LOGGER.error('Error fetching feature flags; the amount of flag sets provided are too big, causing uri length error.') - + if self._client.is_sdk_endpoint_overridden() and response.status_code == 400 and self._spec_version == SPEC_VERSION: _LOGGER.warning('Detected proxy response error, changing spec version from %s to %s and re-fetching.', self._spec_version, _SPEC_1_1) self._spec_version = _SPEC_1_1 - self._last_proxy_check_timestamp = utctime_ms() + self._last_proxy_check_timestamp = utctime_ms() return await self.fetch_splits(change_number, None, FetchOptions(fetch_options.cache_control_headers, fetch_options.change_number, None, fetch_options.sets, self._spec_version)) raise APIException(response.body, response.status_code) - + except HttpClientException as exc: _LOGGER.error('Error fetching feature flags because an exception was raised by the HTTPClient') _LOGGER.debug('Error: ', exc_info=True) diff --git a/splitio/client/config.py b/splitio/client/config.py index 25b1bc31..12a61914 100644 --- a/splitio/client/config.py +++ b/splitio/client/config.py @@ -18,7 +18,7 @@ class AuthenticateScheme(Enum): DEFAULT_CONFIG = { 'operationMode': 'standalone', - 'connectionTimeout': 1500, + 'connectionTimeout': 15, 'streamingEnabled': True, 'featuresRefreshRate': 30, 'segmentsRefreshRate': 30, diff --git a/splitio/engine/evaluator.py b/splitio/engine/evaluator.py index b47db5c5..908cfadc 100644 --- a/splitio/engine/evaluator.py +++ b/splitio/engine/evaluator.py @@ -64,7 +64,13 @@ def eval_with_context(self, key, bucketing, feature_name, attrs, ctx): else: label, _treatment = self._check_prerequisites(feature, bucketing, key, attrs, ctx, label, _treatment) label, _treatment = self._get_treatment(feature, bucketing, key, attrs, ctx, label, _treatment) - config = feature.get_configurations_for(_treatment) + if _treatment == CONTROL: + fallback_treatment = self._fallback_treatment_calculator.resolve(feature_name, label) + label = fallback_treatment.label + _treatment = fallback_treatment.treatment + config = fallback_treatment.config + else: + config = feature.get_configurations_for(_treatment) return { 'treatment': _treatment, diff --git a/tests/api/test_httpclient.py b/tests/api/test_httpclient.py index 837997aa..e6c1ef95 100644 --- a/tests/api/test_httpclient.py +++ b/tests/api/test_httpclient.py @@ -165,7 +165,7 @@ def test_telemetry(self, mocker): get_mock = mocker.Mock() get_mock.return_value = response_mock mocker.patch('splitio.api.client.requests.post', new=get_mock) - httpclient = client.HttpClient(timeout=1500, sdk_url='https://sdk.com', events_url='https://events.com') + httpclient = client.HttpClient(timeout=15, sdk_url='https://sdk.com', events_url='https://events.com') httpclient.set_telemetry_data("metric", telemetry_runtime_producer) self.metric1 = None @@ -313,7 +313,7 @@ def __exit__(self, exc_type, exc_val, exc_tb): pass mocker.patch('splitio.api.client.requests.Session.post', new=post_mock) - httpclient = client.HttpClientKerberos(timeout=1500, sdk_url='https://sdk.com', events_url='https://events.com', authentication_scheme=AuthenticateScheme.KERBEROS_PROXY, authentication_params=[None, None]) + httpclient = client.HttpClientKerberos(timeout=15, sdk_url='https://sdk.com', events_url='https://events.com', authentication_scheme=AuthenticateScheme.KERBEROS_PROXY, authentication_params=[None, None]) httpclient.set_telemetry_data("metric", mocker.Mock()) response = httpclient.post('events', 'test1', 'some_api_key', {'p1': 'a'}, {'param1': 123}, {'h1': 'abc'}) @@ -331,7 +331,7 @@ def __exit__(self, exc_type, exc_val, exc_tb): tparams = None ttimeout = None mocker.patch('splitio.api.client.requests.Session.get', new=get_mock) - httpclient = client.HttpClientKerberos(timeout=1500, sdk_url='https://sdk.com', authentication_scheme=AuthenticateScheme.KERBEROS_PROXY, authentication_params=['bilal', 'split']) + httpclient = client.HttpClientKerberos(timeout=15, sdk_url='https://sdk.com', authentication_scheme=AuthenticateScheme.KERBEROS_PROXY, authentication_params=['bilal', 'split']) httpclient.set_telemetry_data("metric", mocker.Mock()) response = httpclient.get('sdk', '/test1', 'some_api_key', {'param1': 123}, {'h1': 'abc'}) assert turl == 'https://sdk.com/test1' @@ -429,7 +429,7 @@ def __exit__(self, exc_type, exc_val, exc_tb): pass mocker.patch('splitio.api.client.requests.Session.post', new=post_mock) - httpclient = client.HttpClientKerberos(timeout=1500, sdk_url='https://sdk.com', events_url='https://events.com', authentication_scheme=AuthenticateScheme.KERBEROS_PROXY, authentication_params=[None, None]) + httpclient = client.HttpClientKerberos(timeout=15, sdk_url='https://sdk.com', events_url='https://events.com', authentication_scheme=AuthenticateScheme.KERBEROS_PROXY, authentication_params=[None, None]) httpclient.set_telemetry_data("metric", mocker.Mock()) response = httpclient.post('events', 'test1', 'some_api_key', {'p1': 'a'}, {'param1': 123}, {'h1': 'abc'}) assert response.status_code == 200 @@ -449,7 +449,7 @@ def test_telemetry(self, mocker): get_mock = mocker.Mock() get_mock.return_value = response_mock mocker.patch('splitio.api.client.requests.post', new=get_mock) - httpclient = client.HttpClient(timeout=1500, sdk_url='https://sdk.com', events_url='https://events.com') + httpclient = client.HttpClient(timeout=15, sdk_url='https://sdk.com', events_url='https://events.com') httpclient.set_telemetry_data("metric", telemetry_runtime_producer) self.metric1 = None From 011a657bc09a1bb377a0af5f3eebf26edc1bbd93 Mon Sep 17 00:00:00 2001 From: Emiliano Sanchez Date: Tue, 23 Jun 2026 14:05:15 -0300 Subject: [PATCH 154/155] Fix mandatory files --- LICENSE.txt => LICENSE | 35 ++++++++++++++++++++++++++++++++++- NOTICE.txt => NOTICE | 0 2 files changed, 34 insertions(+), 1 deletion(-) rename LICENSE.txt => LICENSE (99%) rename NOTICE.txt => NOTICE (100%) diff --git a/LICENSE.txt b/LICENSE similarity index 99% rename from LICENSE.txt rename to LICENSE index 0f9e8a59..d6456956 100644 --- a/LICENSE.txt +++ b/LICENSE @@ -1,12 +1,18 @@ -Apache License + + Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + 1. Definitions. + "License" shall mean the terms and conditions for use, reproduction, and distribution as defined by Sections 1 through 9 of this document. + "Licensor" shall mean the copyright owner or entity authorized by the copyright owner that is granting the License. + "Legal Entity" shall mean the union of the acting entity and all other entities that control, are controlled by, or are under common control with that entity. For the purposes of this definition, @@ -14,19 +20,24 @@ Apache License direction or management of such entity, whether by contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial ownership of such entity. + "You" (or "Your") shall mean an individual or Legal Entity exercising permissions granted by this License. + "Source" form shall mean the preferred form for making modifications, including but not limited to software source code, documentation source, and configuration files. + "Object" form shall mean any form resulting from mechanical transformation or translation of a Source form, including but not limited to compiled object code, generated documentation, and conversions to other media types. + "Work" shall mean the work of authorship, whether in Source or Object form, made available under the License, as indicated by a copyright notice that is included in or attached to the work (an example is provided in the Appendix below). + "Derivative Works" shall mean any work, whether in Source or Object form, that is based on (or derived from) the Work and for which the editorial revisions, annotations, elaborations, or other modifications @@ -34,6 +45,7 @@ Apache License of this License, Derivative Works shall not include works that remain separable from, or merely link (or bind by name) to the interfaces of, the Work and Derivative Works thereof. + "Contribution" shall mean any work of authorship, including the original version of the Work and any modifications or additions to that Work or Derivative Works thereof, that is intentionally @@ -47,15 +59,18 @@ Apache License Licensor for the purpose of discussing and improving the Work, but excluding communication that is conspicuously marked or otherwise designated in writing by the copyright owner as "Not a Contribution." + "Contributor" shall mean Licensor and any individual or Legal Entity on behalf of whom a Contribution has been received by Licensor and subsequently incorporated within the Work. + 2. Grant of Copyright License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare Derivative Works of, publicly display, publicly perform, sublicense, and distribute the Work and such Derivative Works in Source or Object form. + 3. Grant of Patent License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable @@ -71,19 +86,24 @@ Apache License or contributory patent infringement, then any patent licenses granted to You under this License for that Work shall terminate as of the date such litigation is filed. + 4. Redistribution. You may reproduce and distribute copies of the Work or Derivative Works thereof in any medium, with or without modifications, and in Source or Object form, provided that You meet the following conditions: + (a) You must give any other recipients of the Work or Derivative Works a copy of this License; and + (b) You must cause any modified files to carry prominent notices stating that You changed the files; and + (c) You must retain, in the Source form of any Derivative Works that You distribute, all copyright, patent, trademark, and attribution notices from the Source form of the Work, excluding those notices that do not pertain to any part of the Derivative Works; and + (d) If the Work includes a "NOTICE" text file as part of its distribution, then any Derivative Works that You distribute must include a readable copy of the attribution notices contained @@ -100,12 +120,14 @@ Apache License or as an addendum to the NOTICE text from the Work, provided that such additional attribution notices cannot be construed as modifying the License. + You may add Your own copyright statement to Your modifications and may provide additional or different license terms and conditions for use, reproduction, or distribution of Your modifications, or for any such Derivative Works as a whole, provided Your use, reproduction, and distribution of the Work otherwise complies with the conditions stated in this License. + 5. Submission of Contributions. Unless You explicitly state otherwise, any Contribution intentionally submitted for inclusion in the Work by You to the Licensor shall be under the terms and conditions of @@ -113,10 +135,12 @@ Apache License Notwithstanding the above, nothing herein shall supersede or modify the terms of any separate license agreement you may have executed with Licensor regarding such Contributions. + 6. Trademarks. This License does not grant permission to use the trade names, trademarks, service marks, or product names of the Licensor, except as required for reasonable and customary use in describing the origin of the Work and reproducing the content of the NOTICE file. + 7. Disclaimer of Warranty. Unless required by applicable law or agreed to in writing, Licensor provides the Work (and each Contributor provides its Contributions) on an "AS IS" BASIS, @@ -126,6 +150,7 @@ Apache License PARTICULAR PURPOSE. You are solely responsible for determining the appropriateness of using or redistributing the Work and assume any risks associated with Your exercise of permissions under this License. + 8. Limitation of Liability. In no event and under no legal theory, whether in tort (including negligence), contract, or otherwise, unless required by applicable law (such as deliberate and grossly @@ -137,6 +162,7 @@ Apache License work stoppage, computer failure or malfunction, or any and all other commercial damages or losses), even if such Contributor has been advised of the possibility of such damages. + 9. Accepting Warranty or Additional Liability. While redistributing the Work or Derivative Works thereof, You may choose to offer, and charge a fee for, acceptance of support, warranty, indemnity, @@ -147,8 +173,11 @@ Apache License defend, and hold each Contributor harmless for any liability incurred by, or claims asserted against, such Contributor by reason of your accepting any such warranty or additional liability. + END OF TERMS AND CONDITIONS + APPENDIX: How to apply the Apache License to your work. + To apply the Apache License to your work, attach the following boilerplate notice, with the fields enclosed by brackets "[]" replaced with your own identifying information. (Don't include @@ -157,11 +186,15 @@ Apache License file or class name and description of purpose be included on the same "printed page" as the copyright notice for easier identification within third-party archives. + Copyright [yyyy] [name of copyright owner] + Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at + http://www.apache.org/licenses/LICENSE-2.0 + Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. diff --git a/NOTICE.txt b/NOTICE similarity index 100% rename from NOTICE.txt rename to NOTICE From d27e8bd563b32995ca219a4a77df99f1edaebda8 Mon Sep 17 00:00:00 2001 From: Emiliano Sanchez Date: Tue, 23 Jun 2026 16:43:06 -0300 Subject: [PATCH 155/155] Rollback connectionTimeout update --- CHANGES.txt | 1 - doc/source/introduction.rst | 2 +- splitio/api/client.py | 16 ++++++++-------- splitio/client/config.py | 18 +++++++++--------- tests/api/test_httpclient.py | 10 +++++----- 5 files changed, 23 insertions(+), 24 deletions(-) diff --git a/CHANGES.txt b/CHANGES.txt index 59743eca..6560937b 100644 --- a/CHANGES.txt +++ b/CHANGES.txt @@ -1,5 +1,4 @@ 10.6.1 (Jun 23, 2026) -- Fixed connectionTimeout config to accept values in seconds, with a default of 15 seconds. - Fixed splitChanges parsing to handle responses without the 'rbs' field. - Fixed fallback treatment not being applied when a feature flag has an unsupported matcher type. diff --git a/doc/source/introduction.rst b/doc/source/introduction.rst index aa7e0d00..db989102 100644 --- a/doc/source/introduction.rst +++ b/doc/source/introduction.rst @@ -122,7 +122,7 @@ All the possible configuration options are: +----------------------------+------+--------------------------------------------------------+-----------+ | Key | Type | Description | Default | +============================+======+========================================================+===========+ -| connectionTimeout | int | The timeout for HTTP connections in seconds. | 15 | +| connectionTimeout | int | The timeout for HTTP connections in milliseconds. | 1500 | +----------------------------+------+--------------------------------------------------------+-----------+ | featuresRefreshRate | int | The feature flags update refresh period in seconds. | 30 | +----------------------------+------+--------------------------------------------------------+-----------+ diff --git a/splitio/api/client.py b/splitio/api/client.py index 8c90e653..559d1405 100644 --- a/splitio/api/client.py +++ b/splitio/api/client.py @@ -108,7 +108,7 @@ def __init__(self, timeout=None, sdk_url=None, events_url=None, auth_url=None, t :type telemetry_url: str """ _LOGGER.debug("Initializing httpclient") - self._timeout = timeout if timeout else None + self._timeout = timeout/1000 if timeout else None # Convert ms to seconds. self._urls = _construct_urls(sdk_url, events_url, auth_url, telemetry_url) @abc.abstractmethod @@ -177,7 +177,7 @@ def __init__(self, timeout=None, sdk_url=None, events_url=None, auth_url=None, t :type telemetry_url: str """ HttpClientBase.__init__(self, timeout, sdk_url, events_url, auth_url, telemetry_url) - + def get(self, server, path, sdk_key, query=None, extra_headers=None): # pylint: disable=too-many-arguments """ Issue a get request. @@ -209,9 +209,9 @@ def get(self, server, path, sdk_key, query=None, extra_headers=None): # pylint: except requests.exceptions.ChunkedEncodingError as exc: _LOGGER.error("IncompleteRead exception detected: %s", exc) - return HttpResponse(400, "", {}) - - except Exception as exc: # pylint: disable=broad-except + return HttpResponse(400, "", {}) + + except Exception as exc: # pylint: disable=broad-except raise HttpClientException(_EXC_MSG.format(source='request')) from exc def post(self, server, path, sdk_key, body, query=None, extra_headers=None): # pylint: disable=too-many-arguments @@ -306,8 +306,8 @@ async def get(self, server, path, apikey, query=None, extra_headers=None): # py except aiohttp.ClientPayloadError as exc: _LOGGER.error("ContentLengthError exception detected: %s", exc) - return HttpResponse(400, "", {}) - + return HttpResponse(400, "", {}) + except aiohttp.ClientError as exc: # pylint: disable=broad-except raise HttpClientException(_EXC_MSG.format(source='aiohttp')) from exc @@ -399,7 +399,7 @@ def __init__(self, timeout=None, sdk_url=None, events_url=None, auth_url=None, t :type authentication_params: [str, str] """ _LOGGER.debug("Initializing httpclient for Kerberos auth") - self._timeout = timeout if timeout else None + self._timeout = timeout/1000 if timeout else None # Convert ms to seconds. self._urls = _construct_urls(sdk_url, events_url, auth_url, telemetry_url) self._authentication_scheme = authentication_scheme self._authentication_params = authentication_params diff --git a/splitio/client/config.py b/splitio/client/config.py index 12a61914..8310e5db 100644 --- a/splitio/client/config.py +++ b/splitio/client/config.py @@ -18,7 +18,7 @@ class AuthenticateScheme(Enum): DEFAULT_CONFIG = { 'operationMode': 'standalone', - 'connectionTimeout': 15, + 'connectionTimeout': 1500, 'streamingEnabled': True, 'featuresRefreshRate': 30, 'segmentsRefreshRate': 30, @@ -170,36 +170,36 @@ def sanitize(sdk_key, config): ' Defaulting to `none` mode.') processed["httpAuthenticateScheme"] = authenticate_scheme - processed = _sanitize_fallback_config(config, processed) - + processed = _sanitize_fallback_config(config, processed) + if config.get("redisErrors") is not None: _LOGGER.warning('Parameter `redisErrors` is deprecated as it is no longer supported in redis lib.' \ ' Will ignore this value.') - + processed["redisErrors"] = None return processed def _sanitize_fallback_config(config, processed): if config.get('fallbackTreatments') is None: return processed - + if not isinstance(config['fallbackTreatments'], FallbackTreatmentsConfiguration): _LOGGER.warning('Config: fallbackTreatments parameter should be of `FallbackTreatmentsConfiguration` class.') processed['fallbackTreatments'] = None - return processed - + return processed + sanitized_global_fallback_treatment = config['fallbackTreatments'].global_fallback_treatment if config['fallbackTreatments'].global_fallback_treatment is not None and not validate_fallback_treatment(config['fallbackTreatments'].global_fallback_treatment): _LOGGER.warning('Config: global fallbacktreatment parameter is discarded.') sanitized_global_fallback_treatment = None - + sanitized_flag_fallback_treatments = {} if config['fallbackTreatments'].by_flag_fallback_treatment is not None: for feature_name in config['fallbackTreatments'].by_flag_fallback_treatment.keys(): if not validate_regex_name(feature_name) or not validate_fallback_treatment(config['fallbackTreatments'].by_flag_fallback_treatment[feature_name]): _LOGGER.warning('Config: fallback treatment parameter for feature flag %s is discarded.', feature_name) continue - + sanitized_flag_fallback_treatments[feature_name] = config['fallbackTreatments'].by_flag_fallback_treatment[feature_name] processed['fallbackTreatments'] = FallbackTreatmentsConfiguration(sanitized_global_fallback_treatment, sanitized_flag_fallback_treatments) diff --git a/tests/api/test_httpclient.py b/tests/api/test_httpclient.py index e6c1ef95..837997aa 100644 --- a/tests/api/test_httpclient.py +++ b/tests/api/test_httpclient.py @@ -165,7 +165,7 @@ def test_telemetry(self, mocker): get_mock = mocker.Mock() get_mock.return_value = response_mock mocker.patch('splitio.api.client.requests.post', new=get_mock) - httpclient = client.HttpClient(timeout=15, sdk_url='https://sdk.com', events_url='https://events.com') + httpclient = client.HttpClient(timeout=1500, sdk_url='https://sdk.com', events_url='https://events.com') httpclient.set_telemetry_data("metric", telemetry_runtime_producer) self.metric1 = None @@ -313,7 +313,7 @@ def __exit__(self, exc_type, exc_val, exc_tb): pass mocker.patch('splitio.api.client.requests.Session.post', new=post_mock) - httpclient = client.HttpClientKerberos(timeout=15, sdk_url='https://sdk.com', events_url='https://events.com', authentication_scheme=AuthenticateScheme.KERBEROS_PROXY, authentication_params=[None, None]) + httpclient = client.HttpClientKerberos(timeout=1500, sdk_url='https://sdk.com', events_url='https://events.com', authentication_scheme=AuthenticateScheme.KERBEROS_PROXY, authentication_params=[None, None]) httpclient.set_telemetry_data("metric", mocker.Mock()) response = httpclient.post('events', 'test1', 'some_api_key', {'p1': 'a'}, {'param1': 123}, {'h1': 'abc'}) @@ -331,7 +331,7 @@ def __exit__(self, exc_type, exc_val, exc_tb): tparams = None ttimeout = None mocker.patch('splitio.api.client.requests.Session.get', new=get_mock) - httpclient = client.HttpClientKerberos(timeout=15, sdk_url='https://sdk.com', authentication_scheme=AuthenticateScheme.KERBEROS_PROXY, authentication_params=['bilal', 'split']) + httpclient = client.HttpClientKerberos(timeout=1500, sdk_url='https://sdk.com', authentication_scheme=AuthenticateScheme.KERBEROS_PROXY, authentication_params=['bilal', 'split']) httpclient.set_telemetry_data("metric", mocker.Mock()) response = httpclient.get('sdk', '/test1', 'some_api_key', {'param1': 123}, {'h1': 'abc'}) assert turl == 'https://sdk.com/test1' @@ -429,7 +429,7 @@ def __exit__(self, exc_type, exc_val, exc_tb): pass mocker.patch('splitio.api.client.requests.Session.post', new=post_mock) - httpclient = client.HttpClientKerberos(timeout=15, sdk_url='https://sdk.com', events_url='https://events.com', authentication_scheme=AuthenticateScheme.KERBEROS_PROXY, authentication_params=[None, None]) + httpclient = client.HttpClientKerberos(timeout=1500, sdk_url='https://sdk.com', events_url='https://events.com', authentication_scheme=AuthenticateScheme.KERBEROS_PROXY, authentication_params=[None, None]) httpclient.set_telemetry_data("metric", mocker.Mock()) response = httpclient.post('events', 'test1', 'some_api_key', {'p1': 'a'}, {'param1': 123}, {'h1': 'abc'}) assert response.status_code == 200 @@ -449,7 +449,7 @@ def test_telemetry(self, mocker): get_mock = mocker.Mock() get_mock.return_value = response_mock mocker.patch('splitio.api.client.requests.post', new=get_mock) - httpclient = client.HttpClient(timeout=15, sdk_url='https://sdk.com', events_url='https://events.com') + httpclient = client.HttpClient(timeout=1500, sdk_url='https://sdk.com', events_url='https://events.com') httpclient.set_telemetry_data("metric", telemetry_runtime_producer) self.metric1 = None