added targets flag for buildpack new cli#1921
Conversation
Signed-off-by: WYGIN <wygininc@gmail.com>
Signed-off-by: WYGIN <wygininc@gmail.com>
Signed-off-by: WYGIN <wygininc@gmail.com>
Signed-off-by: WYGIN <wygininc@gmail.com>
|
@jjbustamante i am unsure why the tests are failing & i tried to run tests on main branch & undoing all changes i made in my current branch, but still getting same result :( are these tests are failing due to my changes ? |
Let me check, I tried yesterday to check the logs but I was not able to. |
|
I think I know what is going on, if you take a look at your change in internal/commands/buildpack_new_test.go you said:
But in the line 78 path := filepath.Join(tmpDir, "some-cnb")
command.SetArgs([]string{"--path", path, "example/some-cnb"})Where you are actually setting the flags to the A suggestion, do not modify the current tests just add a new test case for the new scenario. when("BuildpackNew#Execute", func() {
it("uses the args to generate artifacts", func() {
// This is the current existing test
}
})You could modify it in this way: when("BuildpackNew#Execute", func() {
it("uses the args to generate artifacts", func() {
// This is the current existing test
}
when("targets is specified", func() {
it("uses the targets to generate artifacts", func(){
// Copy here copy from the previous test, and modify it as you need.
// Also any refactor is valid to avoid code duplication
}
}
}) |
Signed-off-by: WYGIN <wygininc@gmail.com>
Signed-off-by: WYGIN <wygininc@gmail.com>
Signed-off-by: WYGIN <wygininc@gmail.com>
|
@jjbustamante @natalieparellano pr is ready for review, please let me know if there there is something to fix |
Signed-off-by: WYGIN <wygininc@gmail.com>
|
@WYGIN Amazing work! I compiled your branch and played with it. I have a little doubt with one scenario, @natalieparellano maybe you can help me to validate the expected behavior. I ran the example from our docs > out/pack buildpack new examples/ruby \
--api 0.8 \
--path ruby-buildpack \
--version 0.0.1 \
--stacks io.buildpacks.samples.stacks.jammy
Flag --stacks has been deprecated, prefer `--targets` instead: https://github.com/buildpacks/rfcs/blob/main/text/0096-remove-stacks-mixins.md
create buildpack.toml
create bin/build
create bin/detect
Successfully created examples/rubyThe structure was created, but checking the > cat ruby-buildpack/buildpack.toml
api = "0.8"
WithWindowsBuild = false
WithLinuxBuild = false
[buildpack]
id = "examples/ruby"
version = "0.0.1"
[[stacks]]
id = "io.buildpacks.samples.stacks.jammy"
[[targets]]
os = "darwin"
arch = "amd64"We have By the way, I checked the latest pack version > cat ruby-buildpack/buildpack.toml
api = "0.8"
WithWindowsBuild = false.
WithLinuxBuild = false
[buildpack]
id = "examples/ruby"
version = "0.0.1"
[[stacks]]
id = "io.buildpacks.samples.stacks.jammy"@jkutner Should |
if i am not wrong it is part of build time but i think we can add a warning for
i think i am also thinking about adding cli |
|
@jjbustamante i would like to know if there are any changes still required, i am willing to work on this issue(#1632 ) if i am done with this pr |
Yes, the validation is executed during build time, but, what I am totally happy with is the following:
|
| ID: "io.buildpacks.stacks.jammy", | ||
| Mixins: []string{}, | ||
| }}, | ||
| Targets: targets, |
There was a problem hiding this comment.
Based on my comment here, I will remove this Targets: targets.
- IF users specifies only
stacks, I don't wanttargetsto be added inbuildpack.toml, the warning message is great and we will keep the current behavior of pack. - IF users specifies
stacksandtargetsthen both are allow for now, untilstacksis actually deprecated. Based on this slack thread
Signed-off-by: WYGIN <wygininc@gmail.com>
jjbustamante
left a comment
There was a problem hiding this comment.
@WYGIN thank you so much for this PR!! ❤️ , it is going to be very valuable for our end goal for supporting multi-arch!
Great job!
|
@buildpacks/platform-maintainers can you take a look at this? and merge if everything is fine. |


Summary
--targetstopack buildpack newwith shorthand-t--targetswill take args in format [os][/arch][/archvariant]:[distroName@version@another-version];[another-distro@v1@v2]--stacksflag deprecatedidof stacks no more exists in filebuildpack.toml[[stacks]]frombuildpack.tomlfile--targetof current device whentargetflag is not specifiedbuildpack.tomlfileOutput
Before
pack buildpack new testAfter
pack buildpack new test -t "linux/arm/v6" -t "linux/amd64" -t "windows/amd64:windows-nano@10.0.19041.1415" -t "linux/arm/v6:ubuntu@14.04" -t "linux/arm/v6:ubuntu@16.04" -t "linux/arm/v6:ubuntu@16.01@16.02;debian@10.10@8.06"Documentation
--targetsflagRelated
Resolves #1918