Skip to content

fix(ci): pin azldev to specific commit, drop schema freshness check#16529

Merged
christopherco merged 2 commits into
tomls/base/mainfrom
chrco/fix-ci
Apr 9, 2026
Merged

fix(ci): pin azldev to specific commit, drop schema freshness check#16529
christopherco merged 2 commits into
tomls/base/mainfrom
chrco/fix-ci

Conversation

@christopherco

@christopherco christopherco commented Apr 9, 2026

Copy link
Copy Markdown
Collaborator

The lint CI job was failing because the checked-in JSON schema (azldev.schema.json) was stale — missing types and fields added to azldev since the initial import.

Changes

  1. Regenerated the schema via azldev config generate-schema.
  2. Replaced the Rust/taplo toolchain with azldev in CI:
    • azldev config dump for strict config validation.
    • azldev config generate-schema + diff to fail if the checked-in schema drifts.
  3. Deleted taplo.toml.

azldev is the authoritative parser for these files and validates the full config lifecycle, which is strictly stronger than taplo + a static schema.

The checked-in schema was stale, missing types added since the initial
import (ComponentBuildFailureConfig, ComponentBuildHints, PackageConfig,
PackageGroupConfig, plus new overlay types like spec-remove-section,
file-add, file-remove, file-rename).

Regenerated with: azldev config generate-schema
@christopherco christopherco marked this pull request as ready for review April 9, 2026 06:38
Copilot AI review requested due to automatic review settings April 9, 2026 06:38

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Pull request overview

Updates CI TOML/config validation to use azldev (the authoritative config parser) instead of the Rust/taplo toolchain, and refreshes the checked-in JSON schema to match current azldev output.

Changes:

  • Regenerate external/schemas/azldev.schema.json from azldev config generate-schema.
  • Replace taplo-based linting in CI with azldev config dump -q validation and a schema drift check via diff.
  • Remove taplo.toml.

Reviewed changes

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

File Description
taplo.toml Removes taplo configuration since CI no longer uses taplo for validation.
external/schemas/azldev.schema.json Updates the checked-in schema to match the latest azldev-generated schema.
.github/workflows/lint.yaml Switches the CI job to install/run azldev and adds a schema freshness check.

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

Comment thread .github/workflows/lint.yaml Outdated
Comment thread external/schemas/azldev.schema.json
Comment thread .github/workflows/lint.yaml Outdated
Copilot AI changed the title fix(ci): replace taplo with azldev for TOML config validation fix(ci): pin azldev to specific commit, drop schema freshness check Apr 9, 2026

@reubeno reubeno left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Righteous change!

I'm confused by the PR summary, though:

CI was using go install ...@main for azldev — non-reproducible and a supply-chain risk.

CI wasn't doing anything with azldev.

Comment thread .github/workflows/lint.yaml Outdated
- name: "Run linter"
run: taplo lint --colors=always
- name: "Validate config (strict)"
run: azldev config dump -q > /dev/null

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Why quiet?

@christopherco christopherco Apr 9, 2026

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

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

It doesn't need to be quiet, so I'll change it.
I did introspect this since I used Copilot to generate the changes, and looks like it was followed guidance from what we have in copilot-instructions for the agent to utilize '-q' and also in the example commands.

**Agent-friendly flags:** Use `-q` (quiet) to reduce noise and `-O json` for machine-parseable output. These are global flags and work on all commands.

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

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

I'll change this in a follow on PR to keep this change focused on fixing the CI.

@@ -1,6 +1,6 @@
{

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Do we still need the schema checked in at all now that it's available on GitHub under microsoft/azure-linux-dev-tools?

(I'm okay deferring that evaluation to a later PR.)

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

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

The schema is still referenced in the various skill files in this tree. I agree that we should just link to the schema in azure-linux-dev-tools instead, and remove the schema altogether from this repo. I'll do that in a follow up PR.

@christopherco

christopherco commented Apr 9, 2026

Copy link
Copy Markdown
Collaborator Author

Righteous change!

I'm confused by the PR summary, though:

CI was using go install ...@main for azldev — non-reproducible and a supply-chain risk.

CI wasn't doing anything with azldev.

sooooo I queued off Copilot to fix one comment, and I expected a new commit with the change, but looks like it completely rewrote the PR summary while I was away. Will fix, and noted for the future when using Copilot in the cloud

taplo lint was validating TOML files against a static JSON schema that
drifts out of date whenever azldev adds new config fields, causing
spurious CI failures on valid configs.

Replace the Rust/taplo toolchain with azldev, which is the authoritative
parser for these files. "azldev config dump" validates syntax, schema,
includes, and full config resolution in strict mode (fails on unknown
fields). Errors are printed to stderr for CI diagnostics.

Delete taplo.toml since taplo is no longer used in CI.
@christopherco

Copy link
Copy Markdown
Collaborator Author

CI error with zizmor is due to other workflow issues. I'll have another PR for those shortly.

@christopherco christopherco merged commit 03f88d9 into tomls/base/main Apr 9, 2026
5 of 6 checks passed
@christopherco christopherco deleted the chrco/fix-ci branch April 9, 2026 17:36
@christopherco

Copy link
Copy Markdown
Collaborator Author

CI error with zizmor is due to other workflow issues. I'll have another PR for those shortly.

#16544

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.

4 participants