Skip to content

Fix CI: Biome v2 schema + pin @actions/core to v1#7

Merged
lukekim merged 1 commit into
trunkfrom
fix/biome-v2-config
May 2, 2026
Merged

Fix CI: Biome v2 schema + pin @actions/core to v1#7
lukekim merged 1 commit into
trunkfrom
fix/biome-v2-config

Conversation

@lukekim
Copy link
Copy Markdown
Contributor

@lukekim lukekim commented May 2, 2026

Summary

CI on trunk went red after two Dependabot bumps landed:

  1. @biomejs/biome 1.x → 2.x renamed config keys, so npm run lint failed with Found an unknown key 'ignore' / 'include' / 'organizeImports'. Migrate biome.json to the v2 schema:

    • files.ignorefiles.includes with negation patterns (["**", "!dist", ...])
    • overrides[*].includeoverrides[*].includes
    • top-level organizeImportsassist.actions.source.organizeImports
    • bump the schema URL.
  2. @actions/core 1.x → 3.x is ESM-only, which the current CJS TypeScript build can't require (TS1479). Pin back to ^1.11.1 (the version we developed against) and ignore future major bumps in Dependabot until we migrate the action to ESM. Tracking the ESM move as a separate effort.

While reorganizing imports, Biome v2's organizer also surfaced a stale unsorted import in src/deploy.ts — applied the auto-fix.

Rebuilt dist/index.js so the dist/ freshness check stays green.

Test plan

  • npm run all passes locally (lint, typecheck, 61 tests, build).
  • npm audit reports 0 vulnerabilities.
  • CI on this PR is green across Ubuntu/macOS/Windows.

Follow-ups

  • Migrate the project to ESM and lift the @actions/core major-version pin.

Two regressions came in via Dependabot bumps on trunk:

- @biomejs/biome 1.x → 2.x renamed config keys (`files.ignore` →
  `files.includes` with negation patterns, `overrides[*].include` →
  `overrides[*].includes`, top-level `organizeImports` moved into
  `assist.actions.source.organizeImports`). Update biome.json to the v2
  schema and reorder a stale import that the v2 organizer flagged.

- @actions/core 1.x → 3.x is ESM-only and broke the CJS TypeScript build
  (TS1479). Pin it back to ^1.11.1 and ignore future major bumps in
  Dependabot until we migrate the project to ESM.
Copilot AI review requested due to automatic review settings May 2, 2026 22:31
Copy link
Copy Markdown

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Fixes CI failures introduced by Dependabot upgrades by migrating the repo’s Biome configuration to the v2 schema and downgrading @actions/core to a CJS-compatible major version for the GitHub Action build/bundle pipeline.

Changes:

  • Migrate biome.json to Biome v2 schema (config key renames + organize imports setting relocation).
  • Pin @actions/core back to ^1.11.1 and update lockfile accordingly.
  • Add a Dependabot ignore rule to prevent future major bumps of @actions/core.

Reviewed changes

Copilot reviewed 4 out of 7 changed files in this pull request and generated 2 comments.

Show a summary per file
File Description
src/deploy.ts Applies Biome’s import organization output.
package.json Pins @actions/core to v1 to restore CJS compatibility.
package-lock.json Updates resolved dependency tree for the @actions/core downgrade.
biome.json Updates Biome config to v2 schema and moves organize-imports to assist.
.github/dependabot.yml Ignores major updates for @actions/core to avoid re-breaking CI.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread package.json
},
"dependencies": {
"@actions/core": "^3.0.1",
"@actions/core": "^1.11.1",
Comment thread .github/dependabot.yml
interval: weekly
open-pull-requests-limit: 10
ignore:
# Pin to v1.x — v2+ is ESM-only and breaks the current CJS bundle. Track
@lukekim lukekim merged commit ac5a8ad into trunk May 2, 2026
7 of 8 checks passed
@lukekim lukekim mentioned this pull request May 2, 2026
3 tasks
lukekim added a commit that referenced this pull request May 2, 2026
Bundles the work from #7 and #8 into a single commit so trunk lands
release-ready in one merge.

CI / build
- Migrate biome.json to the Biome 2.x schema (`files.includes` with
  negation patterns, `overrides[*].includes`,
  `assist.actions.source.organizeImports`).
- Reorder a stale import in src/deploy.ts that the v2 organizer flagged.
- Pin @actions/core to ^1.11.1 — 3.x is ESM-only and breaks the current
  CJS bundle. Add a Dependabot ignore for major bumps until the project
  is migrated to ESM.

Action UX
- `tags` input now accepts a YAML block mapping (the canonical workflow
  form) or a JSON object string, instead of the prior multi-line
  KEY=VALUE format. Tag keys still merge into the app's existing tags
  on every run.
- Update action.yml description, README, and example workflows to the
  new tag form.

Docs
- Correct the GitHub slug from `spiceai/spice-cloud-deploy-action` to
  `spicehq/spice-cloud-deploy-action` everywhere it appeared (README
  badges + examples, package.json metadata, examples/), so a copy/pasted
  `uses:` line resolves to the published action at v1.
- Replace the duplicated tail-of-document "Required scopes" table with a
  single "Scope cheat sheet" right under the OAuth client setup steps,
  including an "All-in (recommended for a single CI client)" row that
  spells out exactly which scopes to grant.

Tests
- New `parseTags` cases cover the YAML form, JSON form, quoted values,
  duplicates, and validation errors.
- Total: 70 unit tests, all green.
lukekim added a commit that referenced this pull request May 2, 2026
* Prepare repo for v1.0.0 release

Bundles the work from #7 and #8 into a single commit so trunk lands
release-ready in one merge.

CI / build
- Migrate biome.json to the Biome 2.x schema (`files.includes` with
  negation patterns, `overrides[*].includes`,
  `assist.actions.source.organizeImports`).
- Reorder a stale import in src/deploy.ts that the v2 organizer flagged.
- Pin @actions/core to ^1.11.1 — 3.x is ESM-only and breaks the current
  CJS bundle. Add a Dependabot ignore for major bumps until the project
  is migrated to ESM.

Action UX
- `tags` input now accepts a YAML block mapping (the canonical workflow
  form) or a JSON object string, instead of the prior multi-line
  KEY=VALUE format. Tag keys still merge into the app's existing tags
  on every run.
- Update action.yml description, README, and example workflows to the
  new tag form.

Docs
- Correct the GitHub slug from `spiceai/spice-cloud-deploy-action` to
  `spicehq/spice-cloud-deploy-action` everywhere it appeared (README
  badges + examples, package.json metadata, examples/), so a copy/pasted
  `uses:` line resolves to the published action at v1.
- Replace the duplicated tail-of-document "Required scopes" table with a
  single "Scope cheat sheet" right under the OAuth client setup steps,
  including an "All-in (recommended for a single CI client)" row that
  spells out exactly which scopes to grant.

Tests
- New `parseTags` cases cover the YAML form, JSON form, quoted values,
  duplicates, and validation errors.
- Total: 70 unit tests, all green.

* fix: address PR review comments

- parseBlockMap duplicate check now uses Object.hasOwn() so prototype-
  chain property names like `toString` and `constructor` aren't falsely
  rejected as duplicates.
- Drop ':' from TAG_KEY_PATTERN. The block-map parser splits on the
  first ':', so a tag key containing ':' (e.g. `foo:bar`) couldn't be
  expressed in YAML form anyway. Aligning the JSON form keeps validation
  consistent across both input styles. Also rewords the validation
  error message to match the trimmed character set.
- Rename the misleading "rejects JSON arrays" test to make clear it
  rejects non-string JSON values; add a separate case for a root-level
  JSON array (which falls through to the YAML parser); add a regression
  test for the prototype-chain dupe-check fix.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants