Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
Show all changes
62 commits
Select commit Hold shift + click to select a range
57e5162
Merge branch 'master' of github.com:go-vela/server
jbrockopp Feb 23, 2022
98b740d
chore: general refactor expand functions
jbrockopp Feb 23, 2022
461ca5a
chore: refactor template Render() functions
jbrockopp Feb 23, 2022
1e17b6a
enhance: support render inline templates
jbrockopp Feb 23, 2022
da5c94d
chore: fix api endpoints for compiler changes
jbrockopp Feb 23, 2022
776ddff
chore: add leftover todos
jbrockopp Feb 23, 2022
2eb7bd6
fix tests
JordanSussman Feb 24, 2022
4ebc042
Merge branch 'poc/stages/templates' of github.com:go-vela/server into…
jbrockopp Feb 25, 2022
8b5fe54
enhance: address leftover TODOs
jbrockopp Feb 25, 2022
5cd457c
chore: save work
jbrockopp Feb 25, 2022
805a6c3
fix pipeline type
JordanSussman Feb 25, 2022
bc62ada
Merge branch 'master' into poc/stages/templates
JordanSussman Feb 25, 2022
9c4e2fe
another fix
JordanSussman Feb 28, 2022
d1e9558
Merge branch 'poc/stages/templates' of github.com:go-vela/server into…
JordanSussman Feb 28, 2022
6a0e4b7
use branch from github instead of relative
JordanSussman Feb 28, 2022
e0a387d
feat: add a lite compile for pipeline endpoints
kneal Feb 28, 2022
87434f3
fix: add inline suppport to lite compile
kneal Feb 28, 2022
f3dac73
fix: update linter and add comments
kneal Feb 28, 2022
f667472
init tests for render_inline
JordanSussman Mar 6, 2022
25456e6
Merge branch 'master' into poc/stages/templates
JordanSussman Mar 6, 2022
f18ebe3
more updates
JordanSussman Mar 6, 2022
4e3fc56
Merge branch 'poc/stages/templates' of github.com:go-vela/server into…
JordanSussman Mar 6, 2022
8bb3b3c
more linter updates
JordanSussman Mar 6, 2022
469f91c
fix variables for templates
JordanSussman Mar 7, 2022
221597b
make linter happy
JordanSussman Mar 7, 2022
5049f4d
fix existing tests
JordanSussman Mar 7, 2022
43fb3a5
add more inline tests
JordanSussman Mar 7, 2022
00c0529
delete unused nolint
JordanSussman Mar 7, 2022
41af322
Merge branch 'poc/stages/templates' of github.com:go-vela/server into…
jbrockopp Mar 7, 2022
77da644
add test for pipeline type
JordanSussman Mar 7, 2022
2d02198
update goimports
JordanSussman Mar 7, 2022
82526a8
return build object
JordanSussman Mar 8, 2022
f450a0e
more code coverage
JordanSussman Mar 8, 2022
9bda378
Merge branch 'master' into poc/stages/templates
JordanSussman Mar 10, 2022
9a674fb
check if template is present
JordanSussman Mar 10, 2022
06b5871
fix linter
JordanSussman Mar 10, 2022
3e48d92
Merge branch 'poc/stages/templates' of github.com:go-vela/server into…
JordanSussman Mar 10, 2022
97b4f72
another linter update
JordanSussman Mar 10, 2022
40c2dd5
yet another update
JordanSussman Mar 10, 2022
08b1152
fix typo
JordanSussman Mar 10, 2022
b6b840c
Merge branch 'master' of github.com:go-vela/server
jbrockopp Mar 10, 2022
ac79326
Merge branch 'poc/stages/templates' of github.com:go-vela/server into…
jbrockopp Mar 10, 2022
795971b
yet more linter updates
JordanSussman Mar 10, 2022
8ce6fa0
fix test
JordanSussman Mar 11, 2022
4b65af5
make clean
JordanSussman Mar 11, 2022
af14284
return error if render_inline and step template mixed
JordanSussman Mar 11, 2022
44454a5
fix flaky test
JordanSussman Mar 11, 2022
d88662e
revert last_update code
JordanSussman Mar 11, 2022
4d9acce
fix test
JordanSussman Mar 11, 2022
18a0347
Merge branch 'poc/stages/templates' of github.com:go-vela/server into…
jbrockopp Mar 11, 2022
70b7784
enhance: add local template support for CompileLite()
jbrockopp Mar 11, 2022
b1fe088
Merge branch 'master' into fix/compile/local
jbrockopp Mar 11, 2022
4808ced
Merge branch 'master' into poc/stages/templates
JordanSussman Mar 11, 2022
9ddd466
Merge branch 'master' into fix/compile/local
jbrockopp Mar 11, 2022
2d42ee7
Merge branch 'fix/compile/local' of github.com:go-vela/server into fi…
jbrockopp Mar 11, 2022
fd7d467
fix test
JordanSussman Mar 11, 2022
ea2661e
Merge branch 'poc/stages/templates' of github.com:go-vela/server into…
jbrockopp Mar 11, 2022
81b8399
Merge branch 'poc/stages/templates' of github.com:go-vela/server into…
jbrockopp Mar 11, 2022
98204ca
chore: address linter feedback
jbrockopp Mar 11, 2022
71ab528
Merge branch 'poc/stages/templates' of github.com:go-vela/server into…
jbrockopp Mar 11, 2022
c2a2f75
Merge branch 'master' into fix/compile/local
JordanSussman Mar 15, 2022
c7ae6d5
fix issue with merge conflict
JordanSussman Mar 15, 2022
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
another fix
  • Loading branch information
JordanSussman committed Feb 28, 2022
commit 9c4e2fef0ce12eca2e82581d528eac0163634c80
138 changes: 70 additions & 68 deletions compiler/native/compile.go
Original file line number Diff line number Diff line change
Expand Up @@ -67,88 +67,90 @@ func (c *client) Compile(v interface{}) (*pipeline.Build, error) {
Target: c.build.GetDeploy(),
}

// TODO: test global environment
// TODO: fix ui expansion
// TODO: consider solving https://github.com/go-vela/community/issues/510 during ui expansion fix
if p.Metadata.RenderInline {
switch {
case len(p.Stages) > 0:
return c.compileStages(p, tmpls, r)
case len(p.Steps) > 0:
return c.compileSteps(p, tmpls, r)
default:
// TODO: improve error handling
newPipeline := new(yaml.Build)
newPipeline.Version = p.Version
newPipeline.Environment = p.Environment

for _, template := range p.Templates {
bytes, err := c.getTemplate(template, template.Name)
if err != nil {
return nil, err
}
return c.compileInline(p, r)
}

parsed, err := c.Parse(bytes, template.Format)
if err != nil {
return nil, err
}
if len(p.Stages) > 0 {
return c.compileStages(p, tmpls, r)
}

switch {
case len(parsed.Environment) > 0:
for key, value := range parsed.Environment {
newPipeline.Environment[key] = value
}
fallthrough
case len(parsed.Stages) > 0:
// ensure all templated steps inside stages have template prefix
for stgIndex, newStage := range parsed.Stages {
parsed.Stages[stgIndex].Name = fmt.Sprintf("%s_%s", template.Name, newStage.Name)

for index, newStep := range newStage.Steps {
parsed.Stages[stgIndex].Steps[index].Name = fmt.Sprintf("%s_%s", template.Name, newStep.Name)
}
}

newPipeline.Stages = append(newPipeline.Stages, parsed.Stages...)
fallthrough
case len(parsed.Steps) > 0:
// ensure all templated steps have template prefix
for index, newStep := range parsed.Steps {
parsed.Steps[index].Name = fmt.Sprintf("%s_%s", template.Name, newStep.Name)
}
newPipeline.Steps = append(newPipeline.Steps, parsed.Steps...)
fallthrough
case len(parsed.Services) > 0:
newPipeline.Services = append(newPipeline.Services, parsed.Services...)
fallthrough
case len(parsed.Secrets) > 0:
newPipeline.Secrets = append(newPipeline.Secrets, parsed.Secrets...)
break
default:
return nil, fmt.Errorf("empty template %s provided: template must contain secrets, services, stages or steps", template.Name)
}
return c.compileSteps(p, tmpls, r)
}

if len(newPipeline.Stages) > 0 && len(newPipeline.Steps) > 0 {
return nil, fmt.Errorf("invalid template %s provided: templates cannot mix stages and steps", template.Name)
}
}
func (c *client) compileInline(p *yaml.Build, r *pipeline.RuleData) (*pipeline.Build, error) {
// TODO: improve error handling
newPipeline := new(yaml.Build)
newPipeline.Stages = p.Stages
newPipeline.Steps = p.Steps
newPipeline.Version = p.Version
newPipeline.Environment = p.Environment

for _, template := range p.Templates {
bytes, err := c.getTemplate(template, template.Name)
if err != nil {
return nil, err
}

// validate the yaml configuration
err = c.Validate(newPipeline)
if err != nil {
return nil, err
parsed, err := c.Parse(bytes, template.Format)
if err != nil {
return nil, err
}

switch {
case len(parsed.Environment) > 0:
for key, value := range parsed.Environment {
newPipeline.Environment[key] = value
}
fallthrough
case len(parsed.Stages) > 0:
// ensure all templated steps inside stages have template prefix
for stgIndex, newStage := range parsed.Stages {
parsed.Stages[stgIndex].Name = fmt.Sprintf("%s_%s", template.Name, newStage.Name)

for index, newStep := range newStage.Steps {
parsed.Stages[stgIndex].Steps[index].Name = fmt.Sprintf("%s_%s", template.Name, newStep.Name)
}
}

if len(newPipeline.Stages) > 0 {
return c.compileStages(newPipeline, map[string]*yaml.Template{}, r)
newPipeline.Stages = append(newPipeline.Stages, parsed.Stages...)
fallthrough
case len(parsed.Steps) > 0:
// ensure all templated steps have template prefix
for index, newStep := range parsed.Steps {
parsed.Steps[index].Name = fmt.Sprintf("%s_%s", template.Name, newStep.Name)
}
newPipeline.Steps = append(newPipeline.Steps, parsed.Steps...)
fallthrough
case len(parsed.Services) > 0:
newPipeline.Services = append(newPipeline.Services, parsed.Services...)
fallthrough
case len(parsed.Secrets) > 0:
newPipeline.Secrets = append(newPipeline.Secrets, parsed.Secrets...)
break
default:
return nil, fmt.Errorf("empty template %s provided: template must contain secrets, services, stages or steps", template.Name)
}

return c.compileSteps(newPipeline, map[string]*yaml.Template{}, r)
if len(newPipeline.Stages) > 0 && len(newPipeline.Steps) > 0 {
return nil, fmt.Errorf("invalid template %s provided: templates cannot mix stages and steps", template.Name)
}
}

if len(p.Stages) > 0 {
return c.compileStages(p, tmpls, r)
// validate the yaml configuration
err := c.Validate(newPipeline)
if err != nil {
return nil, err
}

return c.compileSteps(p, tmpls, r)
if len(newPipeline.Stages) > 0 {
return c.compileStages(newPipeline, map[string]*yaml.Template{}, r)
}

return c.compileSteps(newPipeline, map[string]*yaml.Template{}, r)
}

func (c *client) compileSteps(p *yaml.Build, tmpls map[string]*yaml.Template, r *pipeline.RuleData) (*pipeline.Build, error) {
Expand Down
5 changes: 3 additions & 2 deletions compiler/native/expand.go
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ package native

import (
"fmt"
"github.com/go-vela/types/constants"
"strings"

"github.com/go-vela/server/compiler/template/native"
Expand Down Expand Up @@ -227,13 +228,13 @@ func (c *client) mergeTemplate(bytes []byte, tmpl *yaml.Template, step *yaml.Ste

// TODO: provide friendlier error messages with file type mismatches
switch tmpl.Format {
case "go", "golang", "":
case constants.PipelineTypeGo, "golang", "":
// render template for steps
tmplSteps, tmplSecrets, tmplServices, tmplEnvironment, err = native.Render(string(bytes), step.Name, step.Template.Name, step.Environment, step.Template.Variables)
if err != nil {
return tmplSteps, tmplSecrets, tmplServices, tmplEnvironment, err
}
case "starlark":
case constants.PipelineTypeStarlark:
// render template for steps
tmplSteps, tmplSecrets, tmplServices, tmplEnvironment, err = starlark.Render(string(bytes), step.Name, step.Template.Name, step.Environment, step.Template.Variables)
if err != nil {
Expand Down