Add a new `manifest` command to support multi-architecture builds
Hi all,
Multi-architecture support for buildpacks have been requested (#1459 | #1460 ) for a long time. Recently I have been working on this as part of the Linux Foundation Mentorship program under the mentorship of Juan Bustamante (@jjbustamante), Jerico Pena (@jericop) and Aidan Delaney (@AidanDelaney)
We would appreciate your ideas and thoughts on how we want to move forward. There is a lot of validations and test to be added along the line. We are having a weekly meetings for multi-arch support every Monday @ 10:00 AM EDT/EST. You can find the zoom link in the meeting minutes document.
A new ImageIndex/ManifestList interface is being added to imgutil module.
You may find the following resources useful.
- Multi-Architecutre goals
- Image Index specification
- ImageIndex imgutil interface
- Meeting minutes
- Slack Discussion
- pack manifest command
- Pack issue #1459
- Pack issue #1460
Fixes #1678 Fixes #1460 Fixes #1722 Fixes #1720 Fixes #1721 Fixes #1719 Fixes #1718
Moving to milestone 0.31.0
@jjbustamante there was an issue with pack buildpack package when packaging local buildpacks without --publish flag. Please make sure the issue is resolved before merging this PR.
The issue is there is a panic when we building local buildpacks, the program panics here
@jjbustamante there was an issue with
pack buildpack packagewhen packaginglocalbuildpacks without--publishflag. Please make sure the issue is resolved before merging this PR. The issue is there is a panic when we building local buildpacks, the program panics here
On this branch?
@natalieparellano there are still some work to do, but the branch is compiling I played a little bit with the commands locally, let's just give it the last push, polish it a little bit more together with the imgutil PR and let's get this thing done!
Great work @husni-faiz @jjbustamante :) I left a few code suggestions and a few comments, but the only ones that are truly blocking for me are
- Filename should be consistent with the command implemented
- Let's decide on the user interface for media types (or at least explain what we mean by 'v2s2')
- User interface for push options - ideally we only accept those when there is a --publish flag or we are calling push
Edit: on the last comment, I think that is actually what we are doing. I'll leave a code suggestion...
@natalieparellano Thanks a lot for the feedback
I just refactored the files
I changed it for oci or docker default value is oci
Yeah, I think what is missing here is to add some validation to accept --insecure when --publish flag is used.