Skip to content

action: implement Schema Inspect action#476

Open
luantranminh wants to merge 6 commits intomasterfrom
inspect
Open

action: implement Schema Inspect action#476
luantranminh wants to merge 6 commits intomasterfrom
inspect

Conversation

@luantranminh
Copy link
Copy Markdown
Member

No description provided.

@github-actions
Copy link
Copy Markdown

github-actions bot commented Feb 24, 2026

atlas migrate lint on atlasaction/testdata/migrations_destructive

Status Step Result
1 new migration file detected 20230925192914.sql
ERD and visual diff generated View Visualization
Analyze 20230925192914.sql
1 reports were found in analysis
Destructive changes detected
Dropping table "t1" (DS102)
Read the full linting report on Atlas Cloud

@github-actions
Copy link
Copy Markdown

atlas schema lint on sqlite://schemarule.db

Status Rule Result
Naming violations detected Table "main.T1" violates the naming policy (NM102)
Primary-key-required rule violated All tables must have a primary key
Table T1 must have a primary key
Primary-key-required rule violated All tables must have a primary key
Table T1 must have a primary key

@github-actions
Copy link
Copy Markdown

github-actions bot commented Feb 24, 2026

Atlas detected changes to the desired schema

Migration Plan for atlas-actionView on Atlas Cloud

-- Create "t1" table
CREATE TABLE `t1` (
  `c1` integer NOT NULL
);
-- Create "t2" table
CREATE TABLE `t2` (
  `c1` integer NOT NULL
);
-- Create "t3" table
CREATE TABLE `t3` (
  `c1` integer NOT NULL,
  `c2` integer NOT NULL
);

Atlas lint results

Status Step Result
Detect schema changes3 new statements detected
No issues found

📝 Steps to edit this migration plan

1. Run the following command to pull the generated plan to your local workstation:

atlas schema plan pull --url "atlas://atlas-action/plans/pr-476-R1cGcSfo" > pr-476-R1cGcSfo.plan.hcl

2. Open pr-476-R1cGcSfo in your editor and modify it as needed. Note that the result of the plan should align
the database with the desired state. Otherwise, Atlas will report a schema drift.

3. Push the updated plan to the registry using the following command:

atlas schema plan push --pending --file pr-476-R1cGcSfo.plan.hcl

4. Re-trigger the schema/plan action to update this comment:

gh run rerun 22340958765

@github-actions
Copy link
Copy Markdown

atlas schema lint on file://schema.lt.hcl

Status Rule Result
Naming violations detected Table "t1" violates the naming policy (NM102) schema.lt.hcl:1:1
Table "t2" violates the naming policy (NM102) schema.lt.hcl:1:1
Primary-key-required rule violated All tables must have a primary key
Table t1 must have a primary key schema.lt.hcl:3:1
Table t2 must have a primary key schema.lt.hcl:10:1
Primary-key-required rule violated All tables must have a primary key
Table t1 must have a primary key schema.lt.hcl:3:1
Table t2 must have a primary key schema.lt.hcl:10:1

Copy link
Copy Markdown
Contributor

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

Implements a new schema/inspect GitHub Action for inspecting a live database schema and exposing the inspected schema as an action output.

Changes:

  • Added a new schema/inspect action (Node entrypoint + action.yml) and wired it into the Go action runner (atlasaction.Actions).
  • Extended manifests/docs/tests to include the new action (manifest entry, README docs, Go unit tests, testscript txtar).
  • Added CI coverage for the new action and updated Azure DevOps task UI rules to expose it.

Reviewed changes

Copilot reviewed 10 out of 10 changed files in this pull request and generated 1 comment.

Show a summary per file
File Description
schema/inspect/index.js Adds the shim entrypoint for the new schema/inspect action.
schema/inspect/action.yml Declares inputs/outputs and Node runtime for the new GitHub Action.
atlasaction/testdata/github/schema-inspect.txtar Adds testscript coverage for atlas-action --action=schema/inspect.
atlasaction/manifest.yml Registers the new schema/inspect action in the generated manifest.
atlasaction/action_test.go Adds Go unit tests for Actions.SchemaInspect.
atlasaction/action.go Wires schema/inspect into command dispatch and implements SchemaInspect.
VERSION.txt Bumps version to v1.14.3.
README.md Documents the new action and adds it to the actions table.
.github/workflows/ci-go.yaml Adds a CI job that runs ./schema/inspect and validates outputs.
.github/azure-devops/action/task.json Exposes schema inspect in the Azure DevOps task and adds the format input.

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

* `url` - The URL of the database to inspect. For example: `mysql://root:pass@localhost:3306/db`.
* `exclude` - List of glob patterns used to select which resources to filter in inspection
see: https://atlasgo.io/declarative/inspect#exclude-schemas
* `format` - Go template to use to format the output. For example, `sql`.
Copy link

Copilot AI Feb 24, 2026

Choose a reason for hiding this comment

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

The format input description is inconsistent with the action metadata and test expectations: here it says the value is a Go template but the example uses sql (which is not a template). Please either change the example to a real template (e.g. {{ sql . }}) or explicitly document that sql is accepted as a shorthand that expands to that template.

Suggested change
* `format` - Go template to use to format the output. For example, `sql`.
* `format` - Go template to use to format the output. For example, `{{ sql . }}`.

Copilot uses AI. Check for mistakes.
Comment on lines +43 to +45
outputs:
schema:
description: The inspected schema of the database.
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 you know if there is a limit on the size of the output of a job?

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

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

I considered that as well, but this is log output; it should handle large content by default.

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

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

https://github.com/orgs/community/discussions/127903

A discussion indicates that the limit is 4 MB.

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.

3 participants