Repository navigation
feat!: default add-on release workflows to Python 3.13 with 3.9 override (ADDON-89519) - #540
mbruzda-splunk wants to merge 7 commits into
Conversation
BREAKING CHANGE: The reusable workflow no longer accepts python-version or test-python-version. Callers must remove these inputs and use Python 3.13-compatible dependencies and WFE images.
mkolasinski-splunk
left a comment
There was a problem hiding this comment.
Automated deep review (5 independent lenses: Reliability, K8s/Infra, Security, Maintainability, Shell/Bash — all on Claude, no cross-model run available in this environment).
No high-risk findings. 4 medium-risk items all point at the same underlying theme: consolidating python-version/test-python-version into one PYTHON_VERSION fallback gives that single value a wider effective blast radius than before (which test images run, which artifacts get produced, and how far a malformed value could propagate), plus a minor duplicated-expression sync-drift risk. 2 suggestions: a README accuracy regression for python-version: "3.9" overrides, and minor notes on the new find-based summary aggregation.
Security lens: no findings. Job-dependency-graph cleanup from removing run-unit-tests-py313/build-py313 was independently verified clean by two reviewers (no dangling needs:/if: references). The removed vendor-version matrix reference in the SPL2 job was separately confirmed valid (that job's matrix genuinely has no vendor-version field).
All non-blocking / advisory — posting as COMMENT, not requesting changes.
Codex Review SummaryThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
Summary
python-version: "3.9"to run all of those jobs and WFE test dependencies on Python 3.9.actions/download-artifactextracts them at the workspace root or inside an artifact directory; remove an invalid SPL2 matrix reference.python-versioninput and the deprecatedtest-python-versionalias.python-versiontakes precedence; if neither is set, the workflow uses 3.13.Coordinated downstream PRs and MRs
2.0.1-python3.13tag)ECR has both
workflow-engine-ta-test-base:2.0.1-python3.9andworkflow-engine-ta-test-base:2.0.1-python3.13. Argo templates PR #45 selects the tag from thepython-versionparameter and accepts both versions. The published 3.13 container runs Python 3.13.5 and has Poetry 2.1.4 at runtime; WFE pytest scripts do not invoke Poetry. SPL2 is a separate image path: for a 3.9 caller, PR #45 pins its prior Python 3.10 image; for the 3.13 default, the SPL2 framework fix must release, then its image can build and refresh the ECRlatesttag. Merge only after the remaining integration checks are resolved.Review follow-up (2026-10-07)
Current workflow head:
2d9605a3152ddc065a8cfb147d09f6b80b7c9b50.develop(e884eeb), retaining the new PR-scoped TA Validator exception handling. Signed merge commit:d98c8db.695cef8and2d9605a: documented the wider Python override scope and selected-version artifact contract, corrected conditional unit-test documentation, cross-referenced the two required fallback expressions, rejected unsupported selected versions before pre-commit/build/unit/WFE jobs, and scoped/sorted all seven WFE report aggregations.mainwithout suite-selection labels. Its initial unsupported Python 3.10 run completed as expected: rejected the value in the first setup step; pre-commit, unit, build, setup and every WFE submission/report job skipped. The validation failure is expected for this negative scenario; independent FOSSA vulnerability/license checks also failed. An unchanged separate fixture docs workflow failed as well. No WFE jobs were submitted. Caller head10c30cafa13f07968714ad3a81efc9c4eaa485df, baseline2290aa46709754336f43761075f2ac05f48edb91. Full default-Python-3.13 staging run 37633314743 completed on caller4300c9e788b2e36ff75611d980484169f123c267, targeting fixturemainwithout suite-selection labels. Unit, pre-commit, build, setup and all five btool checks passed. All seven modinput variants and five UI variants produced clean JUnit results. Knowledge had exactly the three deliberate sample failures per Splunk version. Modinput, knowledge and UI summary report jobs all passed, aggregating 7, 5 and 5 artifacts respectively. The aggregate run is red because of the intentional knowledge failures, a FOSSA CLI download HTTP 500, and GitHub check-update HTTP 404s in one modinput/two UI jobs whose test results passed. See the detailed current-head fixture section below. No Terraform files changed. The completed MSCS/AWS/CyberArk runs below remain evidence for their recorded earlier workflow SHAs, not this new head.Current-head full fixture validation (2026-10-07)
2d9605a3152ddc065a8cfb147d09f6b80b7c9b50.mainat2290aa46709754336f43761075f2ac05f48edb91, caller4300c9e788b2e36ff75611d980484169f123c267. PR synchronize event, basemain, no suite-selection labels; default Python 3.13 with no override. Sharedmain/developcallers were never modified.python-version=3.13and finished. TA pytest containers usedworkflow-engine-ta-test-base:2.0.1-python3.13; logs confirmed Python 3.13.5. Btool retains its existing infrastructure base imageworkflow-engine-base:4.1.0.17c4730cff2b1842b5cd2b6e718c81f87392de9a; manifests branchfeat/ADDON-89519-python-313at verified commit573e7640fbfe87b430ecbec18e4a2e98667b3b7b.test-results-unit-python_3.13The 15 knowledge failures are explained by fixture commit
2de6a0e("break tests for testing purposes"): expectedBoxaxinstead ofBox, expectedDudmmyUser02instead ofDummyUser02, and mismatchedobject_idafter changing the source ID. Those sample changes and test assertions were retained; no collection errors or additional failed knowledge cases occurred. The run is not fully green. FOSSA failed downloading its unchanged CLI from GitHub with HTTP 500; the three red UI/modinput jobs passed all tests and failed only on the GitHub Checks API HTTP 404. A separate unchanged fixture docs caller at@feat/docs-reusable-workflowfailed after printing "Docs validation success" on Python 3.12.14; it does not reference the migrated workflow SHA. The other docs caller at@v5.2passed.A btool Argo internal output-resolution warning refers to the skipped
test-addonstep; its output expression is byte-for-byte unchanged from the saved staging baseline. All btool containers and GitHub btool checks passed.Cleanup verified: original revisions and full sync policies on all four Argo applications were restored, and
ta-workflow/run-testsPython defaults returned to 3.7, exactly as before the run. No active workflows remain.argo-workflow-templatesretains its pre-existingOutOfSyncstatus with last operationSucceeded; the other three applications areSynced. No Terraform files changed. The temporary fixture PR is closed after evidence collection; shared fixture branches remain untouched. PR #540 remains a draft pending normal review and coordinated release gates.Validation
actionlintpassed for all workflows.developinto the feature branch to resolve the PR conflict (commit2adb89f), preserving Python 3.13 and the summary fix alongside the new repository validation workflow. Localpoetry run pytestpassed (11 tests, 96.67% coverage), and all pre-commit hooks passed.git diff --check.python-version=3.13and the manifests branch from PR chore: update CODEOWNERS #149; the live test pod usedworkflow-engine-ta-test-base:2.0.1-python3.13(Python 3.13.5, Poetry 2.1.4). Knowledge results: 3,358 passed, 2 skipped, 199 xfailed, 6 xpassed, with no failed tests. This run confirms the report artifact layout fix that failed in attempt 2. The WFE runner PR chore(deps): bump docker/login-action from 1.12.0 to 2.0.0 #52 and SPL2 changes remain separate validation work.727ee2band the updated Argo templates. Unit tests, pre-commit, package build, staging btool, staging knowledge, and the knowledge report passed. The live Argo workflows receivedpython-version=3.9; the knowledge pod usedworkflow-engine-ta-test-base:2.0.1-python3.9. Knowledge results: 3,358 passed, 2 skipped, 199 xfailed, 6 xpassed, with no failed tests.python-version=3.13; the knowledge pod usedworkflow-engine-ta-test-base:2.0.1-python3.13. The JUnit artifact records 3,565 tests, 0 errors, 0 failures, 201 skipped or expected failures.check_all_python_files_are_well_formedand FOSSA reports active vulnerability issues (4 in the 3.9 run). The earlier Python 3.13 attempt also failed cloud AppInspect on bundled dependency syntax checks, while the unmodifieddevelopbaseline passed it. These gates need investigation before merging the migration. SPL2 was skipped by this MSCS workflow and needs separate validation.Additional add-on staging validation (2026-10-05)
Both callers pin reusable workflow commit
727ee2be0ed0b59b05318daa12834837002dba73and use Argo templates commit17c4730cff2b1842b5cd2b6e718c81f87392de9aplus manifests commit573e7640fbfe87b430ecbec18e4a2e98667b3b7b. These arepull_requestsynchronize events againstdevelop, withexecute_knowledgeenabled on Splunk 10.6.0 (86587d4e3b27). Unit tests, pre-commit, build, AppInspect, staging setup, btool, knowledge and the knowledge report are selected; modinput, UCC modinput, UI, scripted-input, upgrade and SPL2 suites are skipped. All four staging knowledge pods used the matching publishedworkflow-engine-ta-test-base:2.0.1-python3.9or2.0.1-python3.13image, and live Argo parameters matched the caller scenario. Add-on dependencies and Terraform files are unchanged.f4d92d7splunktafunctionaltestspolicy and FOSSA vulnerability gates (2 active issues) failed. Overall failure.87298dctest_splunk_internal_errorsfound SPL2 language-server socket/health-check errors in Splunk. FOSSA: 2 vulnerability and 3 licensing issues. Overall failure.0a28efasplunktafunctionaltestspolicy and FOSSA vulnerability gates (2 active issues) failed. Overall failure.8ecda53re.PatternErrorerrors in the pinnedpytest-splunk-addon==5.4.0; no knowledge tests executed. FOSSA license and vulnerability gates also failed. Overall failure.Staging cleanup completed after all eight Argo btool/knowledge workflows finished: original
main/main-1.35revisions and auto-sync/self-heal policies were restored, and live workflow Python defaults returned to 3.7. The workflow-template application retains its pre-existingOutOfSyncstatus with its last operationSucceeded. No Terraform files changed. Both add-on validation PRs remain unmerged drafts for review and follow-up.The framework Python 3.13 fix is already merged in pytest-splunk-addon PR #928. AWS pins framework 5.5.0, whose released source already contains the source-key regex fix.
Google Workspace follow-up: Google Workspace pins
pytest-splunk-addon==5.4.0indev_deps/requirements_dev.txt. Its props parser uses(?:(?i)in\s+(\w+))\s*$, which Python 3.13 rejects because the global inline flag is inside a group. Released framework v5.5.0 already moves the flag to the start. Google needs the framework updated to 5.5.0 or a newer compatible release, then both scenarios rerun before knowledge compatibility can be claimed.Replacement add-on validation: CyberArk
Selected CyberArk from the repository dashboard to replace Google Workspace in the validation set. The current add-on supports
>=3.9,<3.14and already pinspytest-splunk-addon==7.0.4. Its recent full baseline passed unit tests on both versions and knowledge tests across four Splunk versions.Validation PR #374 starts from
maincommit039bf960a237730702cd62e01ab4bf10f1497a28because the repository has nodevelopbranch. Its base is the unchanged validation branchtest/ADDON-89519-staging-baselineat that same commit. PR synchronize events useuse_labelsandexecute_knowledge; the selected checks are unit, pre-commit, build, AppInspect, staging setup, btool, knowledge and the knowledge report. The validation base selects only Splunk 10.6.0 for both Python scenarios. The reusable workflow, Argo and manifests commits are the same as the MSCS/AWS tests above. No add-on dependency or Terraform changes.main419953887322ef6ae152fKnowledge logs confirm runtime Python 3.9.23 for the override and Python 3.13.5 for the default, using
2.0.1-python3.9and2.0.1-python3.13images respectively. The two single-version runs intentionally skip modinput, UI, scripted-input, upgrade, UCC modinput and SPL2 suites; AppInspect API cloud is also skipped by branch routing. CLI cloud AppInspect runs and passes.Both CyberArk runs reproduce the same sole
test_splunk_internal_errorsfailure: Splunk 10.6 SPL2 language-server missing sockets, orchestrator health checks and supervisor errors. All other 950 knowledge cases pass in each run, with 42 skip/xfail and no collection errors. Reproduction on both Python versions points to the Splunk/staging runtime rather than a Python 3.13-only regression; the runs are not fully green. No new ignore rules were added.Staging restored: all four Argo application revisions and sync policies exactly match the pre-test backup. Workflow templates again use their original Python 3.7 defaults. No active test workflows remain.
argo-workflow-templatesretains its pre-existingOutOfSyncstate with last operationSucceeded; the other applications areSynced.Ticket: https://splunk.atlassian.net/browse/ADDON-89519