You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
feat: secrets input accepts a map; log per-call API response time (#16)
* feat: secrets input accepts a map; log per-call API timing
Three changes from the latest deploy run feedback.
1. Map-shaped `secrets` input
Mirror the `tags` refactor: accept a YAML block mapping (the canonical
workflow form) or a JSON object string, instead of multi-line
`KEY=VALUE` lines. Same key validation as before — must start with a
letter or underscore, alphanumeric + underscores only — and secret
values can still contain any characters. Each value is added to the
runner's secret-mask list before any API call.
2. Per-call API response time
Every Spice Cloud Management API call now logs
`<METHOD> <path> → <status> <statusText> (<durationMs>ms)` so the
user can see each request's latency inline. Network failures log
`<METHOD> <path> → network error in <durationMs>ms: <message>`.
Removed the redundant pre-call path logs in deploy.ts that the
timing line now covers.
3. Branch missing from step summary
The list-deployments endpoint sometimes returns Deployment objects
without `branch` even when the create request set it. The summary
now falls back to the `branch` and `commit-sha` inputs we sent so
the right values surface even when the API echoes them inconsistently.
Tests: 107 passing (up from 101). New cases cover the YAML and JSON
secret forms (incl. quote-stripping, special characters in values, and
JSON validation) and the post-rebuild `dist/` round-trip.
* chore: bump version to 1.1.0 for release
- package.json: 1.0.0 → 1.1.0.
- CHANGELOG.md: collapse the [Unreleased] block into a [1.1.0] section
dated 2026-05-03, with explicit Breaking changes / Added / Changed /
Fixed buckets. Added an empty [Unreleased] header for future entries.
The release rolls up everything since v1.0.0:
- Breaking: secrets input switched from KEY=VALUE to YAML/JSON map
(matches `tags`); tag-value validation tightened to alphanumeric +
`_@-` only.
- Added: `org`, `flight-url`, `dataset-ready-timeout-seconds` inputs;
`datasets` output; auto-captured `repository` tag; per-call
`<METHOD> <path> → <status> (<ms>ms)` API timing in logs.
- Changed: action runtime bumped from Node 20 to Node 24.
- Fixed: app-url URL pattern, SQL probe gRPC connection, api-key field
names, step-summary branch fallback, punycode deprecation warning,
action.yml `${{ … }}` example evaluation bug.
* Revert "chore: bump version to 1.1.0 for release"
This reverts commit 57ecfd2.
* fix: address PR review comments
- src/main.ts: Use a length-aware fallback (deployment.branch?.length
? deployment.branch : inputs.branch ?? "") so the step summary still
falls back when the API returns an empty string, while documenting
why we treat empty-string as equivalent to missing here.
- src/secrets.ts: Stop calling `.trim()` on secret values. Strip only
the leading whitespace separator after `:` and a matching pair of
outer quotes; trailing whitespace and inner whitespace are preserved
verbatim. Also pass the un-trimmed raw input to parseBlockMap so a
trailing space on the last line isn't lost. Whitespace-significant
values still need quoting to make the boundaries explicit.
- src/api.ts: Move the timing log to AFTER the response body is read
so the duration reflects true end-to-end request latency, not just
time-to-first-byte. Body-read errors retry on the next attempt and
fail with a clear `Failed to read response body for …` message on
exhaustion.
New tests cover trailing whitespace preserved in unquoted secret
values, leading whitespace preserved inside quoted secret values, and
multiple-spaces-after-colon handling.
Copy file name to clipboardExpand all lines: CHANGELOG.md
+7Lines changed: 7 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -6,6 +6,13 @@ to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
6
6
7
7
## [Unreleased]
8
8
9
+
### Changed
10
+
-`secrets` input now accepts the same YAML block mapping or JSON object form as `tags`, instead of multi-line `KEY=VALUE` lines. Existing key validation is unchanged (must start with a letter or underscore, alphanumeric + underscores only); values can contain any characters and are added to the runner's secret-mask list. Update your workflows to swap `=` for `:` between key and value.
11
+
- Every Spice Cloud Management API call now logs `<METHOD> <path> → <status> <statusText> (<durationMs>ms)` so you can see latency for each request inline in the action logs. Network failures log `<METHOD> <path> → network error in <durationMs>ms: <message>`. Removed the redundant pre-call path logs in `deploy.ts` since the timing line covers them.
12
+
13
+
### Fixed
14
+
- The step-summary "Branch" cell was empty when the management API's list-deployments response omitted the `branch` field even though the create request set it. The summary now falls back to the `branch` and `commit-sha` inputs we sent so the right values surface even when the API echoes them inconsistently.
15
+
9
16
### Added
10
17
- New `org` input. The action now constructs the `app-url` output as `https://spice.ai/<org>/<app-name>` (the canonical Spice Cloud portal URL pattern). When `org` is unset, it falls back to the owner part of `GITHUB_REPOSITORY`, which matches the Spice org slug for personal orgs and orgs created from a connected GitHub organization.
11
18
- New `flight-url` input. The action now passes a regional Apache Arrow Flight gRPC endpoint to the `@spiceai/spice` SDK so the SQL probe uses gRPC instead of falling through to localhost. When `flight-url` is unset, it's derived from the resolved app's region as `<region>-prod-aws-flight.spiceai.io:443` (mirrors the data hostname with `-data` swapped for `-flight`). A `grpc+tls://` / `grpc://` scheme prefix on the input is stripped automatically.
0 commit comments