Skeema.io CI is a continuous integration system for MySQL and MariaDB, supporting a pull request workflow for schema changes. Once you enable our GitHub application on a schema repo, every
git push will be checked for common problems automatically. Pull requests will receive automated comments with DDL diff generation.
For more examples, check out our interactive demo repo.
The Skeema.io CI system does not access your actual database servers. All behavior operates on your schema repo alone. The application just needs read-only access to your schema repo’s code, and a few other permissions in order to comment on pull requests or update commit statuses.
After each commit, your schema repo’s
*.sql files will be scanned for
CREATE PROCEDURE, and
CREATE FUNCTION statements that have been changed in the commit. Each modified object is checked for common problems, such as:
- SQL syntax errors
- Duplicate indexes
- Lack of PRIMARY KEY
- Problematic character sets
- Deprecated storage engines
- Small int AUTO_INCREMENT exhaustion / overflow
- Non-standard int display widths
- Disallowed proc/func DEFINER
These linter checks are fully configurable. Each one can be set to generate a fatal error, a non-fatal warning, or be ignored entirely. Several additional optional checks provide the ability to flag any use of database features that you wish to avoid, such as foreign keys or stored procedures.
For a full list of supported linter checks, please check the Skeema options reference for settings with the “lint-” prefix.
Skeema.io CI uses the same configuration system as the
skeema command-line tool. In brief:
Each directory may optionally have a
.skeemaconfiguration file, formatted using an ini-like syntax similar to MySQL’s own configuration format.
Values set in a directory apply to that directory, and also cascade down to subdirectories. Subdirectories can override individual key/value pairs if desired.
Skeema.io will use values configured for the
productionenvironment. This means any configuration at the top of the .skeema file (before any
[section]) will apply, as will anything in the
How much does the service cost?
The service is completely free during the beta period. Payment information is not requested or collected at this time. Paid tiers may be introduced in the future, along with an enterprise on-prem version.
How do I see CI output on individual commits?
The CI system only leaves comments on pull requests and master branch commits. To see CI status for a branch commit that isn’t part of a pull request, go to the Commits tab of the branch on GitHub, and click on the green checkmark or red X next to any commit.
Will a copy of my schema repo be stored on your servers?
We do not retain or persist any repositories, nor any derived artifacts from them, beyond the brief time required to perform lint and diff operations – typically well under 60 seconds per
Do I need to setup or use GitHub Actions to use this system?
No, it does not interact with GitHub Actions in any way at this time.
Are private repos supported?
Is GitHub Enterprise supported?
A commercial offering with GHE support is currently being tested. Please reach out to express interest.
Will other platforms such as Bitbucket or GitLab be supported?
A platform-agnostic solution is being planned. Please reach out to express interest.
Are mono-repos (mixing application code with schema definitions) supported?
Generally yes, but it depends on repo size. If the mono-repo is excessively large or takes too long to clone, the CI system will reject it with an error. In this case, please use a separate repo for storing your schema definitions.
Support and Feedback
For feedback, bug reports, or other inquiries, please use our contact form.