mirror of
https://github.com/woodpecker-ci/woodpecker.git
synced 2024-10-02 08:22:01 +00:00
lint after transform, remove un-needed lint rules, temp hack in transform
This commit is contained in:
parent
4fefabc1e8
commit
271d9a0d4f
4 changed files with 18 additions and 88 deletions
|
@ -17,11 +17,6 @@ var lintRules = []lintRule{
|
||||||
expectBuild,
|
expectBuild,
|
||||||
expectImage,
|
expectImage,
|
||||||
expectCommand,
|
expectCommand,
|
||||||
expectTrustedSetup,
|
|
||||||
expectTrustedClone,
|
|
||||||
expectTrustedPublish,
|
|
||||||
expectTrustedDeploy,
|
|
||||||
expectTrustedNotify,
|
|
||||||
expectCloneInWorkspace,
|
expectCloneInWorkspace,
|
||||||
expectCacheInWorkspace,
|
expectCacheInWorkspace,
|
||||||
}
|
}
|
||||||
|
@ -61,52 +56,6 @@ func expectCommand(c *common.Config) error {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// lint rule that fails when a non-trusted clone plugin is used.
|
|
||||||
func expectTrustedClone(c *common.Config) error {
|
|
||||||
if c.Clone != nil && strings.Contains(c.Clone.Image, "/") {
|
|
||||||
return fmt.Errorf("Yaml must use trusted clone plugins")
|
|
||||||
}
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
|
|
||||||
// lint rule that fails when a non-trusted setup plugin is used.
|
|
||||||
func expectTrustedSetup(c *common.Config) error {
|
|
||||||
if c.Setup != nil && strings.Contains(c.Setup.Image, "/") {
|
|
||||||
return fmt.Errorf("Yaml must use trusted setup plugins")
|
|
||||||
}
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
|
|
||||||
// lint rule that fails when a non-trusted publish plugin is used.
|
|
||||||
func expectTrustedPublish(c *common.Config) error {
|
|
||||||
for _, step := range c.Publish {
|
|
||||||
if strings.Contains(step.Image, "/") {
|
|
||||||
return fmt.Errorf("Yaml must use trusted publish plugins")
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
|
|
||||||
// lint rule that fails when a non-trusted deploy plugin is used.
|
|
||||||
func expectTrustedDeploy(c *common.Config) error {
|
|
||||||
for _, step := range c.Deploy {
|
|
||||||
if strings.Contains(step.Image, "/") {
|
|
||||||
return fmt.Errorf("Yaml must use trusted deploy plugins")
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
|
|
||||||
// lint rule that fails when a non-trusted notify plugin is used.
|
|
||||||
func expectTrustedNotify(c *common.Config) error {
|
|
||||||
for _, step := range c.Notify {
|
|
||||||
if strings.Contains(step.Image, "/") {
|
|
||||||
return fmt.Errorf("Yaml must use trusted notify plugins")
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
|
|
||||||
// lint rule that fails if the clone directory is not contained
|
// lint rule that fails if the clone directory is not contained
|
||||||
// in the root workspace.
|
// in the root workspace.
|
||||||
func expectCloneInWorkspace(c *common.Config) error {
|
func expectCloneInWorkspace(c *common.Config) error {
|
||||||
|
|
|
@ -42,37 +42,6 @@ func Test_Linter(t *testing.T) {
|
||||||
g.Assert(expectImage(c) != nil).IsTrue()
|
g.Assert(expectImage(c) != nil).IsTrue()
|
||||||
})
|
})
|
||||||
|
|
||||||
g.It("Should fail when untrusted setup image", func() {
|
|
||||||
c := &common.Config{Setup: &common.Step{Image: "foo/bar"}}
|
|
||||||
g.Assert(expectTrustedSetup(c) != nil).IsTrue()
|
|
||||||
})
|
|
||||||
|
|
||||||
g.It("Should fail when untrusted clone image", func() {
|
|
||||||
c := &common.Config{Clone: &common.Step{Image: "foo/bar"}}
|
|
||||||
g.Assert(expectTrustedClone(c) != nil).IsTrue()
|
|
||||||
})
|
|
||||||
|
|
||||||
g.It("Should fail when untrusted publish image", func() {
|
|
||||||
c := &common.Config{}
|
|
||||||
c.Publish = map[string]*common.Step{}
|
|
||||||
c.Publish["docker"] = &common.Step{Image: "foo/bar"}
|
|
||||||
g.Assert(expectTrustedPublish(c) != nil).IsTrue()
|
|
||||||
})
|
|
||||||
|
|
||||||
g.It("Should fail when untrusted deploy image", func() {
|
|
||||||
c := &common.Config{}
|
|
||||||
c.Deploy = map[string]*common.Step{}
|
|
||||||
c.Deploy["amazon"] = &common.Step{Image: "foo/bar"}
|
|
||||||
g.Assert(expectTrustedDeploy(c) != nil).IsTrue()
|
|
||||||
})
|
|
||||||
|
|
||||||
g.It("Should fail when untrusted notify image", func() {
|
|
||||||
c := &common.Config{}
|
|
||||||
c.Notify = map[string]*common.Step{}
|
|
||||||
c.Notify["hipchat"] = &common.Step{Image: "foo/bar"}
|
|
||||||
g.Assert(expectTrustedNotify(c) != nil).IsTrue()
|
|
||||||
})
|
|
||||||
|
|
||||||
g.It("Should pass linter when build properly setup", func() {
|
g.It("Should pass linter when build properly setup", func() {
|
||||||
c := &common.Config{}
|
c := &common.Config{}
|
||||||
c.Build = &common.Step{}
|
c.Build = &common.Step{}
|
||||||
|
|
|
@ -73,11 +73,7 @@ func ParseSingle(raw string, opts *Opts, r *common.Repo) (*common.Config, error)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
// lint the yaml file
|
|
||||||
err = Lint(conf)
|
|
||||||
if err != nil {
|
|
||||||
return nil, err
|
|
||||||
}
|
|
||||||
// apply rules / transforms
|
// apply rules / transforms
|
||||||
transform.Defaults(conf)
|
transform.Defaults(conf)
|
||||||
if !opts.Network {
|
if !opts.Network {
|
||||||
|
@ -90,6 +86,12 @@ func ParseSingle(raw string, opts *Opts, r *common.Repo) (*common.Config, error)
|
||||||
transform.RemovePrivileged(conf)
|
transform.RemovePrivileged(conf)
|
||||||
}
|
}
|
||||||
transform.Repo(conf, r)
|
transform.Repo(conf, r)
|
||||||
|
|
||||||
|
// lint the yaml file
|
||||||
|
err = Lint(conf)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
err = LintPlugins(conf, opts)
|
err = LintPlugins(conf, opts)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
|
|
|
@ -80,6 +80,16 @@ func Repo(c *common.Config, r *common.Repo) {
|
||||||
func transformSetup(c *common.Config) {
|
func transformSetup(c *common.Config) {
|
||||||
c.Setup = &common.Step{}
|
c.Setup = &common.Step{}
|
||||||
c.Setup.Image = "plugins/drone-build"
|
c.Setup.Image = "plugins/drone-build"
|
||||||
|
|
||||||
|
// TODO move below code to separate transform
|
||||||
|
if c.Build == nil {
|
||||||
|
c.Build = &common.Step{}
|
||||||
|
}
|
||||||
|
if c.Build.Config == nil {
|
||||||
|
c.Build.Config = map[string]interface{}{}
|
||||||
|
}
|
||||||
|
////
|
||||||
|
|
||||||
c.Setup.Config = c.Build.Config
|
c.Setup.Config = c.Build.Config
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue