forked from toolshed/abra
feat: lint before deploy/upgrade/rollback
See coop-cloud/organising#254.
This commit is contained in:
@ -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
|
||||
|
Reference in New Issue
Block a user