feat: lint before deploy/upgrade/rollback

See coop-cloud/organising#254.
This commit is contained in:
2021-12-25 23:35:45 +01:00
parent a84a5bc320
commit 8735a8f0ea
4 changed files with 51 additions and 0 deletions

View File

@ -9,6 +9,7 @@ import (
"coopcloud.tech/abra/pkg/config"
"coopcloud.tech/tagcmp"
"github.com/docker/distribution/reference"
"github.com/sirupsen/logrus"
)
var Warn = "warn"
@ -122,6 +123,29 @@ var LintRules = map[string][]LintRule{
},
}
func LintForErrors(recipe Recipe) error {
logrus.Debugf("linting for critical errors in %s configs", recipe.Name)
for level := range LintRules {
if level != "error" {
continue
}
for _, rule := range LintRules[level] {
ok, err := rule.Function(recipe)
if err != nil {
return err
}
if !ok {
return fmt.Errorf("lint error in %s configs: \"%s\" failed lint checks (%s)", recipe.Name, rule.Description, rule.Ref)
}
}
}
logrus.Debugf("linting successful, %s is well configured", recipe.Name)
return nil
}
func LintComposeVersion(recipe Recipe) (bool, error) {
if recipe.Config.Version == "3.8" {
return true, nil