Continuous Integration Beta

Overview

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.

CI annotation example CI PR comment example

For more examples, check out our interactive demo repo.

Installation

Simply add the application to your schema repo on GitHub. (Don’t have a schema repo yet? Download the open source Skeema CLI tool, and see examples for skeema init to get started in minutes!)

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.

Problem Detection

After each commit, your schema repo’s *.sql files will be scanned for CREATE TABLE, 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.


Configuration

Skeema.io CI uses the same configuration system as the skeema command-line tool. In brief:

  • Each directory may optionally have a .skeema configuration 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 production environment. This means any configuration at the top of the .skeema file (before any [section]) will apply, as will anything in the [production] section.

A complete Skeema configuration guide is available, along with an options reference.


FAQ

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 git push.

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?

Yes.

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.


Please review our terms of service and privacy policy.


Support and Feedback

For feedback, bug reports, or other inquiries, please use our contact form.