Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
43 commits
Select commit Hold shift + click to select a range
d760c81
wip
kartik-579 Nov 8, 2022
5431ce0
updated sql script
kartik-579 Nov 8, 2022
5a07f93
updated sql script no
kartik-579 Nov 15, 2022
29a00d5
fixed sql
kartik-579 Nov 15, 2022
e817cfe
added spec
kartik-579 Nov 16, 2022
37a6af1
Feat: Adding a Deployment Helm-chart (#2391)
verma-kunal Nov 17, 2022
8ee3868
renamed helm chart
kartik-579 Nov 17, 2022
ba77689
updated sql script for support of deployment type helm chart
kartik-579 Nov 17, 2022
e6e150c
Merge branch 'main' into dynamic-templates
kartik-579 Nov 17, 2022
bf97442
updated script no
kartik-579 Nov 17, 2022
4a67ef2
Merge branch 'main' into dynamic-templates
kartik-579 Nov 17, 2022
deaef58
updated chart no
kartik-579 Nov 30, 2022
ea5f0fd
Merge branch 'main' into dynamic-templates
kartik-579 Nov 30, 2022
71ba2a8
added test cases
kartik-579 Dec 1, 2022
512bd95
Merge branch 'main' into dynamic-templates
kartik-579 Dec 1, 2022
345e6a3
fix sql
kartik-579 Dec 2, 2022
ce8a3af
Merge branch 'main' into dynamic-templates
kartik-579 Dec 2, 2022
cd6b35b
fix
kartik-579 Dec 2, 2022
07900af
review changes
kartik-579 Dec 2, 2022
2095d23
review changes - part 2
kartik-579 Dec 2, 2022
3062137
updated down sql
kartik-579 Dec 2, 2022
cf9072f
fix
kartik-579 Dec 2, 2022
a8d54c4
updated validation checks
kartik-579 Dec 2, 2022
578bc68
updated sql
kartik-579 Dec 2, 2022
8f9542c
Merge branch 'main' into dynamic-templates
kartik-579 Dec 2, 2022
2f5a61f
Merge branch 'main' into dynamic-templates
kartik-579 Dec 5, 2022
46bbde7
fixed required tag
kartik-579 Dec 5, 2022
08b5ab6
Merge branch 'main' into dynamic-templates
kartik-579 Dec 8, 2022
9c92dcb
synced deployment chart with rollout-v4.16.0, renamed version
kartik-579 Dec 8, 2022
4581487
updated log
kartik-579 Dec 8, 2022
92e3eba
deployment chart changes
kartik-579 Dec 12, 2022
93700d3
fix for strategy type deployment
kartik-579 Dec 13, 2022
43d9eaf
updated deployment.yaml for deployment chart
kartik-579 Dec 13, 2022
97f5b15
removed strategy check for pipeline trigger
kartik-579 Dec 13, 2022
b2fe962
wip
kartik-579 Dec 13, 2022
1db82d1
Merge branch 'main' into dynamic-templates
kartik-579 Dec 13, 2022
0b466f4
Merge branch 'main' into dynamic-templates
kartik-579 Dec 14, 2022
88e38d3
Removing strategy configs in case of Recreate
prakarsh-dt Dec 14, 2022
5367782
Update pipeline-values.yaml
prakarsh-dt Dec 14, 2022
ac01c7c
Merge branch 'main' into dynamic-templates
kartik-579 Dec 14, 2022
0904ce9
updated sql script no.
kartik-579 Dec 14, 2022
257159a
updated deployment.yaml
kartik-579 Dec 14, 2022
264cac9
removed deployment type chart as default
kartik-579 Dec 14, 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
5 changes: 5 additions & 0 deletions Wire.go
Original file line number Diff line number Diff line change
Expand Up @@ -783,6 +783,11 @@ func InitializeApp() (*App, error) {
wire.Bind(new(pipeline.GlobalCMCSService), new(*pipeline.GlobalCMCSServiceImpl)),
repository.NewGlobalCMCSRepositoryImpl,
wire.Bind(new(repository.GlobalCMCSRepository), new(*repository.GlobalCMCSRepositoryImpl)),

chartRepoRepository.NewGlobalStrategyMetadataRepositoryImpl,
wire.Bind(new(chartRepoRepository.GlobalStrategyMetadataRepository), new(*chartRepoRepository.GlobalStrategyMetadataRepositoryImpl)),
chartRepoRepository.NewGlobalStrategyMetadataChartRefMappingRepositoryImpl,
wire.Bind(new(chartRepoRepository.GlobalStrategyMetadataChartRefMappingRepository), new(*chartRepoRepository.GlobalStrategyMetadataChartRefMappingRepositoryImpl)),
)
return &App{}, nil
}
31 changes: 16 additions & 15 deletions api/appbean/AppDetail.go
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ package appbean
import (
"github.com/devtron-labs/devtron/internal/sql/models"
"github.com/devtron-labs/devtron/internal/sql/repository/pipelineConfig"
"github.com/devtron-labs/devtron/pkg/chartRepo/repository"
"github.com/devtron-labs/devtron/pkg/pipeline/bean"
)

Expand Down Expand Up @@ -100,24 +101,24 @@ type BuildScript struct {
}

type CdPipelineDetails struct {
Name string `json:"name"` //pipelineName
EnvironmentName string `json:"environmentName" `
TriggerType pipelineConfig.TriggerType `json:"triggerType" validate:"required"`
DeploymentType pipelineConfig.DeploymentTemplate `json:"deploymentType,omitempty" validate:"oneof=BLUE-GREEN ROLLING CANARY RECREATE"` //
DeploymentStrategies []*DeploymentStrategy `json:"deploymentStrategies"`
PreStage *CdStage `json:"preStage"`
PostStage *CdStage `json:"postStage"`
PreStageConfigMapSecretNames *CdStageConfigMapSecretNames `json:"preStageConfigMapSecretNames"`
PostStageConfigMapSecretNames *CdStageConfigMapSecretNames `json:"postStageConfigMapSecretNames"`
RunPreStageInEnv bool `json:"runPreStageInEnv"`
RunPostStageInEnv bool `json:"runPostStageInEnv"`
IsClusterCdActive bool `json:"isClusterCdActive"`
Name string `json:"name"` //pipelineName
EnvironmentName string `json:"environmentName" `
TriggerType pipelineConfig.TriggerType `json:"triggerType" validate:"required"`
DeploymentStrategyType chartRepoRepository.DeploymentStrategy `json:"deploymentType,omitempty"` //
DeploymentStrategies []*DeploymentStrategy `json:"deploymentStrategies"`
PreStage *CdStage `json:"preStage"`
PostStage *CdStage `json:"postStage"`
PreStageConfigMapSecretNames *CdStageConfigMapSecretNames `json:"preStageConfigMapSecretNames"`
PostStageConfigMapSecretNames *CdStageConfigMapSecretNames `json:"postStageConfigMapSecretNames"`
RunPreStageInEnv bool `json:"runPreStageInEnv"`
RunPostStageInEnv bool `json:"runPostStageInEnv"`
IsClusterCdActive bool `json:"isClusterCdActive"`
}

type DeploymentStrategy struct {
DeploymentType pipelineConfig.DeploymentTemplate `json:"deploymentType,omitempty" validate:"oneof=BLUE-GREEN ROLLING CANARY RECREATE"` //
Config map[string]interface{} `json:"config,omitempty" validate:"string"`
IsDefault bool `json:"isDefault" validate:"required"`
DeploymentStrategyType chartRepoRepository.DeploymentStrategy `json:"deploymentType,omitempty"` //
Config map[string]interface{} `json:"config,omitempty" validate:"string"`
IsDefault bool `json:"isDefault" validate:"required"`
}

type CdStage struct {
Expand Down
24 changes: 12 additions & 12 deletions api/restHandler/CoreAppRestHandler.go
Original file line number Diff line number Diff line change
Expand Up @@ -745,21 +745,21 @@ func (handler CoreAppRestHandlerImpl) buildCdPipelineResp(appId int, cdPipeline
}

cdPipelineResp := &appBean.CdPipelineDetails{
Name: cdPipeline.Name,
EnvironmentName: cdPipeline.EnvironmentName,
TriggerType: cdPipeline.TriggerType,
DeploymentType: cdPipeline.DeploymentTemplate,
RunPreStageInEnv: cdPipeline.RunPreStageInEnv,
RunPostStageInEnv: cdPipeline.RunPostStageInEnv,
IsClusterCdActive: cdPipeline.CdArgoSetup,
Name: cdPipeline.Name,
EnvironmentName: cdPipeline.EnvironmentName,
TriggerType: cdPipeline.TriggerType,
DeploymentStrategyType: cdPipeline.DeploymentTemplate,
RunPreStageInEnv: cdPipeline.RunPreStageInEnv,
RunPostStageInEnv: cdPipeline.RunPostStageInEnv,
IsClusterCdActive: cdPipeline.CdArgoSetup,
}

//build DeploymentStrategies resp
var deploymentTemplateStrategiesResp []*appBean.DeploymentStrategy
for _, strategy := range cdPipeline.Strategies {
deploymentTemplateStrategyResp := &appBean.DeploymentStrategy{
DeploymentType: strategy.DeploymentTemplate,
IsDefault: strategy.Default,
DeploymentStrategyType: strategy.DeploymentTemplate,
IsDefault: strategy.Default,
}
var configObj map[string]interface{}
if strategy.Config != nil {
Expand Down Expand Up @@ -1297,7 +1297,7 @@ func (handler CoreAppRestHandlerImpl) createDockerConfig(appId int, dockerConfig

// create global template
func (handler CoreAppRestHandlerImpl) createDeploymentTemplate(ctx context.Context, appId int, deploymentTemplate *appBean.DeploymentTemplate, userId int32) (error, int) {
handler.logger.Infow("Create App - creating deployment template", "appId", appId, "DeploymentTemplate", deploymentTemplate)
handler.logger.Infow("Create App - creating deployment template", "appId", appId, "DeploymentStrategy", deploymentTemplate)

createDeploymentTemplateRequest := chart.TemplateRequest{
AppId: appId,
Expand Down Expand Up @@ -1630,7 +1630,7 @@ func (handler CoreAppRestHandlerImpl) createCdPipelines(ctx context.Context, app
Namespace: envModel.Namespace,
AppWorkflowId: workflowId,
CiPipelineId: ciPipelineId,
DeploymentTemplate: cdPipeline.DeploymentType,
DeploymentTemplate: cdPipeline.DeploymentStrategyType,
TriggerType: cdPipeline.TriggerType,
CdArgoSetup: cdPipeline.IsClusterCdActive,
RunPreStageInEnv: cdPipeline.RunPreStageInEnv,
Expand Down Expand Up @@ -1962,7 +1962,7 @@ func convertCdDeploymentStrategies(deploymentStrategies []*appBean.DeploymentStr
var convertedStrategies []bean.Strategy
for _, deploymentStrategy := range deploymentStrategies {
convertedStrategy := bean.Strategy{
DeploymentTemplate: deploymentStrategy.DeploymentType,
DeploymentTemplate: deploymentStrategy.DeploymentStrategyType,
Default: deploymentStrategy.IsDefault,
}
strategyConfig, err := json.Marshal(deploymentStrategy.Config)
Expand Down
28 changes: 14 additions & 14 deletions internal/sql/repository/chartConfig/PipelineConfigRepository.go
Original file line number Diff line number Diff line change
Expand Up @@ -18,29 +18,29 @@
package chartConfig

import (
"github.com/devtron-labs/devtron/internal/sql/repository/pipelineConfig"
"github.com/devtron-labs/devtron/pkg/chartRepo/repository"
"github.com/devtron-labs/devtron/pkg/sql"
"github.com/go-pg/pg"
"github.com/juju/errors"
)

type PipelineStrategy struct {
tableName struct{} `sql:"pipeline_strategy" pg:",discard_unknown_columns"`
Id int `sql:"id,pk"`
PipelineId int `sql:"pipeline_id"`
Strategy pipelineConfig.DeploymentTemplate `sql:"strategy,notnull"`
Config string `sql:"config"`
Default bool `sql:"default,notnull"`
Deleted bool `sql:"deleted,notnull"`
tableName struct{} `sql:"pipeline_strategy" pg:",discard_unknown_columns"`
Id int `sql:"id,pk"`
PipelineId int `sql:"pipeline_id"`
Strategy chartRepoRepository.DeploymentStrategy `sql:"strategy,notnull"`
Config string `sql:"config"`
Default bool `sql:"default,notnull"`
Deleted bool `sql:"deleted,notnull"`
sql.AuditLog
}

type PipelineConfigRepository interface {
Save(pipelineStrategy *PipelineStrategy, tx *pg.Tx) error
Update(pipelineStrategy *PipelineStrategy, tx *pg.Tx) error
FindById(id int) (chart *PipelineStrategy, err error)
FindByStrategy(strategy pipelineConfig.DeploymentTemplate) (pipelineStrategy *PipelineStrategy, err error)
FindByStrategyAndPipelineId(strategy pipelineConfig.DeploymentTemplate, pipelineId int) (pipelineStrategy *PipelineStrategy, err error)
FindByStrategy(strategy chartRepoRepository.DeploymentStrategy) (pipelineStrategy *PipelineStrategy, err error)
FindByStrategyAndPipelineId(strategy chartRepoRepository.DeploymentStrategy, pipelineId int) (pipelineStrategy *PipelineStrategy, err error)
GetAllStrategyByPipelineId(pipelineId int) ([]*PipelineStrategy, error)
GetDefaultStrategyByPipelineId(pipelineId int) (pipelineStrategy *PipelineStrategy, err error)
Delete(pipelineStrategy *PipelineStrategy, tx *pg.Tx) error
Expand Down Expand Up @@ -70,22 +70,22 @@ func (impl PipelineConfigRepositoryImpl) FindById(id int) (pipelineStrategy *Pip
return pipelineStrategy, err
}

func (impl PipelineConfigRepositoryImpl) FindByStrategy(strategy pipelineConfig.DeploymentTemplate) (pipelineStrategy *PipelineStrategy, err error) {
func (impl PipelineConfigRepositoryImpl) FindByStrategy(strategy chartRepoRepository.DeploymentStrategy) (pipelineStrategy *PipelineStrategy, err error) {
pipelineStrategy = &PipelineStrategy{}
err = impl.dbConnection.Model(pipelineStrategy).
Where("strategy = ?", strategy).Select()
return pipelineStrategy, err
}

func (impl PipelineConfigRepositoryImpl) FindByStrategyAndPipelineId(strategy pipelineConfig.DeploymentTemplate, pipelineId int) (pipelineStrategy *PipelineStrategy, err error) {
func (impl PipelineConfigRepositoryImpl) FindByStrategyAndPipelineId(strategy chartRepoRepository.DeploymentStrategy, pipelineId int) (pipelineStrategy *PipelineStrategy, err error) {
pipelineStrategy = &PipelineStrategy{}
err = impl.dbConnection.Model(pipelineStrategy).
Where("strategy = ?", strategy).
Where("pipeline_id = ?", pipelineId).Select()
return pipelineStrategy, err
}

//it will return for multiple pipeline config for pipeline, per pipeline single pipeline config(blue green, canary)
// it will return for multiple pipeline config for pipeline, per pipeline single pipeline config(blue green, canary)
func (impl PipelineConfigRepositoryImpl) GetAllStrategyByPipelineId(pipelineId int) ([]*PipelineStrategy, error) {
var pipelineStrategies []*PipelineStrategy
err := impl.dbConnection.
Expand All @@ -99,7 +99,7 @@ func (impl PipelineConfigRepositoryImpl) GetAllStrategyByPipelineId(pipelineId i
return pipelineStrategies, err
}

//it will return single latest pipeline config for requested pipeline
// it will return single latest pipeline config for requested pipeline
func (impl PipelineConfigRepositoryImpl) GetDefaultStrategyByPipelineId(pipelineId int) (pipelineStrategy *PipelineStrategy, err error) {
pipelineStrategy = &PipelineStrategy{}
err = impl.dbConnection.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -30,16 +30,10 @@ import (

type PipelineType string
type TriggerType string //HOW pipeline should be triggered
type DeploymentTemplate string

const TRIGGER_TYPE_AUTOMATIC TriggerType = "AUTOMATIC"
const TRIGGER_TYPE_MANUAL TriggerType = "MANUAL"

const DEPLOYMENT_TEMPLATE_BLUE_GREEN DeploymentTemplate = "BLUE-GREEN"
const DEPLOYMENT_TEMPLATE_ROLLING DeploymentTemplate = "ROLLING"
const DEPLOYMENT_TEMPLATE_CANARY DeploymentTemplate = "CANARY"
const DEPLOYMENT_TEMPLATE_RECREATE DeploymentTemplate = "RECREATE"

type Pipeline struct {
tableName struct{} `sql:"pipeline" pg:",discard_unknown_columns"`
Id int `sql:"id,pk"`
Expand Down
28 changes: 13 additions & 15 deletions internal/util/ChartService.go
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,7 @@ const PIPELINE_DEPLOYMENT_TYPE_ACD string = "argo_cd"
const PIPELINE_DEPLOYMENT_TYPE_HELM string = "helm"

type ChartTemplateService interface {
FetchValuesFromReferenceChart(chartMetaData *chart.Metadata, refChartLocation string, templateName string, userId int32) (*ChartValues, *ChartGitAttribute, error)
FetchValuesFromReferenceChart(chartMetaData *chart.Metadata, refChartLocation string, templateName string, userId int32, pipelineStrategyPath string) (*ChartValues, *ChartGitAttribute, error)
GetChartVersion(location string) (string, error)
CreateChartProxy(chartMetaData *chart.Metadata, refChartLocation string, templateName string, version string, envName string, installAppVersionRequest *appStoreBean.InstallAppVersionDTO) (string, *ChartGitAttribute, error)
GitPull(clonedDir string, repoUrl string, appStoreName string) error
Expand Down Expand Up @@ -142,7 +142,7 @@ func (impl ChartTemplateServiceImpl) GetChartVersion(location string) (string, e
return chartContent.Version, nil
}

func (impl ChartTemplateServiceImpl) FetchValuesFromReferenceChart(chartMetaData *chart.Metadata, refChartLocation string, templateName string, userId int32) (*ChartValues, *ChartGitAttribute, error) {
func (impl ChartTemplateServiceImpl) FetchValuesFromReferenceChart(chartMetaData *chart.Metadata, refChartLocation string, templateName string, userId int32, pipelineStrategyPath string) (*ChartValues, *ChartGitAttribute, error) {
chartMetaData.ApiVersion = "v1" // ensure always v1
dir := impl.GetDir()
chartDir := filepath.Join(string(impl.chartWorkingDir), dir)
Expand All @@ -165,7 +165,7 @@ func (impl ChartTemplateServiceImpl) FetchValuesFromReferenceChart(chartMetaData
impl.logger.Errorw("error in creating archive", "err", err)
return nil, nil, err
}
values, err := impl.getValues(chartDir)
values, err := impl.getValues(chartDir, pipelineStrategyPath)
if err != nil {
impl.logger.Errorw("error in pushing chart", "path", archivePath, "err", err)
return nil, nil, err
Expand Down Expand Up @@ -312,7 +312,7 @@ func (impl ChartTemplateServiceImpl) pushChartToGitRepo(gitOpsRepoName, referenc
return nil
}

func (impl ChartTemplateServiceImpl) getValues(directory string) (values *ChartValues, err error) {
func (impl ChartTemplateServiceImpl) getValues(directory, pipelineStrategyPath string) (values *ChartValues, err error) {

if fi, err := os.Stat(directory); err != nil {
return nil, err
Expand Down Expand Up @@ -364,17 +364,15 @@ func (impl ChartTemplateServiceImpl) getValues(directory string) (values *ChartV
}
}
}
if name == "pipeline-values.yaml" || name == "pipeline-values.yml" {
pipelineOverrideByte, err = ioutil.ReadFile(filepath.Clean(filepath.Join(directory, file.Name())))
if err != nil {
impl.logger.Errorw("failed reading data from file", "err", err)
} else {
pipelineOverrideByte, err = yaml.YAMLToJSON(pipelineOverrideByte)
if err != nil {
return nil, err
}
}
}
}
}
pipelineOverrideByte, err = ioutil.ReadFile(filepath.Clean(filepath.Join(directory, pipelineStrategyPath)))
if err != nil {
impl.logger.Errorw("failed reading data from file", "err", err)
} else {
pipelineOverrideByte, err = yaml.YAMLToJSON(pipelineOverrideByte)
if err != nil {
return nil, err
}
}

Expand Down
22 changes: 22 additions & 0 deletions internal/util/ChartService_test.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
package util

import (
"github.com/stretchr/testify/assert"
"testing"
)

func TestChartTemplateService(t *testing.T) {
t.SkipNow()
t.Run("getValues", func(t *testing.T) {
logger, err := NewSugardLogger()
assert.Nil(t, err)
impl := ChartTemplateServiceImpl{
logger: logger,
}
directory := "github.com/devtron-labs/devtron/scripts/devtron-reference-helm-charts"
pipelineStrategyPath := "pipeline-values.yaml"
values, err := impl.getValues(directory, pipelineStrategyPath)
assert.Nil(t, err)
assert.Nil(t, values)
})
}
Loading