Skip to content
1 change: 1 addition & 0 deletions pkg/pipeline/CiConfig.go
Original file line number Diff line number Diff line change
Expand Up @@ -84,6 +84,7 @@ type CiConfig struct {
ImageRetryInterval int `env:"IMAGE_RETRY_INTERVAL" envDefault:"5"` //image retry interval takes value in seconds
OrchestratorHost string `env:"ORCH_HOST" envDefault:"http://devtroncd-orchestrator-service-prod.devtroncd/webhook/msg/nats"`
OrchestratorToken string `env:"ORCH_TOKEN" envDefault:""`
BuildxK8sDriverOptions string `env:"BUILDX_K8S_DRIVER_OPTIONS" envDefault:""`
}

type CiVolumeMount struct {
Expand Down
28 changes: 28 additions & 0 deletions pkg/pipeline/CiService.go
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@
package pipeline

import (
"encoding/json"
"errors"
"fmt"
appRepository "github.com/devtron-labs/devtron/internal/sql/repository/app"
Expand Down Expand Up @@ -171,6 +172,14 @@ func (impl *CiServiceImpl) TriggerCiPipeline(trigger Trigger) (int, error) {
return 0, err
}

if impl.ciConfig != nil && impl.ciConfig.UseBuildx && impl.ciConfig.BuildxK8sDriverOptions != "" {
err = impl.setBuildxK8sDriverData(workflowRequest)
if err != nil {
impl.Logger.Errorw("error in setBuildxK8sDriverData", "BUILDX_K8S_DRIVER_OPTIONS", impl.ciConfig.BuildxK8sDriverOptions, "err", err)
return 0, err
}
}

//savedCiWf.LogLocation = impl.ciConfig.DefaultBuildLogsKeyPrefix + "/" + workflowRequest.WorkflowNamePrefix + "/main.log"
savedCiWf.LogLocation = fmt.Sprintf("%s/%s/main.log", impl.ciConfig.DefaultBuildLogsKeyPrefix, workflowRequest.WorkflowNamePrefix)
err = impl.updateCiWorkflow(workflowRequest, savedCiWf)
Expand All @@ -192,6 +201,25 @@ func (impl *CiServiceImpl) TriggerCiPipeline(trigger Trigger) (int, error) {
return savedCiWf.Id, err
}

func (impl *CiServiceImpl) setBuildxK8sDriverData(workflowRequest *WorkflowRequest) error {
ciBuildConfig := workflowRequest.CiBuildConfig
if ciBuildConfig != nil {
if dockerBuildConfig := ciBuildConfig.DockerBuildConfig; dockerBuildConfig != nil {
buildxK8sDriverOptions := make([]map[string]string, 0)
err := json.Unmarshal([]byte(impl.ciConfig.BuildxK8sDriverOptions), &buildxK8sDriverOptions)
if err != nil {
errMsg := "error in parsing BUILDX_K8S_DRIVER_OPTIONS from the devtron-cm, "
err = errors.New(errMsg + "error : " + err.Error())
impl.Logger.Errorw(errMsg, "err", err)
return err
} else {
dockerBuildConfig.BuildxK8sDriverOptions = buildxK8sDriverOptions
}
}
}
return nil
}

func (impl *CiServiceImpl) getEnvironmentForJob(pipeline *pipelineConfig.CiPipeline, trigger Trigger) (*repository1.Environment, bool, error) {
app, err := impl.appRepository.FindById(pipeline.AppId)
if err != nil {
Expand Down
1 change: 1 addition & 0 deletions pkg/pipeline/WorkflowService.go
Original file line number Diff line number Diff line change
Expand Up @@ -376,6 +376,7 @@ func (impl *WorkflowServiceImpl) SubmitWorkflow(workflowRequest *WorkflowRequest
ArchiveLogs: &archiveLogs,
},
}

if isJob {
ciTemplate, err = getCiTemplateWithConfigMapsAndSecrets(&configMaps, &secrets, ciTemplate, existingConfigMap, existingSecrets)
}
Expand Down
19 changes: 10 additions & 9 deletions pkg/pipeline/bean/CiBuildConfig.go
Original file line number Diff line number Diff line change
Expand Up @@ -28,15 +28,16 @@ type CiBuildConfigBean struct {
}

type DockerBuildConfig struct {
DockerfilePath string `json:"dockerfileRelativePath,omitempty"`
DockerfileContent string `json:"dockerfileContent"`
Args map[string]string `json:"args,omitempty"`
TargetPlatform string `json:"targetPlatform,omitempty"`
Language string `json:"language,omitempty"`
LanguageFramework string `json:"languageFramework,omitempty"`
DockerBuildOptions map[string]string `json:"dockerBuildOptions,omitempty"`
BuildContext string `json:"buildContext,omitempty"`
UseBuildx bool `json:"useBuildx"`
DockerfilePath string `json:"dockerfileRelativePath,omitempty"`
DockerfileContent string `json:"dockerfileContent"`
Args map[string]string `json:"args,omitempty"`
TargetPlatform string `json:"targetPlatform,omitempty"`
Language string `json:"language,omitempty"`
LanguageFramework string `json:"languageFramework,omitempty"`
DockerBuildOptions map[string]string `json:"dockerBuildOptions,omitempty"`
BuildContext string `json:"buildContext,omitempty"`
UseBuildx bool `json:"useBuildx"`
BuildxK8sDriverOptions []map[string]string `json:"buildxK8SDriverOptions,omitempty"`
}

type BuildPackConfig struct {
Expand Down