Skip to content
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@ type CiBuildConfig struct {
Type string `sql:"type"`
CiTemplateId int `sql:"ci_template_id"`
CiTemplateOverrideId int `sql:"ci_template_override_id"`
UseRootContext *bool `sql:"use_root_context"`
BuildMetadata string `sql:"build_metadata"`
sql.AuditLog
}
Expand Down
4 changes: 4 additions & 0 deletions pkg/pipeline/CiService.go
Original file line number Diff line number Diff line change
Expand Up @@ -445,6 +445,10 @@ func (impl *CiServiceImpl) buildWfRequestForCiPipeline(pipeline *pipelineConfig.
if buildContextCheckoutPath == "" {
buildContextCheckoutPath = checkoutPath
}
if ciBuildConfigBean.UseRootBuildContext {
//use root build context i.e '.'
buildContextCheckoutPath = "."
}
if ciBuildConfigBean.CiBuildType == bean2.SELF_DOCKERFILE_BUILD_TYPE || ciBuildConfigBean.CiBuildType == bean2.MANAGED_DOCKERFILE_BUILD_TYPE {
ciBuildConfigBean.DockerBuildConfig.BuildContext = filepath.Join(buildContextCheckoutPath, ciBuildConfigBean.DockerBuildConfig.BuildContext)
dockerBuildConfig := ciBuildConfigBean.DockerBuildConfig
Expand Down
19 changes: 15 additions & 4 deletions pkg/pipeline/bean/CiBuildConfig.go
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@ type CiBuildConfigBean struct {
Id int `json:"id"`
GitMaterialId int `json:"gitMaterialId,omitempty" validate:"required"`
BuildContextGitMaterialId int `json:"buildContextGitMaterialId,omitempty" validate:"required"`
UseRootBuildContext bool `json:"useRootBuildContext"`
CiBuildType CiBuildType `json:"ciBuildType"`
DockerBuildConfig *DockerBuildConfig `json:"dockerBuildConfig,omitempty"`
BuildPackConfig *BuildPackConfig `json:"buildPackConfig"`
Expand Down Expand Up @@ -68,6 +69,7 @@ func ConvertBuildConfigBeanToDbEntity(templateId int, overrideTemplateId int, ci
CiTemplateOverrideId: overrideTemplateId,
BuildMetadata: buildMetadata,
AuditLog: sql.AuditLog{UpdatedOn: time.Now(), UpdatedBy: userId},
UseRootContext: &ciBuildConfigBean.UseRootBuildContext,
}
return ciBuildConfigEntity, nil
}
Expand All @@ -91,11 +93,17 @@ func ConvertDbBuildConfigToBean(dbBuildConfig *pipelineConfig.CiBuildConfig) (*C
return nil, err
}
}
useRootBuildContext := false
//dbBuildConfig.UseRootContext will be nil if the entry in db never updated before
if dbBuildConfig.UseRootContext == nil || *(dbBuildConfig.UseRootContext) {
useRootBuildContext = true
}
ciBuildConfigBean := &CiBuildConfigBean{
Id: dbBuildConfig.Id,
CiBuildType: ciBuildType,
BuildPackConfig: buildPackConfig,
DockerBuildConfig: dockerBuildConfig,
Id: dbBuildConfig.Id,
CiBuildType: ciBuildType,
BuildPackConfig: buildPackConfig,
DockerBuildConfig: dockerBuildConfig,
UseRootBuildContext: useRootBuildContext,
}
return ciBuildConfigBean, nil
}
Expand Down Expand Up @@ -131,6 +139,7 @@ func OverrideCiBuildConfig(dockerfilePath string, oldArgs string, ciLevelArgs st
return nil, err
}
}
//no entry found in ci_build_config table, construct with requested data
if ciBuildConfigBean == nil {
dockerArgs := mergeMap(oldDockerArgs, ciLevelDockerArgs)
ciBuildConfigBean = &CiBuildConfigBean{
Expand All @@ -142,6 +151,8 @@ func OverrideCiBuildConfig(dockerfilePath string, oldArgs string, ciLevelArgs st
DockerBuildOptions: dockerBuildOptionsMap,
BuildContext: "",
},
//setting true as default
UseRootBuildContext: true,
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

add comment here about the intent of this

}
} else if ciBuildConfigBean.CiBuildType == SELF_DOCKERFILE_BUILD_TYPE || ciBuildConfigBean.CiBuildType == MANAGED_DOCKERFILE_BUILD_TYPE {
dockerBuildConfig := ciBuildConfigBean.DockerBuildConfig
Expand Down
1 change: 1 addition & 0 deletions scripts/sql/143_alter_build_context.down.sql
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
ALTER TABLE ci_build_config DROP COLUMN IF EXISTS use_root_context;
1 change: 1 addition & 0 deletions scripts/sql/143_alter_build_context.up.sql
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
ALTER TABLE ci_build_config ADD COLUMN IF NOT EXISTS "use_root_context" bool;