fix: stages are now resolved correctly if skip-unused
This commit is contained in:
parent
ae9c9b2813
commit
a9c7839491
|
|
@ -575,12 +575,12 @@ func DoBuild(opts *config.KanikoOptions) (v1.Image, error) {
|
|||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
stageNameToIdx := ResolveCrossStageInstructions(stages)
|
||||
|
||||
kanikoStages, err := dockerfile.MakeKanikoStages(opts, stages, metaArgs)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
stageNameToIdx := ResolveCrossStageInstructions(kanikoStages)
|
||||
|
||||
if err := util.GetExcludedFiles(opts.DockerfilePath, opts.SrcContext); err != nil {
|
||||
return nil, err
|
||||
|
|
@ -841,9 +841,9 @@ func reviewConfig(stage config.KanikoStage, config *v1.Config) {
|
|||
}
|
||||
}
|
||||
|
||||
// iterates over a list of stages and resolves instructions referring to earlier stages
|
||||
// iterates over a list of KanikoStage and resolves instructions referring to earlier stages
|
||||
// returns a mapping of stage name to stage id, f.e - ["first": "0", "second": "1", "target": "2"]
|
||||
func ResolveCrossStageInstructions(stages []instructions.Stage) map[string]string {
|
||||
func ResolveCrossStageInstructions(stages []config.KanikoStage) map[string]string {
|
||||
nameToIndex := make(map[string]string)
|
||||
for i, stage := range stages {
|
||||
index := strconv.Itoa(i)
|
||||
|
|
|
|||
|
|
@ -379,11 +379,11 @@ COPY --from=second /bar /bat
|
|||
t.Errorf("Failed to parse test dockerfile to stages: %s", err)
|
||||
}
|
||||
|
||||
stageNameToIdx := ResolveCrossStageInstructions(testStages)
|
||||
kanikoStages, err := dockerfile.MakeKanikoStages(opts, testStages, metaArgs)
|
||||
if err != nil {
|
||||
t.Errorf("Failed to parse stages to Kaniko Stages: %s", err)
|
||||
}
|
||||
stageNameToIdx := ResolveCrossStageInstructions(kanikoStages)
|
||||
|
||||
got, err := CalculateDependencies(kanikoStages, opts, stageNameToIdx)
|
||||
if err != nil {
|
||||
|
|
@ -933,11 +933,12 @@ COPY %s bar.txt
|
|||
if err != nil {
|
||||
t.Errorf("Failed to parse test dockerfile to stages: %s", err)
|
||||
}
|
||||
_ = ResolveCrossStageInstructions(testStages)
|
||||
|
||||
kanikoStages, err := dockerfile.MakeKanikoStages(opts, testStages, metaArgs)
|
||||
if err != nil {
|
||||
t.Errorf("Failed to parse stages to Kaniko Stages: %s", err)
|
||||
}
|
||||
_ = ResolveCrossStageInstructions(kanikoStages)
|
||||
stage := kanikoStages[0]
|
||||
|
||||
cmds := stage.Commands
|
||||
|
|
@ -1008,11 +1009,12 @@ COPY %s bar.txt
|
|||
if err != nil {
|
||||
t.Errorf("Failed to parse test dockerfile to stages: %s", err)
|
||||
}
|
||||
_ = ResolveCrossStageInstructions(testStages)
|
||||
|
||||
kanikoStages, err := dockerfile.MakeKanikoStages(opts, testStages, metaArgs)
|
||||
if err != nil {
|
||||
t.Errorf("Failed to parse stages to Kaniko Stages: %s", err)
|
||||
}
|
||||
_ = ResolveCrossStageInstructions(kanikoStages)
|
||||
|
||||
stage := kanikoStages[0]
|
||||
|
||||
|
|
@ -1333,11 +1335,16 @@ func Test_ResolveCrossStageInstructions(t *testing.T) {
|
|||
COPY --from=third /hi3 /hi4
|
||||
COPY --from=2 /hi3 /hi4
|
||||
`
|
||||
stages, _, err := dockerfile.Parse([]byte(df))
|
||||
stages, metaArgs, err := dockerfile.Parse([]byte(df))
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
stageToIdx := ResolveCrossStageInstructions(stages)
|
||||
opts := &config.KanikoOptions{}
|
||||
kanikoStages, err := dockerfile.MakeKanikoStages(opts, stages, metaArgs)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
stageToIdx := ResolveCrossStageInstructions(kanikoStages)
|
||||
for index, stage := range stages {
|
||||
if index == 0 {
|
||||
continue
|
||||
|
|
|
|||
Loading…
Reference in New Issue