You've already forked sap-jenkins-library
mirror of
https://github.com/SAP/jenkins-library.git
synced 2025-11-06 09:09:19 +02:00
feat(cnbBuild): support for paketo bindings (#3236)
* [WIP] bindings support for cnbBuild step Co-authored-by: Pavel Busko <pavel.busko@sap.com> * add unit tests Co-authored-by: Philipp Stehle <philipp.stehle@sap.com> * switch to mapstruct for more meaningful errors Co-authored-by: Philipp Stehle <philipp.stehle@sap.com> * add integration test for bindings Co-authored-by: Philipp Stehle <philipp.stehle@sap.com> * Add documentation for cnbBuild.bindings Co-authored-by: Philipp Stehle <philipp.stehle@sap.com> * fixed unit tests Co-authored-by: Pavel Busko <pavel.busko@sap.com> * apply codeclimate suggestions Co-authored-by: Philipp Stehle <philipp.stehle@sap.com> * renamed field "secret" to "key" Co-authored-by: Pavel Busko <pavel.busko@sap.com> Co-authored-by: Pavel Busko <pavel.busko@sap.com>
This commit is contained in:
@@ -12,6 +12,7 @@ import (
|
||||
|
||||
"github.com/SAP/jenkins-library/pkg/certutils"
|
||||
"github.com/SAP/jenkins-library/pkg/cnbutils"
|
||||
"github.com/SAP/jenkins-library/pkg/cnbutils/bindings"
|
||||
"github.com/SAP/jenkins-library/pkg/cnbutils/project"
|
||||
"github.com/SAP/jenkins-library/pkg/command"
|
||||
"github.com/SAP/jenkins-library/pkg/docker"
|
||||
@@ -28,6 +29,7 @@ const (
|
||||
detectorPath = "/cnb/lifecycle/detector"
|
||||
builderPath = "/cnb/lifecycle/builder"
|
||||
exporterPath = "/cnb/lifecycle/exporter"
|
||||
platformPath = "/tmp/platform"
|
||||
)
|
||||
|
||||
type cnbBuildUtilsBundle struct {
|
||||
@@ -262,10 +264,8 @@ func runCnbBuild(config *cnbBuildOptions, telemetryData *telemetry.CustomData, u
|
||||
}
|
||||
}
|
||||
|
||||
platformPath := "/platform"
|
||||
if config.BuildEnvVars != nil && len(config.BuildEnvVars) > 0 {
|
||||
log.Entry().Infof("Setting custom environment variables: '%v'", config.BuildEnvVars)
|
||||
platformPath = "/tmp/platform"
|
||||
err = cnbutils.CreateEnvFiles(utils, platformPath, config.BuildEnvVars)
|
||||
if err != nil {
|
||||
log.SetErrorCategory(log.ErrorConfiguration)
|
||||
@@ -273,6 +273,12 @@ func runCnbBuild(config *cnbBuildOptions, telemetryData *telemetry.CustomData, u
|
||||
}
|
||||
}
|
||||
|
||||
err = bindings.ProcessBindings(utils, platformPath, config.Bindings)
|
||||
if err != nil {
|
||||
log.SetErrorCategory(log.ErrorConfiguration)
|
||||
return errors.Wrap(err, "failed process bindings")
|
||||
}
|
||||
|
||||
dockerConfigFile := ""
|
||||
dockerConfig := &configfile.ConfigFile{}
|
||||
dockerConfigJSON := []byte(`{"auths":{}}`)
|
||||
|
||||
@@ -18,16 +18,17 @@ import (
|
||||
)
|
||||
|
||||
type cnbBuildOptions struct {
|
||||
ContainerImageName string `json:"containerImageName,omitempty"`
|
||||
ContainerImageTag string `json:"containerImageTag,omitempty"`
|
||||
ContainerRegistryURL string `json:"containerRegistryUrl,omitempty"`
|
||||
Buildpacks []string `json:"buildpacks,omitempty"`
|
||||
BuildEnvVars []string `json:"buildEnvVars,omitempty"`
|
||||
Path string `json:"path,omitempty"`
|
||||
ProjectDescriptor string `json:"projectDescriptor,omitempty"`
|
||||
DockerConfigJSON string `json:"dockerConfigJSON,omitempty"`
|
||||
CustomTLSCertificateLinks []string `json:"customTlsCertificateLinks,omitempty"`
|
||||
AdditionalTags []string `json:"additionalTags,omitempty"`
|
||||
ContainerImageName string `json:"containerImageName,omitempty"`
|
||||
ContainerImageTag string `json:"containerImageTag,omitempty"`
|
||||
ContainerRegistryURL string `json:"containerRegistryUrl,omitempty"`
|
||||
Buildpacks []string `json:"buildpacks,omitempty"`
|
||||
BuildEnvVars []string `json:"buildEnvVars,omitempty"`
|
||||
Path string `json:"path,omitempty"`
|
||||
ProjectDescriptor string `json:"projectDescriptor,omitempty"`
|
||||
DockerConfigJSON string `json:"dockerConfigJSON,omitempty"`
|
||||
CustomTLSCertificateLinks []string `json:"customTlsCertificateLinks,omitempty"`
|
||||
AdditionalTags []string `json:"additionalTags,omitempty"`
|
||||
Bindings map[string]interface{} `json:"bindings,omitempty"`
|
||||
}
|
||||
|
||||
type cnbBuildCommonPipelineEnvironment struct {
|
||||
@@ -293,6 +294,14 @@ func cnbBuildMetadata() config.StepData {
|
||||
Aliases: []config.Alias{},
|
||||
Default: []string{},
|
||||
},
|
||||
{
|
||||
Name: "bindings",
|
||||
ResourceRef: []config.ResourceReference{},
|
||||
Scope: []string{"PARAMETERS", "STAGES", "STEPS"},
|
||||
Type: "map[string]interface{}",
|
||||
Mandatory: false,
|
||||
Aliases: []config.Alias{},
|
||||
},
|
||||
},
|
||||
},
|
||||
Containers: []config.Container{
|
||||
|
||||
@@ -55,8 +55,8 @@ func TestRunCnbBuild(t *testing.T) {
|
||||
assert.Equal(t, "/cnb/lifecycle/detector", runner.Calls[0].Exec)
|
||||
assert.Equal(t, "/cnb/lifecycle/builder", runner.Calls[1].Exec)
|
||||
assert.Equal(t, "/cnb/lifecycle/exporter", runner.Calls[2].Exec)
|
||||
assert.Equal(t, []string{"-buildpacks", "/cnb/buildpacks", "-order", "/cnb/order.toml", "-platform", "/platform"}, runner.Calls[0].Params)
|
||||
assert.Equal(t, []string{"-buildpacks", "/cnb/buildpacks", "-platform", "/platform"}, runner.Calls[1].Params)
|
||||
assert.Equal(t, []string{"-buildpacks", "/cnb/buildpacks", "-order", "/cnb/order.toml", "-platform", "/tmp/platform"}, runner.Calls[0].Params)
|
||||
assert.Equal(t, []string{"-buildpacks", "/cnb/buildpacks", "-platform", "/tmp/platform"}, runner.Calls[1].Params)
|
||||
assert.Equal(t, []string{fmt.Sprintf("%s/%s:%s", registry, config.ContainerImageName, config.ContainerImageTag)}, runner.Calls[2].Params)
|
||||
})
|
||||
|
||||
@@ -82,8 +82,8 @@ func TestRunCnbBuild(t *testing.T) {
|
||||
assert.Equal(t, "/cnb/lifecycle/detector", runner.Calls[0].Exec)
|
||||
assert.Equal(t, "/cnb/lifecycle/builder", runner.Calls[1].Exec)
|
||||
assert.Equal(t, "/cnb/lifecycle/exporter", runner.Calls[2].Exec)
|
||||
assert.Equal(t, []string{"-buildpacks", "/cnb/buildpacks", "-order", "/cnb/order.toml", "-platform", "/platform"}, runner.Calls[0].Params)
|
||||
assert.Equal(t, []string{"-buildpacks", "/cnb/buildpacks", "-platform", "/platform"}, runner.Calls[1].Params)
|
||||
assert.Equal(t, []string{"-buildpacks", "/cnb/buildpacks", "-order", "/cnb/order.toml", "-platform", "/tmp/platform"}, runner.Calls[0].Params)
|
||||
assert.Equal(t, []string{"-buildpacks", "/cnb/buildpacks", "-platform", "/tmp/platform"}, runner.Calls[1].Params)
|
||||
assert.Equal(t, []string{fmt.Sprintf("%s/%s:%s", registry, config.ContainerImageName, config.ContainerImageTag)}, runner.Calls[2].Params)
|
||||
})
|
||||
|
||||
@@ -157,8 +157,8 @@ func TestRunCnbBuild(t *testing.T) {
|
||||
assert.Equal(t, "/cnb/lifecycle/detector", runner.Calls[0].Exec)
|
||||
assert.Equal(t, "/cnb/lifecycle/builder", runner.Calls[1].Exec)
|
||||
assert.Equal(t, "/cnb/lifecycle/exporter", runner.Calls[2].Exec)
|
||||
assert.Equal(t, []string{"-buildpacks", "/tmp/buildpacks", "-order", "/tmp/buildpacks/order.toml", "-platform", "/platform"}, runner.Calls[0].Params)
|
||||
assert.Equal(t, []string{"-buildpacks", "/tmp/buildpacks", "-platform", "/platform"}, runner.Calls[1].Params)
|
||||
assert.Equal(t, []string{"-buildpacks", "/tmp/buildpacks", "-order", "/tmp/buildpacks/order.toml", "-platform", "/tmp/platform"}, runner.Calls[0].Params)
|
||||
assert.Equal(t, []string{"-buildpacks", "/tmp/buildpacks", "-platform", "/tmp/platform"}, runner.Calls[1].Params)
|
||||
assert.Equal(t, []string{fmt.Sprintf("%s/%s:%s", registry, config.ContainerImageName, config.ContainerImageTag)}, runner.Calls[2].Params)
|
||||
})
|
||||
|
||||
|
||||
Reference in New Issue
Block a user