Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Multi-stage builds execute CI in the last stage context instead of reverting to the job image. #3325

Open
ivanchubb opened this issue Sep 25, 2024 · 5 comments

Comments

@ivanchubb
Copy link

ivanchubb commented Sep 25, 2024

Actual behavior

When executing a multi-stage build (particularly evident when the last stage is FROM scratch) after the executor finishes, the rest of the script in the CI job maintains the context of the built image instead of reverting back to the context of the image defined at the job level. This causes unexpected errors when trying to do any parsing or log aggregation after running the exeuctor.

Expected behavior

Expected behavior is after the executor completes, the shell would return to the context of the image specified in the CI job.

To Reproduce
Steps to reproduce the behavior:

  1. Create a multi-stage Dockerfile where the first stage builds the binary and the second stage is FROM scratch
  2. Create a ci job with image: kaniko:1.23.2 where the executor is ran.
  3. In the same job, after the executor runs, add to the script command that should exist in kaniko:1.23.2, but not in the final stage of the Dockerfile (for example: sed). The command will fail with "sed not found".

Additional Information

Triage Notes for the Maintainers

Description Yes/No
Please check if this a new feature you are proposing
Please check if the build works in docker but not in kaniko
Please check if this error is seen when you use --cache flag
Please check if your dockerfile is a multistage dockerfile
@erikdao
Copy link

erikdao commented Oct 8, 2024

Upvote for this report since I'm facing a very similar issue.

@mzihlmann
Copy link

could you be looking for the --cleanup flag?

https://github.com/GoogleContainerTools/kaniko#flag---cleanup

@ivanchubb
Copy link
Author

could you be looking for the --cleanup flag?

https://github.com/GoogleContainerTools/kaniko#flag---cleanup

Just tried that and it doesn't help

@feifei325
Copy link

feifei325 commented Nov 19, 2024

I have a similar problem. I observed that when using kaniko to build multiple levels,
Example command: /kaniko/executor --context dir:///{codePath} ...
When the Dockerfile contains the following command
COPY --from={baseImage} /{targetPath} After the COPY command is executed, {codePath} will be cleared. I am not sure why

After executing COPY --from=, execute ADD . .

@feifei325
Copy link

I have a similar problem. I observed that when using kaniko to build multiple levels, Example command: /kaniko/executor --context dir:///{codePath} ... When the Dockerfile contains the following command COPY --from={baseImage} /{targetPath} After the COPY command is executed, {codePath} will be cleared. I am not sure why

After executing COPY --from=, execute ADD . .

Use kaniko to package, put the code in /kaniko/{code_dir} and kaniko/executor --context dir:///kaniko/{code_dir} .... This can be executed normally. But I don't know why it can't be placed in other directories

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

4 participants