From 5e166853d437016f5fdb9af48a7128e1c3449efe Mon Sep 17 00:00:00 2001 From: Utkal Singh Date: Fri, 14 Aug 2026 05:09:59 +0530 Subject: [PATCH] ci(sdk): stage placeholder credentials when secrets are unavailable MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit A pull request from a fork receives no CONNECTOR_SPECIFIC_AUTH, so the "Create connector credentials" step wrote no creds.json and logged "running in dry-run mode" — but nothing downstream implements that mode. Every SDK harness resolves creds.json, and the four disagree on what a missing file means: the Rust gRPC harness exits with "Configuration error", Kotlin throws IllegalArgumentException, JavaScript and Python fall back to placeholders. The job died in its first test step, and the FFI and mock steps behind it never ran — both need the file too. Copy creds_dummy.json, the file the mock tests already use, so all four harnesses take one path. The values stay rather than being scrubbed to "placeholder": has_valid_credentials() reads a recognised placeholder as "nothing configured", every harness then skips every connector, and passed == 0 && skipped > 0 exits 1. With the dummy values the flows run, the connector rejects the key, and each harness records that as "skipped (connector error)" with the connector still passing — so packaging, native-library loading, transport and request building stay covered without secrets. Runs that hold the secret are unaffected; that branch is untouched. --- .github/workflows/ci.yml | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 1e4847c306..90c8ee72a2 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -698,7 +698,15 @@ jobs: echo "${CONNECTOR_SPECIFIC_AUTH}" > creds.json echo "Connector credentials created" else - echo "No CONNECTOR_SPECIFIC_AUTH secret found, running in dry-run mode" + # A pull request from a fork receives no secrets, and the four smoke-test + # harnesses disagree about a missing creds.json — Rust and Kotlin abort, + # JavaScript and Python fall back to placeholders. Stage the dummy file + # the mock tests already use so all four take one path: the connector + # rejects the placeholder key and every harness records that as + # "skipped (connector error)", leaving packaging, native-library + # loading, transport and request building still covered. + cp creds_dummy.json creds.json + echo "No CONNECTOR_SPECIFIC_AUTH secret found, using placeholder credentials from creds_dummy.json" fi - name: Run SDK gRPC Tests