Compare commits

...

455 Commits

Author SHA1 Message Date
dependabot[bot] f989bababe
build(deps): bump the go-dependencies group with 6 updates (#2424)
Bumps the go-dependencies group with 6 updates:

| Package | From | To |
| --- | --- | --- |
| [github.com/docker/go-connections](https://github.com/docker/go-connections) | `0.5.0` | `0.6.0` |
| [golang.org/x/crypto](https://github.com/golang/crypto) | `0.40.0` | `0.41.0` |
| [golang.org/x/mod](https://github.com/golang/mod) | `0.26.0` | `0.27.0` |
| [golang.org/x/sys](https://github.com/golang/sys) | `0.34.0` | `0.35.0` |
| [golang.org/x/term](https://github.com/golang/term) | `0.33.0` | `0.34.0` |
| [golang.org/x/text](https://github.com/golang/text) | `0.27.0` | `0.28.0` |


Updates `github.com/docker/go-connections` from 0.5.0 to 0.6.0
- [Commits](https://github.com/docker/go-connections/compare/v0.5.0...v0.6.0)

Updates `golang.org/x/crypto` from 0.40.0 to 0.41.0
- [Commits](https://github.com/golang/crypto/compare/v0.40.0...v0.41.0)

Updates `golang.org/x/mod` from 0.26.0 to 0.27.0
- [Commits](https://github.com/golang/mod/compare/v0.26.0...v0.27.0)

Updates `golang.org/x/sys` from 0.34.0 to 0.35.0
- [Commits](https://github.com/golang/sys/compare/v0.34.0...v0.35.0)

Updates `golang.org/x/term` from 0.33.0 to 0.34.0
- [Commits](https://github.com/golang/term/compare/v0.33.0...v0.34.0)

Updates `golang.org/x/text` from 0.27.0 to 0.28.0
- [Release notes](https://github.com/golang/text/releases)
- [Commits](https://github.com/golang/text/compare/v0.27.0...v0.28.0)

---
updated-dependencies:
- dependency-name: github.com/docker/go-connections
  dependency-version: 0.6.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: go-dependencies
- dependency-name: golang.org/x/crypto
  dependency-version: 0.41.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: go-dependencies
- dependency-name: golang.org/x/mod
  dependency-version: 0.27.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: go-dependencies
- dependency-name: golang.org/x/sys
  dependency-version: 0.35.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: go-dependencies
- dependency-name: golang.org/x/term
  dependency-version: 0.34.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: go-dependencies
- dependency-name: golang.org/x/text
  dependency-version: 0.28.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: go-dependencies
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-08-25 08:36:25 -05:00
Jesse Brown 58cb8935ef
Update imgutil to improve containerd storage driver performance (#2427)
* Update imgutil to improve containerd storage driver performance

- Always try the fast path first (omitting base layers) regardless of storage type. This greatly speeds up creating ephemeral builders in pack when it saves to the daemon.
- Added log lines around ephemeral builder creation to help show time spent.

Signed-off-by: Jesse Brown <jabrown85@gmail.com>

* fixup! Update imgutil to improve containerd storage driver performance

Signed-off-by: Jesse Brown <jabrown85@gmail.com>

---------

Signed-off-by: Jesse Brown <jabrown85@gmail.com>
2025-08-18 10:32:33 -05:00
dependabot[bot] f9ac9cac91
build(deps): bump the go-dependencies group with 3 updates (#2422)
Bumps the go-dependencies group with 3 updates: [github.com/docker/cli](https://github.com/docker/cli), [github.com/docker/docker](https://github.com/docker/docker) and [github.com/onsi/gomega](https://github.com/onsi/gomega).


Updates `github.com/docker/cli` from 28.3.2+incompatible to 28.3.3+incompatible
- [Commits](https://github.com/docker/cli/compare/v28.3.2...v28.3.3)

Updates `github.com/docker/docker` from 28.3.2+incompatible to 28.3.3+incompatible
- [Release notes](https://github.com/docker/docker/releases)
- [Commits](https://github.com/docker/docker/compare/v28.3.2...v28.3.3)

Updates `github.com/onsi/gomega` from 1.37.0 to 1.38.0
- [Release notes](https://github.com/onsi/gomega/releases)
- [Changelog](https://github.com/onsi/gomega/blob/master/CHANGELOG.md)
- [Commits](https://github.com/onsi/gomega/compare/v1.37.0...v1.38.0)

---
updated-dependencies:
- dependency-name: github.com/docker/cli
  dependency-version: 28.3.3+incompatible
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: go-dependencies
- dependency-name: github.com/docker/docker
  dependency-version: 28.3.3+incompatible
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: go-dependencies
- dependency-name: github.com/onsi/gomega
  dependency-version: 1.38.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: go-dependencies
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-08-07 06:45:16 -05:00
dependabot[bot] 284fe34641
build(deps): bump the go-dependencies group with 8 updates (#2416)
---
updated-dependencies:
- dependency-name: github.com/docker/cli
  dependency-version: 28.3.2+incompatible
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: go-dependencies
- dependency-name: github.com/docker/docker
  dependency-version: 28.3.2+incompatible
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: go-dependencies
- dependency-name: golang.org/x/crypto
  dependency-version: 0.40.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: go-dependencies
- dependency-name: golang.org/x/mod
  dependency-version: 0.26.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: go-dependencies
- dependency-name: golang.org/x/sync
  dependency-version: 0.16.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: go-dependencies
- dependency-name: golang.org/x/sys
  dependency-version: 0.34.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: go-dependencies
- dependency-name: golang.org/x/term
  dependency-version: 0.33.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: go-dependencies
- dependency-name: golang.org/x/text
  dependency-version: 0.27.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: go-dependencies
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-07-15 21:53:10 -05:00
David Gannon fb0563f4cd
Added the first tag argument (#2394)
* Added the first `--tag` argument to builder and buildpack package create command

Signed-off-by: David Gannon <19214156+dgannon991@users.noreply.github.com>

---------

Signed-off-by: David Gannon <19214156+dgannon991@users.noreply.github.com>
2025-07-07 11:43:32 -05:00
Juan Bustamante ab77bee404
Fix #2405: Add template parameter to GitHub issue URL (#2407)
When using 'pack buildpack register', the GitHub URL was missing
the 'template=add-buildpack.md' parameter, causing GitHub to redirect
to a template selection page and drop all pre-filled parameters.

This fix adds the template parameter to ensure the correct issue
template is used and all parameters are preserved.

🤖 Generated with [Claude Code](https://claude.ai/code)

Signed-off-by: Juan Bustamante <bustamantejj@gmail.com>
Co-authored-by: Claude <noreply@anthropic.com>
2025-07-02 12:37:55 -05:00
dependabot[bot] 6ae35dced7
build(deps): bump buildpacks/github-actions from 5.9.1 to 5.9.2 (#2412)
Bumps [buildpacks/github-actions](https://github.com/buildpacks/github-actions) from 5.9.1 to 5.9.2.
- [Release notes](https://github.com/buildpacks/github-actions/releases)
- [Commits](https://github.com/buildpacks/github-actions/compare/v5.9.1...v5.9.2)

---
updated-dependencies:
- dependency-name: buildpacks/github-actions
  dependency-version: 5.9.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-07-01 08:04:46 -05:00
Juan Bustamante f1c347c6a6
Updating lifecycle version to latest v0.20.11 (#2411)
Signed-off-by: Juan Bustamante <bustamantejj@gmail.com>
2025-06-27 15:28:22 -05:00
dependabot[bot] 1ea8a29fb4
build(deps): bump github.com/go-viper/mapstructure/v2 in /tools (#2409)
Bumps [github.com/go-viper/mapstructure/v2](https://github.com/go-viper/mapstructure) from 2.2.1 to 2.3.0.
- [Release notes](https://github.com/go-viper/mapstructure/releases)
- [Changelog](https://github.com/go-viper/mapstructure/blob/main/CHANGELOG.md)
- [Commits](https://github.com/go-viper/mapstructure/compare/v2.2.1...v2.3.0)

---
updated-dependencies:
- dependency-name: github.com/go-viper/mapstructure/v2
  dependency-version: 2.3.0
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-06-27 14:08:05 -05:00
dependabot[bot] 90c1fdd6d8
build(deps): bump github.com/go-viper/mapstructure/v2 (#2410)
Bumps [github.com/go-viper/mapstructure/v2](https://github.com/go-viper/mapstructure) from 2.2.1 to 2.3.0.
- [Release notes](https://github.com/go-viper/mapstructure/releases)
- [Changelog](https://github.com/go-viper/mapstructure/blob/main/CHANGELOG.md)
- [Commits](https://github.com/go-viper/mapstructure/compare/v2.2.1...v2.3.0)

---
updated-dependencies:
- dependency-name: github.com/go-viper/mapstructure/v2
  dependency-version: 2.3.0
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-06-27 12:37:19 -05:00
dependabot[bot] d54ad1f25c
build(deps): bump buildpacks/github-actions from 5.8.11 to 5.9.1 (#2401)
Bumps [buildpacks/github-actions](https://github.com/buildpacks/github-actions) from 5.8.11 to 5.9.1.
- [Release notes](https://github.com/buildpacks/github-actions/releases)
- [Commits](https://github.com/buildpacks/github-actions/compare/v5.8.11...v5.9.1)

---
updated-dependencies:
- dependency-name: buildpacks/github-actions
  dependency-version: 5.9.1
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-06-27 16:27:13 +00:00
dependabot[bot] 204a8c4c4a
build(deps): bump the go-dependencies group across 1 directory with 3 updates (#2408)
Bumps the go-dependencies group with 3 updates in the / directory: [github.com/GoogleContainerTools/kaniko](https://github.com/GoogleContainerTools/kaniko), [github.com/docker/cli](https://github.com/docker/cli) and [github.com/go-git/go-git/v5](https://github.com/go-git/go-git).


Updates `github.com/GoogleContainerTools/kaniko` from 1.23.2 to 1.24.0
- [Release notes](https://github.com/GoogleContainerTools/kaniko/releases)
- [Changelog](https://github.com/GoogleContainerTools/kaniko/blob/main/CHANGELOG.md)
- [Commits](https://github.com/GoogleContainerTools/kaniko/compare/v1.23.2...v1.24.0)

Updates `github.com/docker/cli` from 28.2.2+incompatible to 28.3.0+incompatible
- [Commits](https://github.com/docker/cli/compare/v28.2.2...v28.3.0)

Updates `github.com/go-git/go-git/v5` from 5.16.0 to 5.16.2
- [Release notes](https://github.com/go-git/go-git/releases)
- [Commits](https://github.com/go-git/go-git/compare/v5.16.0...v5.16.2)

---
updated-dependencies:
- dependency-name: github.com/GoogleContainerTools/kaniko
  dependency-version: 1.24.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: go-dependencies
- dependency-name: github.com/docker/cli
  dependency-version: 28.3.0+incompatible
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: go-dependencies
- dependency-name: github.com/go-git/go-git/v5
  dependency-version: 5.16.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: go-dependencies
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-06-27 16:03:51 +00:00
Jerico Pena 6ee43b1713
Bump imgutil to latest and docker from v27.5.1 to v28.3.0 (#2406)
* Bump imgutil to latest and docker from v27.5.1 to v28.3.0
* Remove deprecated DSA key form sshdialer

Signed-off-by: Jerico Pena <jericop@gmail.com>
2025-06-27 09:57:41 -05:00
Juan Bustamante 57cf5b9e07
updating to ubuntu jammy when releasing pack (#2400)
Signed-off-by: Juan Bustamante <bustamantejj@gmail.com>
2025-06-16 17:11:41 -05:00
Juan Bustamante 4188637c6a
Jjbustamante/fix pack 2397 (#2399)
* Reverting to the previous way of releasing ubuntu's pack version

Signed-off-by: Juan Bustamante <bustamantejj@gmail.com>
2025-06-16 16:54:52 -05:00
Juan Bustamante 9bd06a987a
upding delivery workflow to correct the wrong format (#2398)
Signed-off-by: Juan Bustamante <bustamantejj@gmail.com>
2025-06-16 10:43:40 -05:00
Juan Bustamante 8e54e8a8db Fixing build-additional-arch for windows
Signed-off-by: Juan Bustamante <bustamantejj@gmail.com>
2025-06-06 12:31:14 -05:00
Prashant Rewar ba54b86ec0
Support Insecure Registries (#2077)
* Support Insecure Registries

Signed-off-by: Prashant Rewar <108176843+prashantrewar@users.noreply.github.com>
Signed-off-by: Juan Bustamante <bustamantejj@gmail.com>
Signed-off-by: Juan Bustamante <juan.bustamante@broadcom.com>
Co-authored-by: Juan Bustamante <juan.bustamante@broadcom.com>
Co-authored-by: Juan Bustamante <bustamantejj@gmail.com>
2025-06-06 08:59:28 -05:00
Juan Bustamante 5cbbf3396f
`pack builder create` supports system buildpacks (#2349)
This PR implements [RFC 101 - System Buildpacks](https://github.com/buildpacks/rfcs/blob/main/text/0101-system-buildpacks.md ) support in pack. 

Systems buildpacks are special buildpacks that are automatically included before (pre) and after (post) the regular buildpacks during the build process, providing platform-level functionality like shell profile scripts, service binding, and other platform-specific capabilities.

Signed-off-by: Juan Bustamante <bustamantejj@gmail.com>
2025-06-05 20:41:24 -05:00
Anatoli Babenia d5a88c789d
Make `go build` work without Makefile (#2390)
This merges `version.go` into `pkg/client/client.go`, which is the
only file that uses the it. Then it moves `cmd/pack/main.go` into
root. Now `go build` produces executable `pack` instead of bogus
`pack` with just `version.go`.

No need to specify `./cmd/pack` while compiling anymore.
The version is injected into client directly without extra files.

Signed-off-by: Anatoli Babenia <anatoli@rainforce.org>
Co-authored-by: Juan Bustamante <bustamantejj@gmail.com>
2025-06-03 07:47:11 -05:00
dependabot[bot] 1c326701b8
build(deps): bump buildpacks/github-actions from 5.8.10 to 5.8.11 (#2381)
Bumps [buildpacks/github-actions](https://github.com/buildpacks/github-actions) from 5.8.10 to 5.8.11.
- [Release notes](https://github.com/buildpacks/github-actions/releases)
- [Commits](https://github.com/buildpacks/github-actions/compare/v5.8.10...v5.8.11)

---
updated-dependencies:
- dependency-name: buildpacks/github-actions
  dependency-version: 5.8.11
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-06-02 12:51:11 +00:00
Juan Bustamante 9bf04afbc4
Adding unit tests for issue 2384 (#2391)
Signed-off-by: Juan Bustamante <bustamantejj@gmail.com>
2025-05-31 19:04:09 -05:00
Sam baa3edaef1
Do not select tagert from os if arch is specified (#2385)
The current daemonTarget function in pack has a flawed target selection logic that prevents proper multi-architecture builds when not publishing

Signed-off-by: Sam M <git@s-mc.io>
2025-05-31 18:45:04 -05:00
Juan Bustamante 8c7e57ae18
Fix default userns=host behavior to be opt-in (#2386)
* Fix default userns=host behavior to be opt-in

  The flag `--userns-host` is now required to enable the user namespace
  isolation for build containers. By default, this is disabled, which
  resolves the incompatibility with Docker plugins that don't support
  "userns as host" functionality.

  This reverts the default behavior from pack 0.35.0 where user namespace
  isolation was enabled by default, while still allowing users who want
  this feature to opt in.

---------

Signed-off-by: Juan Bustamante <bustamantejj@gmail.com>
2025-05-31 11:46:45 -05:00
Tibebe Demissie a4d8f12fd3
Add support for linux-arm64 in brew (#2388)
Signed-off-by: Tibebe Demissie <tib.demissie@gmail.com>
2025-05-29 18:29:27 -05:00
Rashad Sirajudeen e4460f0259
Support docker uri for lifecycle (#2112)
The lifecycle image can be specified as a Docker URI  in the `builder.toml` when creating a builder

---------

Signed-off-by: Rashad Sirajudeen <rashad.20@cse.mrt.ac.lk>
Signed-off-by: Rashad Sirajudeen <rashadsirajudeen@gmail.com>
Signed-off-by: Juan Bustamante <bustamantejj@gmail.com>
Co-authored-by: Juan Bustamante <bustamantejj@gmail.com>
2025-05-27 01:30:03 +00:00
Charles Moulliard 8f3b1d1e6b
Add UBI8 builder as suggested (#2383)
Signed-off-by: cmoulliard <cmoulliard@redhat.com>
2025-05-09 10:30:57 -05:00
dependabot[bot] bace397828
build(deps): bump the go-dependencies group with 6 updates (#2380)
Bumps the go-dependencies group with 6 updates:

| Package | From | To |
| --- | --- | --- |
| [golang.org/x/crypto](https://github.com/golang/crypto) | `0.37.0` | `0.38.0` |
| [golang.org/x/oauth2](https://github.com/golang/oauth2) | `0.29.0` | `0.30.0` |
| [golang.org/x/sync](https://github.com/golang/sync) | `0.13.0` | `0.14.0` |
| [golang.org/x/sys](https://github.com/golang/sys) | `0.32.0` | `0.33.0` |
| [golang.org/x/term](https://github.com/golang/term) | `0.31.0` | `0.32.0` |
| [golang.org/x/text](https://github.com/golang/text) | `0.24.0` | `0.25.0` |


Updates `golang.org/x/crypto` from 0.37.0 to 0.38.0
- [Commits](https://github.com/golang/crypto/compare/v0.37.0...v0.38.0)

Updates `golang.org/x/oauth2` from 0.29.0 to 0.30.0
- [Commits](https://github.com/golang/oauth2/compare/v0.29.0...v0.30.0)

Updates `golang.org/x/sync` from 0.13.0 to 0.14.0
- [Commits](https://github.com/golang/sync/compare/v0.13.0...v0.14.0)

Updates `golang.org/x/sys` from 0.32.0 to 0.33.0
- [Commits](https://github.com/golang/sys/compare/v0.32.0...v0.33.0)

Updates `golang.org/x/term` from 0.31.0 to 0.32.0
- [Commits](https://github.com/golang/term/compare/v0.31.0...v0.32.0)

Updates `golang.org/x/text` from 0.24.0 to 0.25.0
- [Release notes](https://github.com/golang/text/releases)
- [Commits](https://github.com/golang/text/compare/v0.24.0...v0.25.0)

---
updated-dependencies:
- dependency-name: golang.org/x/crypto
  dependency-version: 0.38.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: go-dependencies
- dependency-name: golang.org/x/oauth2
  dependency-version: 0.30.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: go-dependencies
- dependency-name: golang.org/x/sync
  dependency-version: 0.14.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: go-dependencies
- dependency-name: golang.org/x/sys
  dependency-version: 0.33.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: go-dependencies
- dependency-name: golang.org/x/term
  dependency-version: 0.32.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: go-dependencies
- dependency-name: golang.org/x/text
  dependency-version: 0.25.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: go-dependencies
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-05-06 18:28:54 -05:00
Aidan Delaney 858c5d6ea5
Release on the latest ubuntu (#2378)
* Release on the latest ubuntu (24.10 and 25.04 ) 

Signed-off-by: Aidan Delaney <aidan.delaney@gmail.com>
2025-04-30 12:36:49 +00:00
dependabot[bot] 7497491b13
build(deps): bump github.com/go-git/go-git/v5 (#2373)
Bumps the go-dependencies group with 1 update: [github.com/go-git/go-git/v5](https://github.com/go-git/go-git).


Updates `github.com/go-git/go-git/v5` from 5.15.0 to 5.16.0
- [Release notes](https://github.com/go-git/go-git/releases)
- [Commits](https://github.com/go-git/go-git/compare/v5.15.0...v5.16.0)

---
updated-dependencies:
- dependency-name: github.com/go-git/go-git/v5
  dependency-version: 5.16.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: go-dependencies
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-04-28 07:20:31 -05:00
Juan Bustamante 4f12b8398b
Updating default lifecycle version to 0.20.8 (#2356)
* Updating lifecycle to version 0.20.8
* Removing build workflow for WCOW (Windows Container on Windows)
Signed-off-by: Juan Bustamante <bustamantejj@gmail.com>
2025-04-22 18:41:52 -05:00
Juan Bustamante 4395547d0a
Merge pull request #2354 from yashisrani/upgrade-go1.23.3
Upgrade Go version to 1.24 across project files
2025-04-21 12:02:42 -05:00
Juan Bustamante 94bb792ee1
Merge branch 'main' into upgrade-go1.23.3
Signed-off-by: Juan Bustamante <bustamantejj@gmail.com>
2025-04-21 11:54:04 -05:00
Yash Israni 9f553983f9 Upgrade Go version to 1.24
Signed-off-by: Yash Israni <yashisrani52@gmail.com>
2025-04-21 09:17:05 +05:30
Juan Bustamante 0660f9e841
Merge pull request #2371 from buildpacks/dependabot/go_modules/go-dependencies-78fd736e21
build(deps): bump the go-dependencies group across 1 directory with 8 updates
2025-04-14 13:18:13 -05:00
dependabot[bot] 9f0825b9da
build(deps): bump the go-dependencies group across 1 directory with 8 updates
Bumps the go-dependencies group with 3 updates in the / directory: [github.com/go-git/go-git/v5](https://github.com/go-git/go-git), [github.com/onsi/gomega](https://github.com/onsi/gomega) and [golang.org/x/oauth2](https://github.com/golang/oauth2).


Updates `github.com/go-git/go-git/v5` from 5.14.0 to 5.15.0
- [Release notes](https://github.com/go-git/go-git/releases)
- [Commits](https://github.com/go-git/go-git/compare/v5.14.0...v5.15.0)

Updates `github.com/onsi/gomega` from 1.36.3 to 1.37.0
- [Release notes](https://github.com/onsi/gomega/releases)
- [Changelog](https://github.com/onsi/gomega/blob/master/CHANGELOG.md)
- [Commits](https://github.com/onsi/gomega/compare/v1.36.3...v1.37.0)

Updates `golang.org/x/crypto` from 0.36.0 to 0.37.0
- [Commits](https://github.com/golang/crypto/compare/v0.36.0...v0.37.0)

Updates `golang.org/x/oauth2` from 0.28.0 to 0.29.0
- [Commits](https://github.com/golang/oauth2/compare/v0.28.0...v0.29.0)

Updates `golang.org/x/sync` from 0.12.0 to 0.13.0
- [Commits](https://github.com/golang/sync/compare/v0.12.0...v0.13.0)

Updates `golang.org/x/sys` from 0.31.0 to 0.32.0
- [Commits](https://github.com/golang/sys/compare/v0.31.0...v0.32.0)

Updates `golang.org/x/term` from 0.30.0 to 0.31.0
- [Commits](https://github.com/golang/term/compare/v0.30.0...v0.31.0)

Updates `golang.org/x/text` from 0.23.0 to 0.24.0
- [Release notes](https://github.com/golang/text/releases)
- [Commits](https://github.com/golang/text/compare/v0.23.0...v0.24.0)

---
updated-dependencies:
- dependency-name: github.com/go-git/go-git/v5
  dependency-version: 5.15.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: go-dependencies
- dependency-name: github.com/onsi/gomega
  dependency-version: 1.37.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: go-dependencies
- dependency-name: golang.org/x/crypto
  dependency-version: 0.37.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: go-dependencies
- dependency-name: golang.org/x/oauth2
  dependency-version: 0.29.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: go-dependencies
- dependency-name: golang.org/x/sync
  dependency-version: 0.13.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: go-dependencies
- dependency-name: golang.org/x/sys
  dependency-version: 0.32.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: go-dependencies
- dependency-name: golang.org/x/term
  dependency-version: 0.31.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: go-dependencies
- dependency-name: golang.org/x/text
  dependency-version: 0.24.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: go-dependencies
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-04-14 14:14:33 +00:00
Juan Bustamante aad755c23e
Merge pull request #2364 from AidanDelaney/feat/bump-go-1.24
Bump to go 1.24
2025-04-14 09:10:41 -05:00
Juan Bustamante 9100de595e updating go.mod at tools to 1.24
Signed-off-by: Juan Bustamante <bustamantejj@gmail.com>
2025-04-11 17:16:40 -05:00
adelaney21 e5f75e1a25 Address linter errors
The updated linter has stricter checks for go 1.24.

Signed-off-by: adelaney21 <adelaney21@bloomberg.net>
2025-04-08 08:14:16 +01:00
adelaney21 ed72404cd9 Bump to go 1.24
Build and lint using go 1.24

Signed-off-by: adelaney21 <adelaney21@bloomberg.net>
2025-04-04 18:50:41 +01:00
Juan Bustamante a1edf2e9e3
Merge pull request #2357 from gogolok/support_freebsd_build_phase
Support FreeBSD build phase
2025-03-26 18:57:39 -05:00
Juan Bustamante f464a628e8
Merge branch 'main' into support_freebsd_build_phase 2025-03-26 18:35:15 -05:00
Juan Bustamante d4d426b9c4
Merge pull request #2361 from buildpacks/dependabot/github_actions/buildpacks/github-actions-5.8.10
build(deps): bump buildpacks/github-actions from 5.8.8 to 5.8.10
2025-03-25 22:01:09 -05:00
dependabot[bot] 4d05893193
build(deps): bump buildpacks/github-actions from 5.8.8 to 5.8.10
Bumps [buildpacks/github-actions](https://github.com/buildpacks/github-actions) from 5.8.8 to 5.8.10.
- [Release notes](https://github.com/buildpacks/github-actions/releases)
- [Commits](https://github.com/buildpacks/github-actions/compare/v5.8.8...v5.8.10)

---
updated-dependencies:
- dependency-name: buildpacks/github-actions
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-03-26 02:30:00 +00:00
Juan Bustamante e25934f8de
Merge pull request #2359 from buildpacks/dependabot/go_modules/github.com/golang-jwt/jwt/v4-4.5.2
build(deps): bump github.com/golang-jwt/jwt/v4 from 4.5.1 to 4.5.2
2025-03-25 21:28:11 -05:00
Juan Bustamante cfee479afd
Merge pull request #2360 from buildpacks/dependabot/go_modules/go-dependencies-32c6e6cc0e
build(deps): bump the go-dependencies group across 1 directory with 9 updates
2025-03-25 21:27:30 -05:00
dependabot[bot] bee19e4618
build(deps): bump the go-dependencies group across 1 directory with 9 updates
Bumps the go-dependencies group with 4 updates in the / directory: [github.com/onsi/gomega](https://github.com/onsi/gomega), [github.com/opencontainers/image-spec](https://github.com/opencontainers/image-spec), [golang.org/x/mod](https://github.com/golang/mod) and [golang.org/x/oauth2](https://github.com/golang/oauth2).


Updates `github.com/onsi/gomega` from 1.36.2 to 1.36.3
- [Release notes](https://github.com/onsi/gomega/releases)
- [Changelog](https://github.com/onsi/gomega/blob/master/CHANGELOG.md)
- [Commits](https://github.com/onsi/gomega/compare/v1.36.2...v1.36.3)

Updates `github.com/opencontainers/image-spec` from 1.1.0 to 1.1.1
- [Release notes](https://github.com/opencontainers/image-spec/releases)
- [Changelog](https://github.com/opencontainers/image-spec/blob/main/RELEASES.md)
- [Commits](https://github.com/opencontainers/image-spec/compare/v1.1.0...v1.1.1)

Updates `golang.org/x/crypto` from 0.35.0 to 0.36.0
- [Commits](https://github.com/golang/crypto/compare/v0.35.0...v0.36.0)

Updates `golang.org/x/mod` from 0.23.0 to 0.24.0
- [Commits](https://github.com/golang/mod/compare/v0.23.0...v0.24.0)

Updates `golang.org/x/oauth2` from 0.27.0 to 0.28.0
- [Commits](https://github.com/golang/oauth2/compare/v0.27.0...v0.28.0)

Updates `golang.org/x/sync` from 0.11.0 to 0.12.0
- [Commits](https://github.com/golang/sync/compare/v0.11.0...v0.12.0)

Updates `golang.org/x/sys` from 0.30.0 to 0.31.0
- [Commits](https://github.com/golang/sys/compare/v0.30.0...v0.31.0)

Updates `golang.org/x/term` from 0.29.0 to 0.30.0
- [Commits](https://github.com/golang/term/compare/v0.29.0...v0.30.0)

Updates `golang.org/x/text` from 0.22.0 to 0.23.0
- [Release notes](https://github.com/golang/text/releases)
- [Commits](https://github.com/golang/text/compare/v0.22.0...v0.23.0)

---
updated-dependencies:
- dependency-name: github.com/onsi/gomega
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: go-dependencies
- dependency-name: github.com/opencontainers/image-spec
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: go-dependencies
- dependency-name: golang.org/x/crypto
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: go-dependencies
- dependency-name: golang.org/x/mod
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: go-dependencies
- dependency-name: golang.org/x/oauth2
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: go-dependencies
- dependency-name: golang.org/x/sync
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: go-dependencies
- dependency-name: golang.org/x/sys
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: go-dependencies
- dependency-name: golang.org/x/term
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: go-dependencies
- dependency-name: golang.org/x/text
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: go-dependencies
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-03-25 00:27:59 +00:00
dependabot[bot] 23b0af6edb
build(deps): bump github.com/golang-jwt/jwt/v4 from 4.5.1 to 4.5.2
Bumps [github.com/golang-jwt/jwt/v4](https://github.com/golang-jwt/jwt) from 4.5.1 to 4.5.2.
- [Release notes](https://github.com/golang-jwt/jwt/releases)
- [Changelog](https://github.com/golang-jwt/jwt/blob/main/VERSION_HISTORY.md)
- [Commits](https://github.com/golang-jwt/jwt/compare/v4.5.1...v4.5.2)

---
updated-dependencies:
- dependency-name: github.com/golang-jwt/jwt/v4
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-03-21 22:37:35 +00:00
Juan Bustamante 8aca53e255
Merge pull request #2358 from buildpacks/help-text
Clarify help text for append-image-name-suffix
2025-03-21 15:27:44 -05:00
Natalie Arellano 1e0a1d99f4 Clarify help text for append-image-name-suffix
Signed-off-by: Natalie Arellano <narellano@vmware.com>
2025-03-19 12:10:59 -04:00
Robert Gogolok 19ca0f6297 Support FreeBSD build phase
Signed-off-by: Robert Gogolok <robert.gogolok@stackit.cloud>
2025-03-15 12:00:15 +01:00
Juan Bustamante bf1bd85682
Merge pull request #2353 from buildpacks/dependabot/go_modules/golang.org/x/net-0.36.0
build(deps): bump golang.org/x/net from 0.35.0 to 0.36.0
2025-03-14 06:58:18 -05:00
Yash Israni 4b78313297 Upgrade Go version to 1.23.3 across project files
Signed-off-by: Yash Israni <yashisrani52@gmail.com>
2025-03-14 13:11:33 +05:30
dependabot[bot] fb7bb1a32c
build(deps): bump golang.org/x/net from 0.35.0 to 0.36.0
Bumps [golang.org/x/net](https://github.com/golang/net) from 0.35.0 to 0.36.0.
- [Commits](https://github.com/golang/net/compare/v0.35.0...v0.36.0)

---
updated-dependencies:
- dependency-name: golang.org/x/net
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-03-13 02:11:55 +00:00
Juan Bustamante c13cab3ca4
Merge pull request #2343 from buildpacks/dependabot/go_modules/go-dependencies-aa86f07501
build(deps): bump the go-dependencies group across 1 directory with 4 updates
2025-03-01 13:06:37 -05:00
dependabot[bot] 74ff1d44ca
build(deps): bump the go-dependencies group across 1 directory with 4 updates
Bumps the go-dependencies group with 2 updates in the / directory: [github.com/go-git/go-git/v5](https://github.com/go-git/go-git) and [golang.org/x/oauth2](https://github.com/golang/oauth2).


Updates `github.com/go-git/go-git/v5` from 5.13.2 to 5.14.0
- [Release notes](https://github.com/go-git/go-git/releases)
- [Commits](https://github.com/go-git/go-git/compare/v5.13.2...v5.14.0)

Updates `github.com/google/go-cmp` from 0.6.0 to 0.7.0
- [Release notes](https://github.com/google/go-cmp/releases)
- [Commits](https://github.com/google/go-cmp/compare/v0.6.0...v0.7.0)

Updates `golang.org/x/crypto` from 0.33.0 to 0.35.0
- [Commits](https://github.com/golang/crypto/compare/v0.33.0...v0.35.0)

Updates `golang.org/x/oauth2` from 0.26.0 to 0.27.0
- [Commits](https://github.com/golang/oauth2/compare/v0.26.0...v0.27.0)

---
updated-dependencies:
- dependency-name: github.com/go-git/go-git/v5
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: go-dependencies
- dependency-name: github.com/google/go-cmp
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: go-dependencies
- dependency-name: golang.org/x/crypto
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: go-dependencies
- dependency-name: golang.org/x/oauth2
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: go-dependencies
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-03-01 02:49:53 +00:00
Juan Bustamante 771ba384c1
Merge pull request #2339 from gogolok/go_build_unix
Use `unix` build constraint
2025-02-28 19:20:48 -05:00
Juan Bustamante f8b93d39aa
Merge branch 'main' into go_build_unix 2025-02-28 18:57:38 -05:00
Juan Bustamante 51308d4b2a
Merge pull request #2320 from pacostas/extension-multi-arch
Implementation of multi-arch support for extension packages
2025-02-28 18:56:46 -05:00
Costas Papastathis 912e3a8b93 doc: adjusting documentation to include extension
Signed-off-by: Costas Papastathis <papastathiscr@gmail.com>
2025-02-25 13:00:27 +01:00
Costas Papastathis eaeaaf5f8a fix: using the KindBuildpack and KindExtension variable instead of hardcoded values
Signed-off-by: Costas Papastathis <papastathiscr@gmail.com>
2025-02-25 13:00:27 +01:00
Juan Bustamante 6041a952d0
Merge branch 'main' into extension-multi-arch 2025-02-24 07:36:58 -05:00
Robert Gogolok df05dd44b9 Use unix build constraint
Signed-off-by: Robert Gogolok <robert.gogolok@stackit.cloud>
2025-02-21 20:13:51 +01:00
Juan Bustamante 4cbc1c8d26
Merge pull request #2335 from buildpacks/dependabot/go_modules/go-dependencies-37a50384ab
build(deps): bump github.com/spf13/cobra from 1.8.1 to 1.9.1 in the go-dependencies group
2025-02-21 08:55:54 -05:00
dependabot[bot] 4415c41dfb
build(deps): bump github.com/spf13/cobra in the go-dependencies group
Bumps the go-dependencies group with 1 update: [github.com/spf13/cobra](https://github.com/spf13/cobra).


Updates `github.com/spf13/cobra` from 1.8.1 to 1.9.1
- [Release notes](https://github.com/spf13/cobra/releases)
- [Commits](https://github.com/spf13/cobra/compare/v1.8.1...v1.9.1)

---
updated-dependencies:
- dependency-name: github.com/spf13/cobra
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: go-dependencies
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-02-21 13:32:29 +00:00
Juan Bustamante 85d4a7c5fe
Merge pull request #2337 from gogolok/remove_obsolete_build_lines
Remove obsolete // +build lines
2025-02-21 07:32:43 -05:00
Robert Gogolok 6658bb06b3 Remove obsolete // +build lines
https://tip.golang.org/doc/go1.18#go-build-lines

Signed-off-by: Robert Gogolok <robert.gogolok@stackit.cloud>
2025-02-21 00:11:25 +01:00
Juan Bustamante de21ac70b7
Merge branch 'main' into extension-multi-arch 2025-02-19 07:40:21 -05:00
Juan Bustamante 2016b0e0a1
Merge pull request #2333 from buildpacks/dependabot/go_modules/go-dependencies-57762bd462
build(deps): bump the go-dependencies group across 1 directory with 10 updates
2025-02-12 06:58:56 -05:00
dependabot[bot] 91656ba975
build(deps): bump the go-dependencies group across 1 directory with 10 updates
Bumps the go-dependencies group with 6 updates in the / directory:

| Package | From | To |
| --- | --- | --- |
| [github.com/docker/cli](https://github.com/docker/cli) | `27.5.0+incompatible` | `27.5.1+incompatible` |
| [github.com/docker/docker](https://github.com/docker/docker) | `27.5.0+incompatible` | `27.5.1+incompatible` |
| [github.com/go-git/go-git/v5](https://github.com/go-git/go-git) | `5.13.1` | `5.13.2` |
| [golang.org/x/crypto](https://github.com/golang/crypto) | `0.32.0` | `0.33.0` |
| [golang.org/x/mod](https://github.com/golang/mod) | `0.22.0` | `0.23.0` |
| [golang.org/x/oauth2](https://github.com/golang/oauth2) | `0.25.0` | `0.26.0` |



Updates `github.com/docker/cli` from 27.5.0+incompatible to 27.5.1+incompatible
- [Commits](https://github.com/docker/cli/compare/v27.5.0...v27.5.1)

Updates `github.com/docker/docker` from 27.5.0+incompatible to 27.5.1+incompatible
- [Release notes](https://github.com/docker/docker/releases)
- [Commits](https://github.com/docker/docker/compare/v27.5.0...v27.5.1)

Updates `github.com/go-git/go-git/v5` from 5.13.1 to 5.13.2
- [Release notes](https://github.com/go-git/go-git/releases)
- [Commits](https://github.com/go-git/go-git/compare/v5.13.1...v5.13.2)

Updates `golang.org/x/crypto` from 0.32.0 to 0.33.0
- [Commits](https://github.com/golang/crypto/compare/v0.32.0...v0.33.0)

Updates `golang.org/x/mod` from 0.22.0 to 0.23.0
- [Commits](https://github.com/golang/mod/compare/v0.22.0...v0.23.0)

Updates `golang.org/x/oauth2` from 0.25.0 to 0.26.0
- [Commits](https://github.com/golang/oauth2/compare/v0.25.0...v0.26.0)

Updates `golang.org/x/sync` from 0.10.0 to 0.11.0
- [Commits](https://github.com/golang/sync/compare/v0.10.0...v0.11.0)

Updates `golang.org/x/sys` from 0.29.0 to 0.30.0
- [Commits](https://github.com/golang/sys/compare/v0.29.0...v0.30.0)

Updates `golang.org/x/term` from 0.28.0 to 0.29.0
- [Commits](https://github.com/golang/term/compare/v0.28.0...v0.29.0)

Updates `golang.org/x/text` from 0.21.0 to 0.22.0
- [Release notes](https://github.com/golang/text/releases)
- [Commits](https://github.com/golang/text/compare/v0.21.0...v0.22.0)

---
updated-dependencies:
- dependency-name: github.com/docker/cli
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: go-dependencies
- dependency-name: github.com/docker/docker
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: go-dependencies
- dependency-name: github.com/go-git/go-git/v5
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: go-dependencies
- dependency-name: golang.org/x/crypto
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: go-dependencies
- dependency-name: golang.org/x/mod
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: go-dependencies
- dependency-name: golang.org/x/oauth2
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: go-dependencies
- dependency-name: golang.org/x/sync
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: go-dependencies
- dependency-name: golang.org/x/sys
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: go-dependencies
- dependency-name: golang.org/x/term
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: go-dependencies
- dependency-name: golang.org/x/text
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: go-dependencies
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-02-10 22:55:53 +00:00
Juan Bustamante 3ce022a818
Merge pull request #2295 from joeybrown/stack-warning
Removing validation of deprecated io.buildpacks.stack.id
2025-02-06 11:29:24 -05:00
Joey Brown 86658040cc remove unnecessary variable in unit test
Signed-off-by: Joey Brown <brown.joseph@salesforce.com>
2025-02-06 09:39:16 -06:00
Joey Brown bcc0c3b625 remove unnecessary version assignment in unit test
Signed-off-by: Joey Brown <brown.joseph@salesforce.com>
2025-02-06 09:35:02 -06:00
Joey Brown 7591928511 remove negation that was causing tests to fail
Signed-off-by: Joey Brown <brown.joseph@salesforce.com>
2025-02-05 16:07:20 -06:00
Joey Brown fee6dcb387 fix unit test
Signed-off-by: Joey Brown <brown.joseph@salesforce.com>
2025-01-31 17:00:21 -06:00
Joey Brown 7bf3e01154 add version check
Signed-off-by: Joey Brown <brown.joseph@salesforce.com>
2025-01-31 16:32:54 -06:00
Joey Brown e8ba441c08 move version check to `before` block
Signed-off-by: Joey Brown <brown.joseph@salesforce.com>
2025-01-31 11:37:58 -06:00
Joey Brown 42bcc1dd9d fix acceptance tests
Signed-off-by: Joey Brown <brown.joseph@salesforce.com>
2025-01-31 11:37:58 -06:00
Joey Brown aa29846754 pick up where pglushko left off
Signed-off-by: Joey Brown <brown.joseph@salesforce.com>
2025-01-31 11:37:58 -06:00
Juan Bustamante 5cca9c51a6
Merge pull request #2321 from buildpacks/dependabot/go_modules/go-dependencies-34c374f4f8
build(deps): bump the go-dependencies group across 1 directory with 4 updates
2025-01-21 08:27:06 -05:00
Juan Bustamante adf04bc1ee
Merge pull request #2322 from buildpacks/dependabot/github_actions/buildpacks/github-actions-5.8.8
build(deps): bump buildpacks/github-actions from 5.8.5 to 5.8.8
2025-01-21 07:35:32 -05:00
dependabot[bot] d1c7a79749
build(deps): bump buildpacks/github-actions from 5.8.5 to 5.8.8
Bumps [buildpacks/github-actions](https://github.com/buildpacks/github-actions) from 5.8.5 to 5.8.8.
- [Release notes](https://github.com/buildpacks/github-actions/releases)
- [Commits](https://github.com/buildpacks/github-actions/compare/v5.8.5...v5.8.8)

---
updated-dependencies:
- dependency-name: buildpacks/github-actions
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-01-20 22:28:55 +00:00
Juan Bustamante c7f5b1cc88
Merge pull request #2314 from buildpacks/jjbustamante/fix-pack-2299
Add new flag `--append-image-name-suffix` to append suffix to the image name when pushing a multi-arch buildpack or builder
2025-01-17 09:15:15 -05:00
Juan Bustamante 160b820017 running go mod tidy
Signed-off-by: Juan Bustamante <bustamantejj@gmail.com>
2025-01-16 18:03:23 -05:00
Costas Papastathis 3137310cb1 fix:linting and typos
Signed-off-by: Costas Papastathis <papastathiscr@gmail.com>
2025-01-16 16:39:02 +01:00
Costas Papastathis dbac3d3772 fix: intentation
Signed-off-by: Costas Papastathis <papastathiscr@gmail.com>
2025-01-16 16:39:02 +01:00
Costas Papastathis 8ca5ea9321 feat: Adding targets and path flags when packaging an extension
Signed-off-by: Costas Papastathis <papastathiscr@gmail.com>
2025-01-16 16:39:02 +01:00
Costas Papastathis 9caef9000e feat: adding targets on the extension descriptor
Signed-off-by: Costas Papastathis <papastathiscr@gmail.com>
2025-01-16 16:39:02 +01:00
Costas Papastathis 374b28158d feat: Adding functionality on CopyConfigFiles function to copy an extension .toml file
Signed-off-by: Costas Papastathis <papastathiscr@gmail.com>
2025-01-16 16:39:02 +01:00
Costas Papastathis 1efd3a3ea7 fix: typo on targets description
Signed-off-by: Costas Papastathis <papastathiscr@gmail.com>
2025-01-16 16:39:02 +01:00
dependabot[bot] 7aca84f1f6
build(deps): bump the go-dependencies group across 1 directory with 4 updates
Bumps the go-dependencies group with 4 updates in the / directory: [github.com/docker/cli](https://github.com/docker/cli), [github.com/docker/docker](https://github.com/docker/docker), [github.com/gdamore/tcell/v2](https://github.com/gdamore/tcell) and [github.com/google/go-containerregistry](https://github.com/google/go-containerregistry).


Updates `github.com/docker/cli` from 27.4.1+incompatible to 27.5.0+incompatible
- [Commits](https://github.com/docker/cli/compare/v27.4.1...v27.5.0)

Updates `github.com/docker/docker` from 27.4.1+incompatible to 27.5.0+incompatible
- [Release notes](https://github.com/docker/docker/releases)
- [Commits](https://github.com/docker/docker/compare/v27.4.1...v27.5.0)

Updates `github.com/gdamore/tcell/v2` from 2.8.0 to 2.8.1
- [Release notes](https://github.com/gdamore/tcell/releases)
- [Changelog](https://github.com/gdamore/tcell/blob/main/CHANGESv2.md)
- [Commits](https://github.com/gdamore/tcell/compare/v2.8.0...v2.8.1)

Updates `github.com/google/go-containerregistry` from 0.20.2 to 0.20.3
- [Release notes](https://github.com/google/go-containerregistry/releases)
- [Changelog](https://github.com/google/go-containerregistry/blob/main/.goreleaser.yml)
- [Commits](https://github.com/google/go-containerregistry/compare/v0.20.2...v0.20.3)

---
updated-dependencies:
- dependency-name: github.com/docker/cli
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: go-dependencies
- dependency-name: github.com/docker/docker
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: go-dependencies
- dependency-name: github.com/gdamore/tcell/v2
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: go-dependencies
- dependency-name: github.com/google/go-containerregistry
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: go-dependencies
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-01-16 13:22:56 +00:00
Juan Bustamante 0c432c956f implementing logic for adding tag suffix
Signed-off-by: Juan Bustamante <bustamantejj@gmail.com>
2025-01-15 21:02:13 -05:00
Juan Bustamante c49ea0a8e1 fixing formatting issue
Signed-off-by: Juan Bustamante <bustamantejj@gmail.com>
2025-01-14 20:37:46 -05:00
Juan Bustamante b99975225f WIP - adding a new flag --append-image-name-suffix to append [os]-[arch]-[variant] to the image name when pushing a multi-arch buildpack or builder
Signed-off-by: Juan Bustamante <bustamantejj@gmail.com>
2025-01-14 20:37:46 -05:00
Juan Bustamante 0adeb451bd
Merge pull request #2318 from buildpacks/jjbustamante/fix-pack-2315
Update hardcoded error message to pull images without architecture
2025-01-14 20:34:23 -05:00
Juan Bustamante a2c236549f removing additional string matching
Signed-off-by: Juan Bustamante <bustamantejj@gmail.com>
2025-01-13 21:52:36 -05:00
Juan Bustamante 105c2243df Updating hardcoded error message handling when an image was not found in a registry by platform
Signed-off-by: Juan Bustamante <bustamantejj@gmail.com>
2025-01-13 21:37:33 -05:00
Juan Bustamante 2f1af856af
Merge pull request #2313 from buildpacks/dependabot/go_modules/go-dependencies-f423d7769f
build(deps): bump the go-dependencies group across 1 directory with 7 updates
2025-01-10 15:22:52 -05:00
dependabot[bot] b79c5ea9d5
build(deps): bump the go-dependencies group across 1 directory with 7 updates
Bumps the go-dependencies group with 5 updates in the / directory:

| Package | From | To |
| --- | --- | --- |
| [github.com/gdamore/tcell/v2](https://github.com/gdamore/tcell) | `2.7.4` | `2.8.0` |
| [github.com/go-git/go-git/v5](https://github.com/go-git/go-git) | `5.13.0` | `5.13.1` |
| [github.com/onsi/gomega](https://github.com/onsi/gomega) | `1.36.1` | `1.36.2` |
| [golang.org/x/crypto](https://github.com/golang/crypto) | `0.31.0` | `0.32.0` |
| [golang.org/x/oauth2](https://github.com/golang/oauth2) | `0.24.0` | `0.25.0` |



Updates `github.com/gdamore/tcell/v2` from 2.7.4 to 2.8.0
- [Release notes](https://github.com/gdamore/tcell/releases)
- [Changelog](https://github.com/gdamore/tcell/blob/main/CHANGESv2.md)
- [Commits](https://github.com/gdamore/tcell/compare/v2.7.4...v2.8.0)

Updates `github.com/go-git/go-git/v5` from 5.13.0 to 5.13.1
- [Release notes](https://github.com/go-git/go-git/releases)
- [Commits](https://github.com/go-git/go-git/compare/v5.13.0...v5.13.1)

Updates `github.com/onsi/gomega` from 1.36.1 to 1.36.2
- [Release notes](https://github.com/onsi/gomega/releases)
- [Changelog](https://github.com/onsi/gomega/blob/master/CHANGELOG.md)
- [Commits](https://github.com/onsi/gomega/compare/v1.36.1...v1.36.2)

Updates `golang.org/x/crypto` from 0.31.0 to 0.32.0
- [Commits](https://github.com/golang/crypto/compare/v0.31.0...v0.32.0)

Updates `golang.org/x/oauth2` from 0.24.0 to 0.25.0
- [Commits](https://github.com/golang/oauth2/compare/v0.24.0...v0.25.0)

Updates `golang.org/x/sys` from 0.28.0 to 0.29.0
- [Commits](https://github.com/golang/sys/compare/v0.28.0...v0.29.0)

Updates `golang.org/x/term` from 0.27.0 to 0.28.0
- [Commits](https://github.com/golang/term/compare/v0.27.0...v0.28.0)

---
updated-dependencies:
- dependency-name: github.com/gdamore/tcell/v2
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: go-dependencies
- dependency-name: github.com/go-git/go-git/v5
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: go-dependencies
- dependency-name: github.com/onsi/gomega
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: go-dependencies
- dependency-name: golang.org/x/crypto
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: go-dependencies
- dependency-name: golang.org/x/oauth2
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: go-dependencies
- dependency-name: golang.org/x/sys
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: go-dependencies
- dependency-name: golang.org/x/term
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: go-dependencies
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-01-10 17:28:06 +00:00
Juan Bustamante 33e32aa118
Merge pull request #2312 from buildpacks/dependabot/go_modules/github.com/go-git/go-git/v5-5.13.0
build(deps): bump github.com/go-git/go-git/v5 from 5.12.0 to 5.13.0
2025-01-10 12:26:23 -05:00
Juan Bustamante 5933b139de
Merge branch 'main' into dependabot/go_modules/github.com/go-git/go-git/v5-5.13.0 2025-01-10 12:07:10 -05:00
Juan Bustamante 7dca8954c1 with the new go-git version, this issue was fixed https://github.com/go-git/go-git/pull/1050
Signed-off-by: Juan Bustamante <bustamantejj@gmail.com>
2025-01-10 10:41:23 -05:00
Juan Bustamante b263fb5694
Merge pull request #2303 from buildpacks/dependabot/github_actions/anchore/scan-action-6
build(deps): bump anchore/scan-action from 5 to 6
2025-01-10 09:14:34 -05:00
dependabot[bot] 887debff90
build(deps): bump github.com/go-git/go-git/v5 from 5.12.0 to 5.13.0
Bumps [github.com/go-git/go-git/v5](https://github.com/go-git/go-git) from 5.12.0 to 5.13.0.
- [Release notes](https://github.com/go-git/go-git/releases)
- [Commits](https://github.com/go-git/go-git/compare/v5.12.0...v5.13.0)

---
updated-dependencies:
- dependency-name: github.com/go-git/go-git/v5
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-01-10 13:47:41 +00:00
dependabot[bot] 4f1d65cbbc
build(deps): bump anchore/scan-action from 5 to 6
Bumps [anchore/scan-action](https://github.com/anchore/scan-action) from 5 to 6.
- [Release notes](https://github.com/anchore/scan-action/releases)
- [Changelog](https://github.com/anchore/scan-action/blob/main/CHANGELOG.md)
- [Commits](https://github.com/anchore/scan-action/compare/v5...v6)

---
updated-dependencies:
- dependency-name: anchore/scan-action
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-01-10 13:47:18 +00:00
Juan Bustamante ca31efc25e
Merge pull request #2310 from buildpacks/dependabot/github_actions/buildpacks/github-actions-5.8.5
build(deps): bump buildpacks/github-actions from 5.8.4 to 5.8.5
2025-01-10 08:43:26 -05:00
dependabot[bot] 7ada97f7cc
build(deps): bump buildpacks/github-actions from 5.8.4 to 5.8.5
Bumps [buildpacks/github-actions](https://github.com/buildpacks/github-actions) from 5.8.4 to 5.8.5.
- [Release notes](https://github.com/buildpacks/github-actions/releases)
- [Commits](https://github.com/buildpacks/github-actions/compare/v5.8.4...v5.8.5)

---
updated-dependencies:
- dependency-name: buildpacks/github-actions
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-01-06 22:19:45 +00:00
Juan Bustamante 78e6a7fa01
Merge pull request #2307 from buildpacks/deps/issue-2304
(deps): Update x/net library to v0.33.0
2024-12-26 08:18:26 -05:00
Juan Bustamante b4719aa183 Updating x/net library to v0.33.0
Signed-off-by: Juan Bustamante <bustamantejj@gmail.com>
2024-12-26 07:43:33 -05:00
Juan Bustamante 87ef7fb319
Merge pull request #2306 from buildpacks/dependabot/github_actions/buildpacks/github-actions-5.8.4
build(deps): bump buildpacks/github-actions from 5.8.3 to 5.8.4
2024-12-24 11:03:48 -05:00
dependabot[bot] f4c09fa465
build(deps): bump buildpacks/github-actions from 5.8.3 to 5.8.4
Bumps [buildpacks/github-actions](https://github.com/buildpacks/github-actions) from 5.8.3 to 5.8.4.
- [Release notes](https://github.com/buildpacks/github-actions/releases)
- [Commits](https://github.com/buildpacks/github-actions/compare/v5.8.3...v5.8.4)

---
updated-dependencies:
- dependency-name: buildpacks/github-actions
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-12-24 12:47:18 +00:00
Juan Bustamante 41e2b30fd1
Merge pull request #2305 from buildpacks/dependabot/go_modules/go-dependencies-0eae3ea95f
build(deps): bump the go-dependencies group with 2 updates
2024-12-24 07:45:46 -05:00
dependabot[bot] d76dc1b8dc
build(deps): bump the go-dependencies group with 2 updates
Bumps the go-dependencies group with 2 updates: [github.com/docker/cli](https://github.com/docker/cli) and [github.com/docker/docker](https://github.com/docker/docker).


Updates `github.com/docker/cli` from 27.4.0+incompatible to 27.4.1+incompatible
- [Commits](https://github.com/docker/cli/compare/v27.4.0...v27.4.1)

Updates `github.com/docker/docker` from 27.4.0+incompatible to 27.4.1+incompatible
- [Release notes](https://github.com/docker/docker/releases)
- [Commits](https://github.com/docker/docker/compare/v27.4.0...v27.4.1)

---
updated-dependencies:
- dependency-name: github.com/docker/cli
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: go-dependencies
- dependency-name: github.com/docker/docker
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: go-dependencies
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-12-23 22:26:11 +00:00
Juan Bustamante 852fcaa56a
Merge pull request #2302 from buildpacks/dependabot/go_modules/go-dependencies-064c2626f3
build(deps): bump the go-dependencies group with 2 updates
2024-12-17 09:13:24 -05:00
dependabot[bot] 8d60dc1892
build(deps): bump the go-dependencies group with 2 updates
Bumps the go-dependencies group with 2 updates: [github.com/onsi/gomega](https://github.com/onsi/gomega) and [golang.org/x/crypto](https://github.com/golang/crypto).


Updates `github.com/onsi/gomega` from 1.36.0 to 1.36.1
- [Release notes](https://github.com/onsi/gomega/releases)
- [Changelog](https://github.com/onsi/gomega/blob/master/CHANGELOG.md)
- [Commits](https://github.com/onsi/gomega/compare/v1.36.0...v1.36.1)

Updates `golang.org/x/crypto` from 0.30.0 to 0.31.0
- [Commits](https://github.com/golang/crypto/compare/v0.30.0...v0.31.0)

---
updated-dependencies:
- dependency-name: github.com/onsi/gomega
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: go-dependencies
- dependency-name: golang.org/x/crypto
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: go-dependencies
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-12-16 22:04:24 +00:00
Juan Bustamante c5fadcd444
Merge pull request #2298 from buildpacks/dependabot/go_modules/go-dependencies-91cddda52f
build(deps): bump the go-dependencies group with 7 updates
2024-12-10 07:05:08 -05:00
dependabot[bot] 2a6922423d
build(deps): bump the go-dependencies group with 7 updates
Bumps the go-dependencies group with 7 updates:

| Package | From | To |
| --- | --- | --- |
| [github.com/docker/cli](https://github.com/docker/cli) | `27.3.1+incompatible` | `27.4.0+incompatible` |
| [github.com/docker/docker](https://github.com/docker/docker) | `27.3.1+incompatible` | `27.4.0+incompatible` |
| [golang.org/x/crypto](https://github.com/golang/crypto) | `0.29.0` | `0.30.0` |
| [golang.org/x/sync](https://github.com/golang/sync) | `0.9.0` | `0.10.0` |
| [golang.org/x/sys](https://github.com/golang/sys) | `0.27.0` | `0.28.0` |
| [golang.org/x/term](https://github.com/golang/term) | `0.26.0` | `0.27.0` |
| [golang.org/x/text](https://github.com/golang/text) | `0.20.0` | `0.21.0` |


Updates `github.com/docker/cli` from 27.3.1+incompatible to 27.4.0+incompatible
- [Commits](https://github.com/docker/cli/compare/v27.3.1...v27.4.0)

Updates `github.com/docker/docker` from 27.3.1+incompatible to 27.4.0+incompatible
- [Release notes](https://github.com/docker/docker/releases)
- [Commits](https://github.com/docker/docker/compare/v27.3.1...v27.4.0)

Updates `golang.org/x/crypto` from 0.29.0 to 0.30.0
- [Commits](https://github.com/golang/crypto/compare/v0.29.0...v0.30.0)

Updates `golang.org/x/sync` from 0.9.0 to 0.10.0
- [Commits](https://github.com/golang/sync/compare/v0.9.0...v0.10.0)

Updates `golang.org/x/sys` from 0.27.0 to 0.28.0
- [Commits](https://github.com/golang/sys/compare/v0.27.0...v0.28.0)

Updates `golang.org/x/term` from 0.26.0 to 0.27.0
- [Commits](https://github.com/golang/term/compare/v0.26.0...v0.27.0)

Updates `golang.org/x/text` from 0.20.0 to 0.21.0
- [Release notes](https://github.com/golang/text/releases)
- [Commits](https://github.com/golang/text/compare/v0.20.0...v0.21.0)

---
updated-dependencies:
- dependency-name: github.com/docker/cli
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: go-dependencies
- dependency-name: github.com/docker/docker
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: go-dependencies
- dependency-name: golang.org/x/crypto
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: go-dependencies
- dependency-name: golang.org/x/sync
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: go-dependencies
- dependency-name: golang.org/x/sys
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: go-dependencies
- dependency-name: golang.org/x/term
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: go-dependencies
- dependency-name: golang.org/x/text
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: go-dependencies
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-12-09 22:26:18 +00:00
Juan Bustamante 163db98749
Merge pull request #2296 from gogolok/buildpack_new_help_wording
Correct wording for `buildpack new` targets flag
2024-12-05 07:26:02 -05:00
Robert Gogolok b689e6acb8 Correct wording for `buildpack new` targets flag
Signed-off-by: Robert Gogolok <robert.gogolok@stackit.cloud>
Co-authored-by: Aidan Delaney <aidan.delaney@gmail.com>
2024-12-04 21:26:42 +01:00
Juan Bustamante a476b975d2
Merge pull request #2291 from buildpacks/dependabot/go_modules/go-dependencies-34ba330fac
build(deps): bump the go-dependencies group across 1 directory with 4 updates
2024-12-03 21:15:23 -05:00
dependabot[bot] 65375598e2
build(deps): bump the go-dependencies group across 1 directory with 4 updates
Bumps the go-dependencies group with 2 updates in the / directory: [github.com/onsi/gomega](https://github.com/onsi/gomega) and [golang.org/x/crypto](https://github.com/golang/crypto).


Updates `github.com/onsi/gomega` from 1.35.1 to 1.36.0
- [Release notes](https://github.com/onsi/gomega/releases)
- [Changelog](https://github.com/onsi/gomega/blob/master/CHANGELOG.md)
- [Commits](https://github.com/onsi/gomega/compare/v1.35.1...v1.36.0)

Updates `golang.org/x/crypto` from 0.28.0 to 0.29.0
- [Commits](https://github.com/golang/crypto/compare/v0.28.0...v0.29.0)

Updates `golang.org/x/term` from 0.25.0 to 0.26.0
- [Commits](https://github.com/golang/term/compare/v0.25.0...v0.26.0)

Updates `golang.org/x/text` from 0.19.0 to 0.20.0
- [Release notes](https://github.com/golang/text/releases)
- [Commits](https://github.com/golang/text/compare/v0.19.0...v0.20.0)

---
updated-dependencies:
- dependency-name: github.com/onsi/gomega
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: go-dependencies
- dependency-name: golang.org/x/crypto
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: go-dependencies
- dependency-name: golang.org/x/term
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: go-dependencies
- dependency-name: golang.org/x/text
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: go-dependencies
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-12-04 01:49:32 +00:00
Juan Bustamante 6baf6e2c29
Merge pull request #2297 from buildpacks/dependabot/github_actions/buildpacks/github-actions-5.8.3
build(deps): bump buildpacks/github-actions from 5.8.1 to 5.8.3
2024-12-03 20:47:35 -05:00
Juan Bustamante 9a987fe642
Merge pull request #2294 from joeybrown/tests-arm-64
make sure acceptance tests pass on arm64
2024-12-03 20:22:04 -05:00
dependabot[bot] 14aa2f755d
build(deps): bump buildpacks/github-actions from 5.8.1 to 5.8.3
Bumps [buildpacks/github-actions](https://github.com/buildpacks/github-actions) from 5.8.1 to 5.8.3.
- [Release notes](https://github.com/buildpacks/github-actions/releases)
- [Commits](https://github.com/buildpacks/github-actions/compare/v5.8.1...v5.8.3)

---
updated-dependencies:
- dependency-name: buildpacks/github-actions
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-12-02 23:29:55 +00:00
Joey Brown 62b52ef156 acceptance tests on arm64
Signed-off-by: Joey Brown <brown.joseph@salesforce.com>
2024-12-02 10:56:17 -06:00
Natalie Arellano 92bc87b297
Merge pull request #2284 from buildpacks/log/containerd
Emit a performance warning if containerd is enabled and we're exporting to the daemon
2024-11-14 13:40:02 -05:00
Natalie Arellano 1f7e0c8bcb Emit a performance warning if containerd is enabled and we're exporting to the daemon
Signed-off-by: Natalie Arellano <narellano@vmware.com>
2024-11-14 11:07:26 -05:00
Juan Bustamante be2c8be464
Merge pull request #2281 from buildpacks/dependabot/go_modules/go-dependencies-6a50f88c84
build(deps): bump the go-dependencies group across 1 directory with 9 updates
2024-11-13 15:47:14 -05:00
Juan Bustamante ddc3fd345f
Merge pull request #2282 from buildpacks/fix/lcow-acceptance
Cleanup after running acceptance tests
2024-11-13 15:31:53 -05:00
dependabot[bot] 8b3d7b34d8
build(deps): bump the go-dependencies group across 1 directory with 9 updates
Bumps the go-dependencies group with 6 updates in the / directory:

| Package | From | To |
| --- | --- | --- |
| [github.com/docker/docker](https://github.com/docker/docker) | `27.0.3+incompatible` | `27.3.1+incompatible` |
| [github.com/onsi/gomega](https://github.com/onsi/gomega) | `1.34.2` | `1.35.1` |
| [golang.org/x/mod](https://github.com/golang/mod) | `0.21.0` | `0.22.0` |
| [golang.org/x/oauth2](https://github.com/golang/oauth2) | `0.23.0` | `0.24.0` |
| [golang.org/x/sync](https://github.com/golang/sync) | `0.8.0` | `0.9.0` |
| [golang.org/x/sys](https://github.com/golang/sys) | `0.26.0` | `0.27.0` |



Updates `github.com/docker/docker` from 27.0.3+incompatible to 27.3.1+incompatible
- [Release notes](https://github.com/docker/docker/releases)
- [Commits](https://github.com/docker/docker/compare/v27.0.3...v27.3.1)

Updates `github.com/onsi/gomega` from 1.34.2 to 1.35.1
- [Release notes](https://github.com/onsi/gomega/releases)
- [Changelog](https://github.com/onsi/gomega/blob/master/CHANGELOG.md)
- [Commits](https://github.com/onsi/gomega/compare/v1.34.2...v1.35.1)

Updates `golang.org/x/crypto` from 0.26.0 to 0.28.0
- [Commits](https://github.com/golang/crypto/compare/v0.26.0...v0.28.0)

Updates `golang.org/x/mod` from 0.21.0 to 0.22.0
- [Commits](https://github.com/golang/mod/compare/v0.21.0...v0.22.0)

Updates `golang.org/x/oauth2` from 0.23.0 to 0.24.0
- [Commits](https://github.com/golang/oauth2/compare/v0.23.0...v0.24.0)

Updates `golang.org/x/sync` from 0.8.0 to 0.9.0
- [Commits](https://github.com/golang/sync/compare/v0.8.0...v0.9.0)

Updates `golang.org/x/sys` from 0.26.0 to 0.27.0
- [Commits](https://github.com/golang/sys/compare/v0.26.0...v0.27.0)

Updates `golang.org/x/term` from 0.23.0 to 0.25.0
- [Commits](https://github.com/golang/term/compare/v0.23.0...v0.25.0)

Updates `golang.org/x/text` from 0.17.0 to 0.19.0
- [Release notes](https://github.com/golang/text/releases)
- [Commits](https://github.com/golang/text/compare/v0.17.0...v0.19.0)

---
updated-dependencies:
- dependency-name: github.com/docker/docker
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: go-dependencies
- dependency-name: github.com/onsi/gomega
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: go-dependencies
- dependency-name: golang.org/x/crypto
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: go-dependencies
- dependency-name: golang.org/x/mod
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: go-dependencies
- dependency-name: golang.org/x/oauth2
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: go-dependencies
- dependency-name: golang.org/x/sync
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: go-dependencies
- dependency-name: golang.org/x/sys
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: go-dependencies
- dependency-name: golang.org/x/term
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: go-dependencies
- dependency-name: golang.org/x/text
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: go-dependencies
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-11-13 19:43:31 +00:00
Juan Bustamante 7d17694115
Merge branch 'main' into fix/lcow-acceptance 2024-11-13 14:37:47 -05:00
Natalie Arellano 08abcc433e
Merge pull request #2185 from hhiroshell/fix-pack-1218
Update image references to use fully qualified names.
2024-11-13 13:04:20 -05:00
Natalie Arellano b3edf6be08 Cleanup after running acceptance tests
While we try to cleanup after ourselves, it doesn't always work.
This will save us from having to RDP into the LCOW worker every so often

Signed-off-by: Natalie Arellano <narellano@vmware.com>
2024-11-13 12:59:44 -05:00
Natalie Arellano fdde5f9f81
Merge branch 'main' into fix-pack-1218 2024-11-13 12:17:32 -05:00
Natalie Arellano 84f661ddef
Merge pull request #2273 from buildpacks/bump-deps
Bump deps
2024-11-13 12:16:18 -05:00
Natalie Arellano 68447dd7bd Try lifecycle binary 0.20.3
Signed-off-by: Natalie Arellano <narellano@vmware.com>
2024-11-13 11:50:34 -05:00
Natalie Arellano 83a1258651 Bump lifecycle binary version also
Signed-off-by: Natalie Arellano <narellano@vmware.com>
2024-11-13 11:14:02 -05:00
Natalie Arellano e2b61e4ca5
Merge branch 'main' into bump-deps 2024-11-13 10:27:43 -05:00
Juan Bustamante 8ce89e8919
Merge branch 'main' into fix-pack-1218 2024-11-13 09:19:00 -05:00
Juan Bustamante 280cd56e7e Fixing lifecycle validation to use fully qualified names
Signed-off-by: Juan Bustamante <bustamantejj@gmail.com>
2024-11-13 08:19:45 -05:00
Juan Bustamante 466439d7ea
Merge pull request #2266 from sap-contributions/match-trusted-builders
Allow trusted builders by repo or tag
2024-11-13 07:52:39 -05:00
Johannes Dillmann 571820403b Allow trusted builders by repo and tag
Signed-off-by: Johannes Dillmann <j.dillmann@sap.com>
2024-11-13 13:31:03 +01:00
Juan Bustamante 2f2cc9ae11
Merge branch 'main' into fix-pack-1218
Signed-off-by: Juan Bustamante <bustamantejj@gmail.com>
2024-11-13 07:21:06 -05:00
Natalie Arellano c579063944
Merge branch 'main' into bump-deps 2024-11-12 16:53:57 -05:00
Natalie Arellano 93b5d66f86
Merge pull request #2279 from buildpacks/dependabot/github_actions/buildpacks/github-actions-5.8.1
build(deps): bump buildpacks/github-actions from 5.8.0 to 5.8.1
2024-11-12 16:48:00 -05:00
Natalie Arellano 3817b995b8 Use released lifecycle
Signed-off-by: Natalie Arellano <narellano@vmware.com>
2024-11-12 16:42:10 -05:00
dependabot[bot] 19d9ac309f
build(deps): bump buildpacks/github-actions from 5.8.0 to 5.8.1
Bumps [buildpacks/github-actions](https://github.com/buildpacks/github-actions) from 5.8.0 to 5.8.1.
- [Release notes](https://github.com/buildpacks/github-actions/releases)
- [Commits](https://github.com/buildpacks/github-actions/compare/v5.8.0...v5.8.1)

---
updated-dependencies:
- dependency-name: buildpacks/github-actions
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-11-11 22:53:11 +00:00
Juan Bustamante 60a2238963
Merge pull request #2274 from buildpacks/dependabot/github_actions/buildpacks/github-actions-5.8.0
build(deps): bump buildpacks/github-actions from 5.7.4 to 5.8.0
2024-11-05 08:28:51 -05:00
dependabot[bot] 80c4615d2f
build(deps): bump buildpacks/github-actions from 5.7.4 to 5.8.0
Bumps [buildpacks/github-actions](https://github.com/buildpacks/github-actions) from 5.7.4 to 5.8.0.
- [Release notes](https://github.com/buildpacks/github-actions/releases)
- [Commits](https://github.com/buildpacks/github-actions/compare/v5.7.4...v5.8.0)

---
updated-dependencies:
- dependency-name: buildpacks/github-actions
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-11-05 12:59:43 +00:00
Juan Bustamante 5805b38e02
Merge pull request #2277 from buildpacks/dependabot/go_modules/github.com/golang-jwt/jwt/v4-4.5.1
build(deps): bump github.com/golang-jwt/jwt/v4 from 4.5.0 to 4.5.1
2024-11-05 07:57:53 -05:00
dependabot[bot] 07ea3df77e
build(deps): bump github.com/golang-jwt/jwt/v4 from 4.5.0 to 4.5.1
Bumps [github.com/golang-jwt/jwt/v4](https://github.com/golang-jwt/jwt) from 4.5.0 to 4.5.1.
- [Release notes](https://github.com/golang-jwt/jwt/releases)
- [Changelog](https://github.com/golang-jwt/jwt/blob/main/VERSION_HISTORY.md)
- [Commits](https://github.com/golang-jwt/jwt/compare/v4.5.0...v4.5.1)

---
updated-dependencies:
- dependency-name: github.com/golang-jwt/jwt/v4
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-11-04 23:45:43 +00:00
Natalie Arellano 80e9e0a8e7 Update actions
Signed-off-by: Natalie Arellano <narellano@vmware.com>
2024-11-01 15:29:32 -04:00
Natalie Arellano c3c07c293d Pin BurntSushi/toml as test failures seem related to https://github.com/BurntSushi/toml/issues/417
Signed-off-by: Natalie Arellano <narellano@vmware.com>
2024-11-01 15:02:17 -04:00
Natalie Arellano 9f8c95bc44 FIXME: update lifecycle (to non-released version) so that we can bump docker
Signed-off-by: Natalie Arellano <narellano@vmware.com>
2024-10-28 15:30:42 -04:00
Natalie Arellano be3a7a7cea Bump deps and run tidy
Signed-off-by: Natalie Arellano <narellano@vmware.com>
2024-10-28 14:58:14 -04:00
Natalie Arellano b59c10dd67 Fix lint
Signed-off-by: Natalie Arellano <narellano@vmware.com>
2024-10-28 14:50:17 -04:00
Natalie Arellano fe6a1e57e7 Update go and run tidy
Signed-off-by: Natalie Arellano <narellano@vmware.com>
2024-10-28 14:39:47 -04:00
Natalie Arellano 270eb1ed67
Merge pull request #2256 from hhiroshell/fix-pack-2231
Make the `pack build` warn that the positional argument will not be treated as the source directory path
2024-10-25 12:39:30 -04:00
Hiroshi Hayakawa 3aee96ea4f Use an existing directory instead of creating and deleting directories for each '--path' flag case to ensure no temp directories are left behind in case of a test failure.
Signed-off-by: Hiroshi Hayakawa <hhiroshell@gmail.com>
2024-10-04 22:48:41 +09:00
Juan Bustamante 98c32ed908
Merge branch 'main' into fix-pack-2231 2024-09-27 07:56:49 -05:00
Juan Bustamante 4ffdb5e09c
Merge pull request #2246 from buildpacks/dependabot/go_modules/github.com/docker/docker-26.1.5incompatible
build(deps): bump github.com/docker/docker from 26.1.4+incompatible to 26.1.5+incompatible
2024-09-18 21:09:25 -05:00
dependabot[bot] 87ab70db6d
build(deps): bump github.com/docker/docker
Bumps [github.com/docker/docker](https://github.com/docker/docker) from 26.1.4+incompatible to 26.1.5+incompatible.
- [Release notes](https://github.com/docker/docker/releases)
- [Commits](https://github.com/docker/docker/compare/v26.1.4...v26.1.5)

---
updated-dependencies:
- dependency-name: github.com/docker/docker
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-09-19 01:39:39 +00:00
Juan Bustamante f987840cd5
Merge pull request #2258 from buildpacks/dependabot/github_actions/buildpacks/github-actions-5.7.4
build(deps): bump buildpacks/github-actions from 5.5.4 to 5.7.4
2024-09-18 20:38:28 -05:00
dependabot[bot] 4d6b7633f4
build(deps): bump buildpacks/github-actions from 5.5.4 to 5.7.4
Bumps [buildpacks/github-actions](https://github.com/buildpacks/github-actions) from 5.5.4 to 5.7.4.
- [Release notes](https://github.com/buildpacks/github-actions/releases)
- [Commits](https://github.com/buildpacks/github-actions/compare/v5.5.4...v5.7.4)

---
updated-dependencies:
- dependency-name: buildpacks/github-actions
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-09-19 01:15:17 +00:00
Juan Bustamante d4d52fd3c5
Merge pull request #2215 from buildpacks/dependabot/github_actions/anchore/scan-action-4
build(deps): bump anchore/scan-action from 3 to 4
2024-09-18 20:14:34 -05:00
Juan Bustamante d97a17c84c
Merge branch 'main' into dependabot/github_actions/anchore/scan-action-4 2024-09-18 18:48:54 -05:00
hhiroshell 569e992b95 avoid using os.MkdirTemp() to prevent test failures on macOS
Signed-off-by: hhiroshell <hhiroshell@gmail.com>
2024-09-17 23:11:25 +09:00
Hiroshi Hayakawa 59a0abf322 rephrase the test description
Signed-off-by: Hiroshi Hayakawa <hhiroshell@gmail.com>
2024-09-17 12:56:42 +09:00
Hiroshi Hayakawa cee65f255c Make it warns only when a local path with the same string as the specified image name exists
Signed-off-by: Hiroshi Hayakawa <hhiroshell@gmail.com>
2024-09-17 12:47:27 +09:00
Natalie Arellano e545151a87
Merge pull request #2260 from buildpacks/fix/delete-ephemeral-builder
Fix deletion of ephemeral builder
2024-09-11 17:45:07 -04:00
Natalie Arellano 97c942249b
Merge branch 'main' into fix/delete-ephemeral-builder 2024-09-11 16:15:38 -04:00
Natalie Arellano df70f4cd1f
Merge pull request #2261 from fumblehool/fix/warning-buildpack-toml
Don't warn about clear-env key while parsing buildpack.toml as this is actually expected.
2024-09-11 12:42:49 -04:00
Damanpreet Singh 9afe64b9dc Don't warn about clear-env key while parsing buildpack.toml as this is actually expected.
Fixes https://github.com/buildpacks/pack/issues/2253

Signed-off-by: Damanpreet Singh <daman.4880@gmail.com>
2024-09-11 20:47:28 +05:30
Natalie Arellano 86b4bf3bfc
Merge pull request #2245 from keshavdalmia10/cache_flag_case_sensitivity_2229
handled case sensitivity
2024-09-10 16:52:01 -04:00
Natalie Arellano 0927dde4c2
Merge branch 'main' into cache_flag_case_sensitivity_2229 2024-09-10 16:27:54 -04:00
Natalie Arellano 620ee480f4 Fix deletion of ephemeral builder
`createEphemeralBuilder` mutates the provided `rawBuilderImage`, so we must save the image name
before this method is called.

Signed-off-by: Natalie Arellano <narellano@vmware.com>
2024-09-05 13:16:43 -04:00
Hiroshi Hayakawa 66982d0389 Improve descriptions for some test cases.
Signed-off-by: Hiroshi Hayakawa <hhiroshell@gmail.com>
2024-09-05 20:09:54 +09:00
Hiroshi Hayakawa 7066e525f3 Add a test case for when the 'pack build' is called with the '--path' flag.
Signed-off-by: Hiroshi Hayakawa <hhiroshell@gmail.com>
2024-09-05 20:08:52 +09:00
Hiroshi Hayakawa 0a5cf9ce91 Make the 'pack build' command warn that the positional argument will not be treated as the source directory path.
Signed-off-by: Hiroshi Hayakawa <hhiroshell@gmail.com>
2024-09-02 12:44:44 +09:00
keshav 1e26662c1a handled case sensitivity
Signed-off-by: Keshav Dalmia <keshavdalmia10@gmail.com>
2024-08-09 23:44:30 +05:30
Natalie Arellano 3a22a7ffef
Merge pull request #2241 from buildpacks/fix/network-name
Fix ephemeral bridge network name for podman
2024-08-05 12:02:05 -04:00
Natalie Arellano b44f845532 Add retries for docker network remove
Signed-off-by: Natalie Arellano <narellano@vmware.com>
2024-08-05 11:11:18 -04:00
Natalie Arellano 56f4bf54df Fix ephemeral bridge network name for podman
See https://github.com/buildpacks/pack/issues/2219#issuecomment-2260923340

Signed-off-by: Natalie Arellano <narellano@vmware.com>
2024-08-05 11:11:18 -04:00
Natalie Arellano 5d0687f636
Merge pull request #2236 from buildpacks/bump-lifecycle
Bump default lifecycle binary version from 0.19.6 to 0.20.0
2024-07-31 15:31:04 -04:00
dependabot[bot] 68b43d7074
build(deps): bump anchore/scan-action from 3 to 4
Bumps [anchore/scan-action](https://github.com/anchore/scan-action) from 3 to 4.
- [Release notes](https://github.com/anchore/scan-action/releases)
- [Changelog](https://github.com/anchore/scan-action/blob/main/CHANGELOG.md)
- [Commits](https://github.com/anchore/scan-action/compare/v3...v4)

---
updated-dependencies:
- dependency-name: anchore/scan-action
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-07-31 17:23:14 +00:00
Natalie Arellano 004deb6404
Merge pull request #2240 from hhiroshell/fix-pack-2111-2
Make the docker Image `pack:base` built on the same base image as `pack:x.x.x-base`
2024-07-31 13:22:28 -04:00
Hiroshi Hayakawa e885ffe48e Fix the helper script for testing the GitHub Action workflows on forked
repositories.

Signed-off-by: Hiroshi Hayakawa <hhiroshell@gmail.com>
2024-07-30 14:25:02 +09:00
Hiroshi Hayakawa 0cda9d0022 Add ${{ matrix.suffix }} to the source tag for retagging.
Signed-off-by: Hiroshi Hayakawa <hhiroshell@gmail.com>
2024-07-30 13:50:18 +09:00
Natalie Arellano a651c5dac4
Merge pull request #2234 from sap-contributions/support-oci-mediatype
Support OCI layouts with `application/vnd.oci.image.manifest.v1+json` media type
2024-07-29 18:07:08 -04:00
Natalie Arellano c253591be9
Merge pull request #2238 from anthonydahanne/2237-workspace-sensitive
Fix #2237: consider /workspace as a sensitive dir
2024-07-29 14:57:20 -04:00
Natalie Arellano 5821ccd000
Merge branch 'main' into 2237-workspace-sensitive 2024-07-29 11:48:00 -04:00
Natalie Arellano 3902749389
Merge pull request #2235 from hhiroshell/fix-pack-2111-1
Add a helper script for testing GitHub Actions on forked repositories
2024-07-29 11:46:06 -04:00
Anthony Dahanne 825617be7d Fix buildpacks#2237: consider /workspace as a sensitive dir
Signed-off-by: Anthony Dahanne <anthony.dahanne@gmail.com>
2024-07-29 00:03:26 -04:00
Pavel Busko 0754b56695 Support OCI layouts with application/vnd.oci.image.manifest.v1+json media type
Signed-off-by: Pavel Busko <pavel.busko@sap.com>
2024-07-26 09:11:54 +02:00
Hiroshi Hayakawa c45a96cc5c
Merge branch 'main' into fix-pack-2111-1 2024-07-26 10:56:05 +09:00
Natalie Arellano 2aa2cf58e3
Merge pull request #2230 from AidanDelaney/fix/2228-trust-additional-buildpacks
Trust buildpacks in addition to those on the builder
2024-07-25 10:38:45 -04:00
Natalie Arellano 9a22a21bd5 Bump default lifecycle binary version from 0.19.6 to 0.20.0
Signed-off-by: Natalie Arellano <narellano@vmware.com>
2024-07-25 10:32:49 -04:00
Hiroshi Hayakawa 6680c0e03b
Fix variable name.
Co-authored-by: Natalie Arellano <narellano@vmware.com>
Signed-off-by: Hiroshi Hayakawa <hhiroshell@gmail.com>
2024-07-25 18:28:05 +09:00
Hiroshi Hayakawa 3f3345847b
Fix variable name.
Co-authored-by: Natalie Arellano <narellano@vmware.com>
Signed-off-by: Hiroshi Hayakawa <hhiroshell@gmail.com>
2024-07-25 18:27:52 +09:00
hhiroshell 75aa273cc3 Update the DEVELOPMENT.md
Signed-off-by: hhiroshell <hhiroshell@gmail.com>
2024-07-24 17:54:50 +09:00
hhiroshell 23326a8a8e Fix variable name mismatch.
Signed-off-by: hhiroshell <hhiroshell@gmail.com>
2024-07-24 11:11:39 +09:00
hhiroshell dce5257689 Finish the helper script for testing GitHub Action workflows on forked repository.
Signed-off-by: hhiroshell <hhiroshell@gmail.com>
2024-07-24 10:56:17 +09:00
Hiroshi Hayakawa 15dc0e92a0 Add a draft helper script for testing GitHub Action workflows on forked repository.
Signed-off-by: Hiroshi Hayakawa <hhiroshell@gmail.com>
2024-07-23 14:33:28 +09:00
Aidan Delaney b195e95e2f Add --trust-extra-buildpacks option
Use the term "extra buildpacks" instead of "additional
buildpacks"

Signed-off-by: Aidan Delaney <adelaney21@bloomberg.net>
2024-07-22 05:58:24 +01:00
Aidan Delaney 30704ba80b Trust buildpacks in addition to those on the builder
Trust buildpacks provided when `--buildpack` is provided on the
command line.

Signed-off-by: Aidan Delaney <adelaney21@bloomberg.net>
2024-07-19 07:10:06 +01:00
Natalie Arellano f6b450fc1a
Merge pull request #2217 from buildpacks/security-fixes
Fixes from security review
2024-07-17 10:58:31 -04:00
Natalie Arellano 13ca5376ba
Merge pull request #48 from buildpacks/pack-volume-key
When creating volume caches, incorporate "pack volume key" to avoid name collisions
2024-07-16 10:11:46 -04:00
Natalie Arellano 331ac6d0e7 Log a warning (once) when PACK_VOLUME_KEY is unset and running in a container
Signed-off-by: Natalie Arellano <narellano@vmware.com>
2024-07-15 16:33:07 -04:00
Natalie Arellano ba4bee8682 Merge branch 'main' into pack-volume-key 2024-07-15 15:51:06 -04:00
Natalie Arellano c1a1382c23
Merge pull request #50 from buildpacks/ephemeral-network
Launch build containers in a separate ephemeral Docker bridge network
2024-07-11 15:03:05 -04:00
Natalie Arellano 72ffc75dba
Merge pull request #31 from buildpacks/fix/warn-container-daemon
Warn if NOT --pull-policy=always in container
2024-07-11 09:48:17 -04:00
Aidan Delaney 57c03686b0
Merge pull request #47 from buildpacks/feat/validate-image-name-on-daemon
Validate image name
2024-07-11 09:13:56 +01:00
Aidan Delaney 8c60837e56 Merge branch 'security-review' into feat/validate-image-name-on-daemon 2024-07-11 09:11:53 +01:00
Aidan Delaney 12049345af Validate build image name
Ensure that the user has not requested to build an
image with the same name as a builder of a
lifecyle image.

Signed-off-by: Aidan Delaney <adelaney21@bloomberg.net>
Signed-off-by: Aidan Delaney <aidan.delaney@gmail.com>
Signed-off-by: Aidan Delaney <adelaney21@bloomberg.net>
2024-07-11 09:07:30 +01:00
Natalie Arellano 98ffc46188 Try to fix wcow
Signed-off-by: Natalie Arellano <narellano@vmware.com>
2024-07-10 11:58:12 -04:00
Natalie Arellano 16f4932dc2
Merge pull request #30 from buildpacks/fix/untrusted-flow
Use the untrusted flow when buildpacks are added to a trusted builder
2024-07-10 11:57:18 -04:00
Natalie Arellano dded2a0e1d
Merge pull request #29 from buildpacks/fix/userns
Run build containers with updated settings
2024-07-10 11:57:03 -04:00
Natalie Arellano 25f454e577 Fix macos by not requiring real docker client for lifecycle execution unit tests
Signed-off-by: Natalie Arellano <narellano@vmware.com>
2024-07-10 11:14:43 -04:00
Natalie Arellano 456342bed0 Merge branch 'security-review' into fix/warn-container-daemon
Signed-off-by: Natalie Arellano <narellano@vmware.com>
2024-07-10 10:57:13 -04:00
Natalie Arellano 5dbbb52ad9 Merge branch 'security-review' into fix/untrusted-flow
Signed-off-by: Natalie Arellano <narellano@vmware.com>
2024-07-10 10:56:56 -04:00
Natalie Arellano 2049ae2266 Run build containers with security-opt field set to no-new-privileges=true
Fixes https://github.com/buildpacks/pack-private/issues/22

Signed-off-by: Natalie Arellano <narellano@vmware.com>
2024-07-10 10:56:23 -04:00
Natalie Arellano cbc880a9b0
Merge pull request #2211 from buildpacks/bump-deps
Bump deps
2024-07-09 16:01:02 -04:00
Natalie Arellano 132f8320e8 Bump deps
Signed-off-by: Natalie Arellano <narellano@vmware.com>
2024-07-09 13:20:40 -04:00
Natalie Arellano 21a8d81e51
Merge pull request #2188 from anjannath/issue_2181
Remove github actions job for pack-cli arch package
2024-07-09 12:44:35 -04:00
Natalie Arellano 697ed485cf
Merge branch 'main' into issue_2181 2024-07-09 12:23:45 -04:00
Natalie Arellano 0b0614b2df
Merge pull request #2203 from hhiroshell/fix-pack-2199
Update the Google builder in the list of known builders.
2024-07-09 12:23:27 -04:00
Natalie Arellano 2c3d5f6888
Merge branch 'main' into fix-pack-2199 2024-07-09 11:43:07 -04:00
Natalie Arellano 7d3a810d73
Merge pull request #2205 from colincasey/fix_trusting_of_trusted_builders
Trusted builders fix
2024-07-09 11:42:54 -04:00
Natalie Arellano 2404f2e92d
Merge branch 'main' into fix_trusting_of_trusted_builders 2024-07-09 10:28:51 -04:00
Hiroshi Hayakawa 80cf0cae0e
Merge branch 'main' into fix-pack-2199 2024-07-09 10:33:44 +09:00
Natalie Arellano 98c98da526
Merge pull request #2196 from buildpacks/lazy-ephemeral-builder
Don't create an ephemeral builder if it isn't truly needed
2024-07-08 14:00:40 -04:00
Colin Casey 7e71a2e2b8
Merge branch 'main' into fix_trusting_of_trusted_builders 2024-07-08 14:57:32 -03:00
Natalie Arellano 376513b9ac
Merge branch 'main' into lazy-ephemeral-builder 2024-07-08 13:13:43 -04:00
Colin Casey 9bd0d3aa0a Fix assertion in `EqBuildOptionsWithTrustedBuilder`
Signed-off-by: Colin Casey <casey.colin@gmail.com>
2024-07-08 13:06:48 -03:00
Natalie Arellano 2fa3260e1a
Merge pull request #2197 from buildpacks/fix/warning-project-toml
When parsing project.toml, don't warn about unexpected keys that are actually expected
2024-07-08 11:26:28 -04:00
Natalie Arellano 085b288180
Merge branch 'main' into fix/warning-project-toml 2024-07-08 10:27:58 -04:00
Colin Casey 4d4dd5c820 Added test for known trusted but not suggested builder
Signed-off-by: Colin Casey <casey.colin@gmail.com>
2024-07-08 10:53:17 -03:00
Hiroshi Hayakawa 446a563894
Merge branch 'main' into fix-pack-2199 2024-07-08 21:30:42 +09:00
Juan Bustamante 0ad4842c9f
Merge pull request #2206 from buildpacks/dependabot/go_modules/go-dependencies-dbfe555f0c
build(deps): bump the go-dependencies group across 1 directory with 8 updates
2024-07-07 15:41:46 -05:00
dependabot[bot] 0214185f32
build(deps): bump the go-dependencies group across 1 directory with 8 updates
Bumps the go-dependencies group with 5 updates in the / directory:

| Package | From | To |
| --- | --- | --- |
| [github.com/google/go-containerregistry](https://github.com/google/go-containerregistry) | `0.19.1` | `0.19.2` |
| [github.com/spf13/cobra](https://github.com/spf13/cobra) | `1.8.0` | `1.8.1` |
| [golang.org/x/crypto](https://github.com/golang/crypto) | `0.23.0` | `0.25.0` |
| [golang.org/x/mod](https://github.com/golang/mod) | `0.17.0` | `0.19.0` |
| [golang.org/x/oauth2](https://github.com/golang/oauth2) | `0.20.0` | `0.21.0` |



Updates `github.com/google/go-containerregistry` from 0.19.1 to 0.19.2
- [Release notes](https://github.com/google/go-containerregistry/releases)
- [Changelog](https://github.com/google/go-containerregistry/blob/main/.goreleaser.yml)
- [Commits](https://github.com/google/go-containerregistry/compare/v0.19.1...v0.19.2)

Updates `github.com/spf13/cobra` from 1.8.0 to 1.8.1
- [Release notes](https://github.com/spf13/cobra/releases)
- [Commits](https://github.com/spf13/cobra/compare/v1.8.0...v1.8.1)

Updates `golang.org/x/crypto` from 0.23.0 to 0.25.0
- [Commits](https://github.com/golang/crypto/compare/v0.23.0...v0.25.0)

Updates `golang.org/x/mod` from 0.17.0 to 0.19.0
- [Commits](https://github.com/golang/mod/compare/v0.17.0...v0.19.0)

Updates `golang.org/x/oauth2` from 0.20.0 to 0.21.0
- [Commits](https://github.com/golang/oauth2/compare/v0.20.0...v0.21.0)

Updates `golang.org/x/sys` from 0.20.0 to 0.22.0
- [Commits](https://github.com/golang/sys/compare/v0.20.0...v0.22.0)

Updates `golang.org/x/term` from 0.20.0 to 0.22.0
- [Commits](https://github.com/golang/term/compare/v0.20.0...v0.22.0)

Updates `golang.org/x/text` from 0.15.0 to 0.16.0
- [Release notes](https://github.com/golang/text/releases)
- [Commits](https://github.com/golang/text/compare/v0.15.0...v0.16.0)

---
updated-dependencies:
- dependency-name: github.com/google/go-containerregistry
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: go-dependencies
- dependency-name: github.com/spf13/cobra
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: go-dependencies
- dependency-name: golang.org/x/crypto
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: go-dependencies
- dependency-name: golang.org/x/mod
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: go-dependencies
- dependency-name: golang.org/x/oauth2
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: go-dependencies
- dependency-name: golang.org/x/sys
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: go-dependencies
- dependency-name: golang.org/x/term
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: go-dependencies
- dependency-name: golang.org/x/text
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: go-dependencies
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-07-07 18:14:55 +00:00
Colin Casey a55703b5fa Empty commit
Signed-off-by: Colin Casey <casey.colin@gmail.com>
2024-07-06 10:57:38 -03:00
Colin Casey 133833c985 Added test for trusted/untrusted builders in build command
Signed-off-by: Colin Casey <casey.colin@gmail.com>
2024-07-05 17:01:24 -03:00
Colin Casey 1e79cc8123 With the changes introduced in #2043 for separating suggested builders and trusted builders, there were several places that still had logic referencing suggested builders in the trusted context. This PR updates those code paths to only consider trusted builders and extracts out a shared function `IsKnownTrustedBuilder` that can be used for "is this a trusted builder" checks.
Fixes #2198

Signed-off-by: Colin Casey <casey.colin@gmail.com>
2024-07-04 16:06:55 -03:00
Hiroshi Hayakawa 070d7769a0 Fix the broken acceptance tests.
Signed-off-by: Hiroshi Hayakawa <hhiroshell@gmail.com>
2024-07-04 21:03:52 +09:00
Hiroshi Hayakawa a49d9c3999
Align the description of the Google builder with the upstream manifest.
Co-authored-by: Ed Morley <501702+edmorley@users.noreply.github.com>
Signed-off-by: Hiroshi Hayakawa <hhiroshell@gmail.com>
2024-07-04 21:14:33 +09:00
Hiroshi Hayakawa dd3971bab2 Fix broken tests.
Signed-off-by: Hiroshi Hayakawa <hhiroshell@gmail.com>
2024-07-04 20:13:45 +09:00
Hiroshi Hayakawa d4d4614eb6 Update the version of the Google builder in the list of known builders.
Signed-off-by: Hiroshi Hayakawa <hhiroshell@gmail.com>
2024-07-04 19:20:21 +09:00
Natalie Arellano 423f596671 Don't cleanup the ephemeral builder if it is the original builder
Signed-off-by: Natalie Arellano <narellano@vmware.com>
2024-07-02 17:22:23 -04:00
Natalie Arellano 61a7f50bdb When parsing project.toml, don't warn about unexpected keys that are actually expected
Fixes https://github.com/buildpacks/pack/issues/2192

Signed-off-by: Natalie Arellano <narellano@vmware.com>
2024-07-02 16:02:05 -04:00
Natalie Arellano 55f7f36825 Don't create an ephemeral builder if it isn't truly needed
Fixes https://github.com/buildpacks/pack/issues/2195

Signed-off-by: Natalie Arellano <narellano@vmware.com>
2024-07-02 13:34:50 -04:00
Natalie Arellano 10aa579c15 Launch build containers in a separate ephemeral Docker bridge network
Signed-off-by: Natalie Arellano <narellano@vmware.com>
2024-07-01 12:19:03 -04:00
Natalie Arellano 8e0d859317 Resolve some TODOs
Signed-off-by: Natalie Arellano <narellano@vmware.com>
2024-06-27 15:01:39 -04:00
Natalie Arellano 1cc1cc8dd9 Initial implementation (still has TODOs)
Signed-off-by: Natalie Arellano <narellano@vmware.com>
2024-06-27 14:40:29 -04:00
Anjan Nath 538d57290b Remove github actions job for pack-cli arch package
The `pack-cli` package has been adopted by the arch linux
extra repository: https://archlinux.org/packages/extra/x86_64/pack-cli/
and hence the namespace has been removed from aur

Signed-off-by: Anjan Nath <kaludios@gmail.com>
2024-06-12 12:13:41 +05:30
Hiroshi Hayakawa e8a0c7f10e Update image references in internal documents and ci settings to use fully qualified names.
Signed-off-by: Hiroshi Hayakawa <hhiroshell@gmail.com>
2024-06-10 14:20:09 +09:00
Hiroshi Hayakawa 59fcbcb092 Update references to lifecycle image to use fully qualified image name.
Signed-off-by: Hiroshi Hayakawa <hhiroshell@gmail.com>
2024-06-10 14:00:06 +09:00
Natalie Arellano ce8db3c5d1
Merge pull request #2179 from buildpacks/fix/imgutil
Bump imgutil to pick up fixes for containerd and podman
2024-06-05 11:29:29 -04:00
Natalie Arellano 29f5c9f88c Bump imgutil to pick up fixes for containerd and podman
Signed-off-by: Natalie Arellano <narellano@vmware.com>
2024-06-05 11:01:05 -04:00
Natalie Arellano cffbe0b777
Merge pull request #2178 from edmorley/heroku-builder-24
Add `heroku/builder:24` as a trusted + suggested builder
2024-06-05 10:48:05 -04:00
Ed Morley 6c4f1d94cd
Add `heroku/builder:24` as a trusted + suggested builder
We have just completed our new `heroku/builder:24` builder,
which is based upon Ubuntu 24.04 and is also our first
multi-architecture (AMD64+ARM64) builder.

As such, I have:
- Added `heroku/builder:24` as a trusted+suggested builder
- Changed the existing `heroku/builder:22` builder entry so
  that it is now just trusted, and not also suggested (since we
  want to encourage users to use the newer builder, especially
  since it's now multi-arch).
- Re-synced the builder description metadata here with what's in
  our `builder.toml` configs. (The descriptions in this repo are
  what gets used in offline mode, when Pack CLI can't pull the
  latest image description from the image labels on the registry.)

See:
https://github.com/heroku/cnb-builder-images/pull/534
https://github.com/heroku/cnb-builder-images/blob/main/builder-20/builder.toml
https://github.com/heroku/cnb-builder-images/blob/main/builder-22/builder.toml
https://github.com/heroku/cnb-builder-images/blob/main/builder-24/builder.toml

Signed-off-by: Ed Morley <501702+edmorley@users.noreply.github.com>
2024-06-05 11:35:29 +01:00
Juan Bustamante 98f0eb496f
Merge pull request #2171 from buildpacks/chore/fix-delivery-for-pack-0_34_0
chore: updating docker base image to use go 1.22
2024-05-30 13:37:59 -05:00
Juan Bustamante a7d1cc42e6
Updating the docker base image to use go 1.22, also removing ubuntu lunar becase it is deprecated, we don't need to support it anymore
Signed-off-by: Juan Bustamante <jbustamante@vmware.com>
2024-05-30 12:04:19 -05:00
Juan Bustamante b8f5fc8dcc
Merge pull request #2166 from buildpacks/chore/fix-macos-binaries
Building darwin arm64 binaries by default on CI and amd64 during releases
2024-05-24 11:07:22 -05:00
Juan Bustamante e792c69220
Since macos14 the github runner is arm64
Signed-off-by: Juan Bustamante <jbustamante@vmware.com>
2024-05-24 10:11:20 -05:00
Natalie Arellano f56bca579c
Merge pull request #2165 from buildpacks/fix/extensions-docker-25
Fix https://github.com/buildpacks/pack/issues/2164
2024-05-23 12:02:47 -04:00
Natalie Arellano 113ba0c94b Fix https://github.com/buildpacks/pack/issues/2164
Signed-off-by: Natalie Arellano <narellano@vmware.com>
2024-05-23 11:34:55 -04:00
Juan Bustamante 4917cee80a
Merge pull request #2158 from buildpacks/dependabot/go_modules/go-dependencies-4bef9954a0
build(deps): bump the go-dependencies group across 1 directory with 2 updates
2024-05-23 09:39:56 -05:00
dependabot[bot] e80b1190b8
build(deps): bump the go-dependencies group across 1 directory with 2 updates
Bumps the go-dependencies group with 2 updates in the / directory: [github.com/docker/cli](https://github.com/docker/cli) and [github.com/docker/docker](https://github.com/docker/docker).


Updates `github.com/docker/cli` from 26.1.1+incompatible to 26.1.3+incompatible
- [Commits](https://github.com/docker/cli/compare/v26.1.1...v26.1.3)

Updates `github.com/docker/docker` from 26.1.1+incompatible to 26.1.3+incompatible
- [Release notes](https://github.com/docker/docker/releases)
- [Commits](https://github.com/docker/docker/compare/v26.1.1...v26.1.3)

---
updated-dependencies:
- dependency-name: github.com/docker/cli
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: go-dependencies
- dependency-name: github.com/docker/docker
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: go-dependencies
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-05-23 14:15:54 +00:00
Juan Bustamante ebea3ae82e
Merge pull request #2162 from buildpacks/build-with-platform
Support `pack build --platform`
2024-05-23 09:14:06 -05:00
Natalie Arellano 89cb617380 Dedup test setup
Signed-off-by: Natalie Arellano <narellano@vmware.com>
2024-05-23 09:43:56 -04:00
Natalie Arellano 08995083ff Remove unneeded things
Signed-off-by: Natalie Arellano <narellano@vmware.com>
2024-05-23 09:37:06 -04:00
Natalie Arellano 863eb981d4 Merge branch 'main' into build-with-platform
Signed-off-by: Natalie Arellano <narellano@vmware.com>
2024-05-22 17:10:06 -04:00
Natalie Arellano 7306444911
Merge pull request #2086 from jjbustamante/jjbustamante/poc-multiarch-rfc
Implementation of the multi-platform support for builders and buildpack packages RFC 0128
2024-05-22 15:46:04 -04:00
Juan Bustamante ae8e20b985
fixing windows acceptance test
Signed-off-by: Juan Bustamante <jbustamante@vmware.com>
2024-05-22 13:20:39 -05:00
Juan Bustamante 03a0d8f5a4
adding tests for builder create and improving logging messages
Signed-off-by: Juan Bustamante <jbustamante@vmware.com>
2024-05-22 12:40:44 -05:00
Juan Bustamante 574b3a22fa
removing comment and logging
Signed-off-by: Juan Bustamante <jbustamante@vmware.com>
2024-05-22 08:41:28 -05:00
Juan Bustamante 68d1efabdd
fixing a little bug when creating a builder without target flag on darwin
Signed-off-by: Juan Bustamante <jbustamante@vmware.com>
2024-05-21 15:58:49 -05:00
Natalie Arellano 84930f5113 Remove error check
LCOW appears to fallback to the arch it can find

Signed-off-by: Natalie Arellano <narellano@vmware.com>
2024-05-21 10:15:25 -04:00
Natalie Arellano da674445a5 Bring back needed skip
Signed-off-by: Natalie Arellano <narellano@vmware.com>
2024-05-20 17:22:01 -04:00
Natalie Arellano f8a1033936 Make acceptance test a little more robust
Signed-off-by: Natalie Arellano <narellano@vmware.com>
2024-05-20 17:12:51 -04:00
Juan Bustamante 3f3b24d2f9
allowing to create a builder with other architecture available for lifecycle
Signed-off-by: Juan Bustamante <jbustamante@vmware.com>
2024-05-20 15:51:28 -05:00
Natalie Arellano f2cd826552 Fix tests
- WCOW units by checking for 'windows' in error string
- LCOW acceptance by printing a log line and checking it instead of expecting an error

Signed-off-by: Natalie Arellano <narellano@vmware.com>
2024-05-20 16:00:00 -04:00
Natalie Arellano 6f50db6611 Fix acceptance by skipping test if feature not supported
Signed-off-by: Natalie Arellano <narellano@vmware.com>
2024-05-20 15:34:36 -04:00
Natalie Arellano d81ec1600c Support `pack build --platform`
Fixes https://github.com/buildpacks/pack/issues/2154

Signed-off-by: Natalie Arellano <narellano@vmware.com>
2024-05-20 15:25:38 -04:00
Juan Bustamante 87e4101486
fixing a bug when exporting multi-platform buildpack packages files
Signed-off-by: Juan Bustamante <jbustamante@vmware.com>
2024-05-20 09:59:35 -05:00
Juan Bustamante 46ec0df1c4
fixing more feedback from review
Signed-off-by: Juan Bustamante <jbustamante@vmware.com>
2024-05-20 09:59:35 -05:00
Juan Bustamante 35cf9beabc
fixing some feedback from review
Signed-off-by: Juan Bustamante <jbustamante@vmware.com>
2024-05-20 09:59:24 -05:00
Juan Bustamante bad37a994d
Implementation of the multi-platform RFC - 0128
Signed-off-by: Juan Bustamante <jbustamante@vmware.com>
2024-05-20 09:59:03 -05:00
Juan Bustamante e1d6106d3b
Merge pull request #2161 from buildpacks/fix/buildpack-toml-validation
When validating buildpack.toml, don't warn for keys that are actually defined
2024-05-20 09:57:04 -05:00
Juan Bustamante 47ae7a3271
Merge branch 'main' into fix/buildpack-toml-validation 2024-05-20 09:21:26 -05:00
Juan Bustamante 302963e081
Merge pull request #2155 from jjbustamante/bugfix/jjbustamante/issue-1922
Warn misconfiguration keys in project.toml only for tables we own
2024-05-20 09:20:44 -05:00
Juan Bustamante b8827af57a
Merge branch 'main' into bugfix/jjbustamante/issue-1922 2024-05-20 08:56:06 -05:00
Juan Bustamante c1676bb5fe
Merge pull request #2127 from buildpacks/fix/run-image-pull
Pull run image using digest reference in analyzed.toml (not image name from extensions)
2024-05-20 08:53:57 -05:00
Juan Bustamante 6405ff486b
Merge branch 'main' into fix/run-image-pull 2024-05-20 08:31:23 -05:00
Juan Bustamante e76cf933de
fixing some feedback from review
Signed-off-by: Juan Bustamante <jbustamante@vmware.com>
2024-05-20 08:17:36 -05:00
Natalie Arellano 348791a980 When validating buildpack.toml don't warn for keys that are actually defined
Signed-off-by: Natalie Arellano <narellano@vmware.com>
2024-05-17 16:43:58 -04:00
Natalie Arellano 3350bc96a8 Fix acceptance
The fixture changed, so the SHA changed

Signed-off-by: Natalie Arellano <narellano@vmware.com>
2024-05-17 13:28:09 -04:00
Juan Bustamante f733a3a8bb
changing the logic to print the warning message, only will be printed for tables in the project.toml we own
Signed-off-by: Juan Bustamante <jbustamante@vmware.com>
2024-05-17 06:18:42 -05:00
Juan Bustamante 884dd18373
Merge pull request #2157 from buildpacks/deps/jjbustamante/update-to-lifecycle-0_19_6
Updating default lifecycle version 0.19.6
2024-05-16 11:28:12 -05:00
Juan Bustamante bb5db76f96
Updating default lifecycle version 0.19.6
Signed-off-by: Juan Bustamante <jbustamante@vmware.com>
2024-05-16 11:00:13 -05:00
Juan Bustamante 1cc921d5c5
Merge pull request #2151 from sap-contributions/blob-downloader-client
Do not initialize `http.Client` during each request to a remote location
2024-05-16 10:54:44 -05:00
Natalie Arellano 75b16b6c4a Pull the new run image by name before restore, and by identifier after restore
When building to a daemon we need to pull the run image before restore in order to get target data

Signed-off-by: Natalie Arellano <narellano@vmware.com>
2024-05-14 17:06:37 -04:00
Pavel Busko cfcd3f931e Do not initialize http.Client during each request to a remote location
Signed-off-by: Pavel Busko <pavel.busko@sap.com>
2024-05-10 15:25:58 +02:00
Juan Bustamante 0a39de09a0
Merge pull request #2150 from buildpacks/dependabot/go_modules/go-dependencies-74daed8b8f
build(deps): bump the go-dependencies group across 1 directory with 6 updates
2024-05-08 16:17:54 -05:00
dependabot[bot] b8dca70180
build(deps): bump the go-dependencies group across 1 directory with 6 updates
Bumps the go-dependencies group with 4 updates in the / directory: [github.com/docker/cli](https://github.com/docker/cli), [github.com/onsi/gomega](https://github.com/onsi/gomega), [golang.org/x/crypto](https://github.com/golang/crypto) and [golang.org/x/oauth2](https://github.com/golang/oauth2).


Updates `github.com/docker/cli` from 26.0.1+incompatible to 26.1.1+incompatible
- [Commits](https://github.com/docker/cli/compare/v26.0.1...v26.1.1)

Updates `github.com/onsi/gomega` from 1.33.0 to 1.33.1
- [Release notes](https://github.com/onsi/gomega/releases)
- [Changelog](https://github.com/onsi/gomega/blob/master/CHANGELOG.md)
- [Commits](https://github.com/onsi/gomega/compare/v1.33.0...v1.33.1)

Updates `golang.org/x/crypto` from 0.22.0 to 0.23.0
- [Commits](https://github.com/golang/crypto/compare/v0.22.0...v0.23.0)

Updates `golang.org/x/oauth2` from 0.19.0 to 0.20.0
- [Commits](https://github.com/golang/oauth2/compare/v0.19.0...v0.20.0)

Updates `golang.org/x/term` from 0.19.0 to 0.20.0
- [Commits](https://github.com/golang/term/compare/v0.19.0...v0.20.0)

Updates `golang.org/x/text` from 0.14.0 to 0.15.0
- [Release notes](https://github.com/golang/text/releases)
- [Commits](https://github.com/golang/text/compare/v0.14.0...v0.15.0)

---
updated-dependencies:
- dependency-name: github.com/docker/cli
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: go-dependencies
- dependency-name: github.com/onsi/gomega
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: go-dependencies
- dependency-name: golang.org/x/crypto
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: go-dependencies
- dependency-name: golang.org/x/oauth2
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: go-dependencies
- dependency-name: golang.org/x/term
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: go-dependencies
- dependency-name: golang.org/x/text
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: go-dependencies
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-05-08 17:58:15 +00:00
Husni Faiz 67feb16025
Add a new `manifest` command to support multi-architecture builds (#1705)
Implement Pack Manifest commands in support of https://github.com/buildpacks/rfcs/blob/main/text/0124-pack-manifest-list-commands.md

Signed-off-by: Husni Faiz <ahamedhusni73@gmail.com>
Signed-off-by: WYGIN <wygininc@gmail.com>
Signed-off-by: sai kiran <wyginc1@gmail.com>
Signed-off-by: Juan Bustamante <jbustamante@vmware.com>
Signed-off-by: Juan Bustamante <juan.bustamante@broadcom.com>
Signed-off-by: Sai Kiran Maggidi <107541780+WYGIN@users.noreply.github.com>
Signed-off-by: Juan Bustamante <bustamantejj@gmail.com>

Co-authored-by: Juan Bustamante <jbustamante@vmware.com>
Co-authored-by: WYGIN <wygininc@gmail.com>
Co-authored-by: sai kiran <wyginc1@gmail.com>
Co-authored-by: Juan Bustamante <juan.bustamante@broadcom.com>
Co-authored-by: Sai Kiran Maggidi <107541780+WYGIN@users.noreply.github.com>
Co-authored-by: Juan Bustamante <bustamantejj@gmail.com>
2024-05-08 12:56:14 -05:00
Juan Bustamante d3904d63b3
Merge pull request #2136 from buildpacks/deps/jjbustamante/update-to-docker-26
Updating to Docker 26.x & lifecycle 0.19.4
2024-05-08 12:23:06 -05:00
Natalie Arellano 7cd4e0bd72 Bump lifecycle to 0.19.4
Signed-off-by: Natalie Arellano <narellano@vmware.com>
2024-05-08 12:30:19 -04:00
Juan Bustamante fb50e283a4
Merge branch 'main' into deps/jjbustamante/update-to-docker-26 2024-05-06 08:49:56 -05:00
Juan Bustamante 32d8db5ef6
Merge pull request #2125 from buildpacks/enhancement/jjbustamante/issue-2066-part-1
Removing experimental configuration for extensions starting with API 0.13
2024-05-03 15:10:54 -05:00
Juan Bustamante 2293719d76
Merge branch 'main' into deps/jjbustamante/update-to-docker-26 2024-05-03 14:34:00 -05:00
Juan Bustamante c53fbf5cdb
Merge branch 'main' into enhancement/jjbustamante/issue-2066-part-1 2024-05-03 14:21:02 -05:00
Juan Bustamante 57282c728f
Merge pull request #2145 from buildpacks/extensions-context
Platform 0.13: look for build Dockerfiles in <layers>/generated/<buildpack-id>/Dockerfile.build
2024-05-03 14:19:35 -05:00
Juan Bustamante 635f6c0f89
Merge branch 'main' into extensions-context 2024-05-03 13:54:28 -05:00
Natalie Arellano c1ad91c934 Fix acceptance
Signed-off-by: Natalie Arellano <narellano@vmware.com>
2024-05-03 14:14:09 -04:00
Juan Bustamante 2b23d38d1f
Fixing latest code from main to be compatible with docker 26
Signed-off-by: Juan Bustamante <jbustamante@vmware.com>
2024-05-02 14:28:35 -05:00
Natalie Arellano 1e7aad8d05 Skip WCOW failing test
Signed-off-by: Natalie Arellano <narellano@vmware.com>
2024-05-02 15:24:59 -04:00
Juan Bustamante 391d79f335
Merge branch 'main' into deps/jjbustamante/update-to-docker-26
Signed-off-by: Juan Bustamante <juan.bustamante@broadcom.com>
2024-05-02 13:51:38 -05:00
Juan Bustamante 000b471560
Merge branch 'main' into enhancement/jjbustamante/issue-2066-part-1 2024-05-02 13:49:47 -05:00
Natalie Arellano b24c122640 Also consider buildpacks that are added from project descriptor (but exclude inline buildpacks)
Signed-off-by: Natalie Arellano <narellano@vmware.com>
2024-05-02 13:45:04 -04:00
Juan Bustamante dc5946137b
Merge pull request #2129 from BarDweller/mountpoints
Add ephemeral lifecycle image, enabling podman support
2024-05-02 10:53:10 -05:00
Natalie Arellano 0d0a4958ff Warn if NOT --pull-policy=always in container
Fixes https://github.com/buildpacks/pack-private/issues/20

Signed-off-by: Natalie Arellano <narellano@vmware.com>
2024-05-02 11:03:45 -04:00
Ozzy Osborne e90aa83041 Merge upstream/main to branch
Signed-off-by: Ozzy Osborne <bardweller@gmail.com>
2024-05-02 10:47:01 -04:00
Natalie Arellano 1ab72dd552 Use the untrusted flow when buildpacks are added to a trusted builder
Fixes https://github.com/buildpacks/pack-private/issues/21

Signed-off-by: Natalie Arellano <narellano@vmware.com>
2024-05-02 10:29:29 -04:00
Juan Bustamante eb1c1261ba
Merge branch 'main' into enhancement/jjbustamante/issue-2066-part-1 2024-05-01 18:32:25 -05:00
Natalie Arellano 5f24b01e13 Run build containers with userns=host
Fixes https://github.com/buildpacks/pack-private/issues/26

Signed-off-by: Natalie Arellano <narellano@vmware.com>
2024-05-01 15:50:35 -04:00
Natalie Arellano b30f3e5ddf Fallback to run image name if we fail to pull run image by reference
(as run image reference may be a daemon image id)

Signed-off-by: Natalie Arellano <narellano@vmware.com>
2024-04-29 14:52:32 -04:00
Natalie Arellano 328fce6071 Use the run image name to determine if the run image changed,
use the run image identifier to pull.

Signed-off-by: Natalie Arellano <narellano@vmware.com>
2024-04-29 12:39:12 -04:00
Natalie Arellano 869bc63d62 Platform 0.13: look for build Dockerfiles in <layers>/generated/<buildpack-id>/Dockerfile.build
Newer platforms don't copy the Dockerfile from where extensions output them

Signed-off-by: Natalie Arellano <narellano@vmware.com>
2024-04-29 11:25:02 -04:00
Juan Bustamante 32563a6547
Merge pull request #2139 from buildpacks/dependabot/go_modules/go-dependencies-42388c4fc2
build(deps): bump the go-dependencies group across 1 directory with 9 updates
2024-04-29 10:04:32 -05:00
Juan Bustamante 29192dd490 Updating default lifecycle version to 0.19.3
Signed-off-by: Juan Bustamante <jbustamante@vmware.com>
Signed-off-by: Ozzy Osborne <bardweller@gmail.com>
2024-04-29 10:04:50 -04:00
Ozzy Osborne 579608074d Updates from Review comments
Signed-off-by: Ozzy Osborne <bardweller@gmail.com>
2024-04-29 10:04:50 -04:00
Juan Bustamante c3be6a9a9a Updating go version to 1.22.x
Signed-off-by: Juan Bustamante <jbustamante@vmware.com>
Signed-off-by: Ozzy Osborne <bardweller@gmail.com>
2024-04-29 10:04:50 -04:00
dependabot[bot] 8760202076
build(deps): bump the go-dependencies group across 1 directory with 9 updates
Bumps the go-dependencies group with 7 updates in the / directory:

| Package | From | To |
| --- | --- | --- |
| [github.com/Microsoft/go-winio](https://github.com/Microsoft/go-winio) | `0.6.1` | `0.6.2` |
| [github.com/go-git/go-git/v5](https://github.com/go-git/go-git) | `5.11.0` | `5.12.0` |
| [github.com/onsi/gomega](https://github.com/onsi/gomega) | `1.32.0` | `1.33.0` |
| [golang.org/x/crypto](https://github.com/golang/crypto) | `0.21.0` | `0.22.0` |
| [golang.org/x/mod](https://github.com/golang/mod) | `0.16.0` | `0.17.0` |
| [golang.org/x/oauth2](https://github.com/golang/oauth2) | `0.18.0` | `0.19.0` |
| [golang.org/x/sync](https://github.com/golang/sync) | `0.6.0` | `0.7.0` |



Updates `github.com/Microsoft/go-winio` from 0.6.1 to 0.6.2
- [Release notes](https://github.com/Microsoft/go-winio/releases)
- [Commits](https://github.com/Microsoft/go-winio/compare/v0.6.1...v0.6.2)

Updates `github.com/go-git/go-git/v5` from 5.11.0 to 5.12.0
- [Release notes](https://github.com/go-git/go-git/releases)
- [Commits](https://github.com/go-git/go-git/compare/v5.11.0...v5.12.0)

Updates `github.com/onsi/gomega` from 1.32.0 to 1.33.0
- [Release notes](https://github.com/onsi/gomega/releases)
- [Changelog](https://github.com/onsi/gomega/blob/master/CHANGELOG.md)
- [Commits](https://github.com/onsi/gomega/compare/v1.32.0...v1.33.0)

Updates `golang.org/x/crypto` from 0.21.0 to 0.22.0
- [Commits](https://github.com/golang/crypto/compare/v0.21.0...v0.22.0)

Updates `golang.org/x/mod` from 0.16.0 to 0.17.0
- [Commits](https://github.com/golang/mod/compare/v0.16.0...v0.17.0)

Updates `golang.org/x/oauth2` from 0.18.0 to 0.19.0
- [Commits](https://github.com/golang/oauth2/compare/v0.18.0...v0.19.0)

Updates `golang.org/x/sync` from 0.6.0 to 0.7.0
- [Commits](https://github.com/golang/sync/compare/v0.6.0...v0.7.0)

Updates `golang.org/x/sys` from 0.18.0 to 0.19.0
- [Commits](https://github.com/golang/sys/compare/v0.18.0...v0.19.0)

Updates `golang.org/x/term` from 0.18.0 to 0.19.0
- [Commits](https://github.com/golang/term/compare/v0.18.0...v0.19.0)

---
updated-dependencies:
- dependency-name: github.com/Microsoft/go-winio
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: go-dependencies
- dependency-name: github.com/go-git/go-git/v5
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: go-dependencies
- dependency-name: github.com/onsi/gomega
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: go-dependencies
- dependency-name: golang.org/x/crypto
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: go-dependencies
- dependency-name: golang.org/x/mod
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: go-dependencies
- dependency-name: golang.org/x/oauth2
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: go-dependencies
- dependency-name: golang.org/x/sync
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: go-dependencies
- dependency-name: golang.org/x/sys
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: go-dependencies
- dependency-name: golang.org/x/term
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: go-dependencies
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-04-29 13:59:14 +00:00
Natalie Arellano 2c98edd3fa Fix unit
Signed-off-by: Natalie Arellano <narellano@vmware.com>
2024-04-29 09:53:27 -04:00
Juan Bustamante d7c6f0e73e
Merge pull request #2092 from buildpacks/bugfix/jjbustamante/issue-2078
Adding a nop-op when trying to check access for run-image against the daemon
2024-04-26 18:24:43 -05:00
Juan Bustamante e85ddee1f5
Apply suggestions from code review
Co-authored-by: Natalie Arellano <narellano@vmware.com>
Co-authored-by: Ralf Pannemans <ralf.pannemans@googlemail.com>
Signed-off-by: Juan Bustamante <bustamantejj@gmail.com>
Signed-off-by: Juan Bustamante <jbustamante@vmware.com>
2024-04-26 17:15:45 -05:00
Juan Bustamante a9bb1ca905
renaming method interface to CheckReadAccess and adding some tests cases
Signed-off-by: Juan Bustamante <jbustamante@vmware.com>
2024-04-26 17:15:45 -05:00
Juan Bustamante bcc4a5fc2a
Removing unused method
Signed-off-by: Juan Bustamante <jbustamante@vmware.com>
2024-04-26 17:15:44 -05:00
Juan Bustamante 56bcbce94c
Adding Pull Policy into the logic to detect read access
Signed-off-by: Juan Bustamante <jbustamante@vmware.com>
2024-04-26 17:15:44 -05:00
Juan Bustamante b53508619b
refactoring the logic, I moved the check read access to a method in the fetcher
Signed-off-by: Juan Bustamante <jbustamante@vmware.com>
2024-04-26 17:15:44 -05:00
Juan Bustamante 81d9698496
Adding a nop-op when trying to check access for run-image against the daemon
Signed-off-by: Juan Bustamante <jbustamante@vmware.com>
2024-04-26 17:15:44 -05:00
Juan Bustamante 3c6dc12eb8
Adding new implementation for parsing volumen input when running on
darwin. This is important because docker 26 did a refactoring and
safepath.Join is not available for darwin. This is a workaround for now

Signed-off-by: Juan Bustamante <jbustamante@vmware.com>
2024-04-24 12:06:18 -05:00
Juan Bustamante 4163bbf17f
reimplementing the logic to parse volumens, with docker 26 compilation was broken in darwin. Thanks Matej
Signed-off-by: Juan Bustamante <jbustamante@vmware.com>
2024-04-24 08:41:07 -05:00
Juan Bustamante 0daa11f606
migrating to docker 26.0
Signed-off-by: Juan Bustamante <bustamantejj@gmail.com>

Signed-off-by: Natalie Arellano <narellano@vmware.com>
2024-04-22 13:55:19 -05:00
Juan Bustamante 72414e5952
Updating to Docker 26.x, We need to use a development lifecycle version
Signed-off-by: Juan Bustamante <bustamantejj@gmail.com>
2024-04-22 11:43:35 -05:00
Juan Bustamante 12b7d24b06
Merge pull request #2123 from buildpacks/fix/bp-new
Fix pack buildpack new --targets
2024-04-19 16:50:52 -05:00
Juan Bustamante e3977732dd
Merge branch 'main' into fix/bp-new 2024-04-19 16:29:04 -05:00
Natalie Arellano 7949931b04 Add distro test
Signed-off-by: Natalie Arellano <narellano@vmware.com>
2024-04-19 15:22:10 -04:00
Natalie Arellano 39fecde576 Add test
Signed-off-by: Natalie Arellano <narellano@vmware.com>
2024-04-19 15:17:57 -04:00
Natalie Arellano b9cccb713e Add warning when we detect wrong things in buildpack.toml or extension.toml
Signed-off-by: Natalie Arellano <narellano@vmware.com>
2024-04-19 15:04:33 -04:00
Ozzy Osborne 52adfe6eb9 add ephemeral lifecycle image
Signed-off-by: Ozzy Osborne <bardweller@gmail.com>
2024-04-19 13:01:08 -04:00
Juan Bustamante fd32fee04e
Merge branch 'main' into enhancement/jjbustamante/issue-2066-part-1 2024-04-19 08:49:19 -05:00
Juan Bustamante aef63b58b8
Merge pull request #2134 from buildpacks/deps/jjbustamante/update-to-lifecycle-0_19_3
Updating default lifecycle version to 0.19.3
2024-04-18 15:03:47 -05:00
Juan Bustamante 290df91af4
Updating default lifecycle version to 0.19.3
Signed-off-by: Juan Bustamante <jbustamante@vmware.com>
2024-04-18 10:15:47 -05:00
Juan Bustamante 0533daf8e9
Merge pull request #2133 from buildpacks/deps/jjbustamante/update-to-go-1-22
Updating to go 1.22
2024-04-18 09:39:42 -05:00
Juan Bustamante 5e6db32f1f
Updating go version to 1.22.x
Signed-off-by: Juan Bustamante <jbustamante@vmware.com>
2024-04-18 09:15:43 -05:00
Natalie Arellano 3343b9b0ac Pull run image using digest reference in analyzed.toml (not image name from extensions)
Signed-off-by: Natalie Arellano <narellano@vmware.com>
2024-04-16 16:35:53 -04:00
Juan Bustamante 557527dec5
Removing experimental configuration for extensions starting with API version 0.13
Signed-off-by: Juan Bustamante <jbustamante@vmware.com>
2024-04-15 17:42:07 -05:00
Natalie Arellano 5aa2092365
Merge branch 'main' into fix/bp-new 2024-04-09 13:11:57 -04:00
Natalie Arellano 0bba81c160 Fix https://github.com/buildpacks/pack/issues/2120
Signed-off-by: Natalie Arellano <narellano@vmware.com>
2024-04-09 13:03:45 -04:00
Juan Bustamante 5b8da44591
Merge pull request #2117 from buildpacks/enhancement/jjbustamante/issue-2113
Exposing the logic for processing the Docker Context to be public
2024-04-09 09:53:03 -05:00
Juan Bustamante 70d3f4df6b
Merge branch 'main' into enhancement/jjbustamante/issue-2113 2024-04-09 09:33:30 -05:00
Juan Bustamante 969ff6c0cb
Merge pull request #2022 from Pratham1812/alpha/patch
Update run image metadata when --run-image is provided
2024-04-09 09:31:58 -05:00
Juan Bustamante dfe0e73d73
renaming acceptance test helper method for consistency, adding feedback from Natalie
Signed-off-by: Juan Bustamante <jbustamante@vmware.com>
2024-04-05 16:08:15 -05:00
Juan Bustamante 1122cab269
- Fixing formatting issues
- Adding acceptance tests

Signed-off-by: Juan Bustamante <jbustamante@vmware.com>
2024-04-05 12:57:12 -05:00
Pratham Agarwal 81e50d5600
fix:made changes as per comments
Signed-off-by: Pratham Agarwal <agarwalpratham1812@gmail.com>
2024-04-05 12:35:46 -05:00
Pratham Agarwal fdbbe2b209
fix:minor changes
Signed-off-by: Pratham Agarwal <agarwalpratham1812@gmail.com>
2024-04-05 12:31:38 -05:00
Pratham Agarwal e778646e64
fix:fixed tests
Signed-off-by: Pratham Agarwal <agarwalpratham1812@gmail.com>
2024-04-05 12:24:17 -05:00
Pratham Agarwal d8ea58810b
resolve issue #1964
Signed-off-by: Pratham Agarwal <agarwalpratham1812@gmail.com>
2024-04-05 12:18:41 -05:00
Juan Bustamante 434df0ea71
Merge branch 'main' into enhancement/jjbustamante/issue-2113 2024-04-04 18:32:03 -05:00
Juan Bustamante 6a9e3d193a
Merge pull request #2118 from buildpacks/revert/jjbustamante/issue-1779
Reverting the MAC - Address flag code (for now)
2024-04-04 18:30:06 -05:00
Juan Bustamante 3d9fa30472
Reverting the code because we can't update the docker version to 25.0 in the ci
Signed-off-by: Juan Bustamante <jbustamante@vmware.com>
2024-04-04 18:01:13 -05:00
Juan Bustamante cafced7884
Exposing the logic for processing the Docker Context to be public
Signed-off-by: Juan Bustamante <jbustamante@vmware.com>
2024-04-04 09:06:09 -05:00
Juan Bustamante 6fc092be64
Merge pull request #2096 from buildpacks/dependabot/go_modules/tools/google.golang.org/protobuf-1.33.0
build(deps): bump google.golang.org/protobuf from 1.28.0 to 1.33.0 in /tools
2024-03-27 21:22:56 +01:00
dependabot[bot] 2e41d82f14
build(deps): bump google.golang.org/protobuf in /tools
Bumps google.golang.org/protobuf from 1.28.0 to 1.33.0.

---
updated-dependencies:
- dependency-name: google.golang.org/protobuf
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-03-27 15:53:42 +00:00
Juan Bustamante 9dafd73017
Merge pull request #2107 from a1flecke/add-noble-ppa
Release Noble Numbat
2024-03-27 16:25:04 +01:00
Juan Bustamante c2fcc53d96
Merge branch 'main' into add-noble-ppa 2024-03-27 16:04:27 +01:00
Juan Bustamante ad6673da4d
Merge pull request #2108 from buildpacks/dependabot/go_modules/go-dependencies-527e73e42b
build(deps): bump the go-dependencies group with 3 updates
2024-03-27 15:35:12 +01:00
Aaron Fleckenstein f3f4fcb5da Release Noble Numbat
- Update Github workflows to release a package for Ubuntu 22.04 (Noble Numbat)

Signed-off-by: Aaron Fleckenstein <aaron.fleckenstein@daveramsey.com>
2024-03-27 06:31:45 -05:00
dependabot[bot] 29e248d000
build(deps): bump the go-dependencies group with 3 updates
Bumps the go-dependencies group with 3 updates: [github.com/google/go-containerregistry](https://github.com/google/go-containerregistry), [github.com/onsi/gomega](https://github.com/onsi/gomega) and [golang.org/x/oauth2](https://github.com/golang/oauth2).


Updates `github.com/google/go-containerregistry` from 0.19.0 to 0.19.1
- [Release notes](https://github.com/google/go-containerregistry/releases)
- [Changelog](https://github.com/google/go-containerregistry/blob/main/.goreleaser.yml)
- [Commits](https://github.com/google/go-containerregistry/compare/v0.19.0...v0.19.1)

Updates `github.com/onsi/gomega` from 1.31.1 to 1.32.0
- [Release notes](https://github.com/onsi/gomega/releases)
- [Changelog](https://github.com/onsi/gomega/blob/master/CHANGELOG.md)
- [Commits](https://github.com/onsi/gomega/compare/v1.31.1...v1.32.0)

Updates `golang.org/x/oauth2` from 0.17.0 to 0.18.0
- [Commits](https://github.com/golang/oauth2/compare/v0.17.0...v0.18.0)

---
updated-dependencies:
- dependency-name: github.com/google/go-containerregistry
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: go-dependencies
- dependency-name: github.com/onsi/gomega
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: go-dependencies
- dependency-name: golang.org/x/oauth2
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: go-dependencies
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-03-27 00:21:26 +00:00
Juan Bustamante 328b879af1
Merge pull request #2105 from buildpacks/dependabot/go_modules/github.com/docker/docker-25.0.5incompatible
build(deps): bump github.com/docker/docker from 25.0.3+incompatible to 25.0.5+incompatible
2024-03-27 01:19:55 +01:00
dependabot[bot] c1e29ba213
build(deps): bump github.com/docker/docker
Bumps [github.com/docker/docker](https://github.com/docker/docker) from 25.0.3+incompatible to 25.0.5+incompatible.
- [Release notes](https://github.com/docker/docker/releases)
- [Commits](https://github.com/docker/docker/compare/v25.0.3...v25.0.5)

---
updated-dependencies:
- dependency-name: github.com/docker/docker
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-03-26 22:28:42 +00:00
Juan Bustamante 52145f4c45
Merge pull request #2097 from buildpacks/dependabot/go_modules/google.golang.org/protobuf-1.33.0
build(deps): bump google.golang.org/protobuf from 1.32.0 to 1.33.0
2024-03-26 23:27:39 +01:00
dependabot[bot] 71c2b265b8
build(deps): bump google.golang.org/protobuf from 1.32.0 to 1.33.0
Bumps google.golang.org/protobuf from 1.32.0 to 1.33.0.

---
updated-dependencies:
- dependency-name: google.golang.org/protobuf
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-03-26 22:05:26 +00:00
Juan Bustamante 55086ca041
Merge pull request #2100 from mstergianis/fix-extldflags-quoting
Quotes extldflags in the Makefile
2024-03-26 22:50:21 +01:00
Juan Bustamante b64adbd645
Merge pull request #2106 from dgannon991/contribfest/fix-readme-links
Fixed broken links within the readme
2024-03-26 22:43:15 +01:00
David ace7b0f6db
Fix broken links within readme
Signed-off-by: David <19214156+dgannon991@users.noreply.github.com>
2024-03-26 20:34:38 +00:00
Michael Stergianis c7587738e1
Quotes extldflags in the Makefile
I was using multiple space separated LDFLAGS when building, for example
LDFLAGS="-Wl,-O1 -Wl,--sort-common" make build
which appears to correspond with recommendations from the go project
- in the [golang link docs](https://pkg.go.dev/cmd/link)
- and [this issue](https://github.com/golang/go/issues/6234)

Signed-off-by: Michael Stergianis <mstergianis@vmware.com>
2024-03-16 18:09:02 -04:00
Juan Bustamante 95b5aef857
Merge pull request #2093 from tgolang/main
chore: fix comment
2024-03-12 07:32:52 -05:00
tgolang 647f447b96 chore: fix comment
Signed-off-by: tgolang <seekseat@aliyun.com>
2024-03-12 16:01:21 +08:00
Juan Bustamante ff3ad2b7d3
Merge pull request #2090 from buildpacks/dependabot/github_actions/buildpacks/github-actions-5.5.4
build(deps): bump buildpacks/github-actions from 5.5.2 to 5.5.4
2024-03-08 11:06:28 -05:00
dependabot[bot] 629f64cb4f
build(deps): bump buildpacks/github-actions from 5.5.2 to 5.5.4
Bumps [buildpacks/github-actions](https://github.com/buildpacks/github-actions) from 5.5.2 to 5.5.4.
- [Release notes](https://github.com/buildpacks/github-actions/releases)
- [Commits](https://github.com/buildpacks/github-actions/compare/v5.5.2...v5.5.4)

---
updated-dependencies:
- dependency-name: buildpacks/github-actions
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-03-08 15:49:15 +00:00
Juan Bustamante 2a15554749
Merge pull request #2023 from Parthiba-Hazra/retag
Add an option to retag rather than replacing the target image while rebasing
2024-03-08 10:45:24 -05:00
Juan Bustamante ced704fa85
Merge branch 'main' into retag 2024-03-08 09:49:46 -05:00
Juan Bustamante 667bf4f625
Merge pull request #2089 from buildpacks/dependabot/go_modules/go-dependencies-8d9ff2ce2a
build(deps): bump the go-dependencies group with 5 updates
2024-03-08 09:45:36 -05:00
Juan Bustamante a584b7d9b9
Merge branch 'main' into retag 2024-03-06 08:10:08 -05:00
dependabot[bot] 31b0ec3f42
build(deps): bump the go-dependencies group with 5 updates
Bumps the go-dependencies group with 5 updates:

| Package | From | To |
| --- | --- | --- |
| [github.com/gdamore/tcell/v2](https://github.com/gdamore/tcell) | `2.7.1` | `2.7.4` |
| [golang.org/x/crypto](https://github.com/golang/crypto) | `0.20.0` | `0.21.0` |
| [golang.org/x/mod](https://github.com/golang/mod) | `0.15.0` | `0.16.0` |
| [golang.org/x/sys](https://github.com/golang/sys) | `0.17.0` | `0.18.0` |
| [golang.org/x/term](https://github.com/golang/term) | `0.17.0` | `0.18.0` |


Updates `github.com/gdamore/tcell/v2` from 2.7.1 to 2.7.4
- [Release notes](https://github.com/gdamore/tcell/releases)
- [Changelog](https://github.com/gdamore/tcell/blob/main/CHANGESv2.md)
- [Commits](https://github.com/gdamore/tcell/compare/v2.7.1...v2.7.4)

Updates `golang.org/x/crypto` from 0.20.0 to 0.21.0
- [Commits](https://github.com/golang/crypto/compare/v0.20.0...v0.21.0)

Updates `golang.org/x/mod` from 0.15.0 to 0.16.0
- [Commits](https://github.com/golang/mod/compare/v0.15.0...v0.16.0)

Updates `golang.org/x/sys` from 0.17.0 to 0.18.0
- [Commits](https://github.com/golang/sys/compare/v0.17.0...v0.18.0)

Updates `golang.org/x/term` from 0.17.0 to 0.18.0
- [Commits](https://github.com/golang/term/compare/v0.17.0...v0.18.0)

---
updated-dependencies:
- dependency-name: github.com/gdamore/tcell/v2
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: go-dependencies
- dependency-name: golang.org/x/crypto
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: go-dependencies
- dependency-name: golang.org/x/mod
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: go-dependencies
- dependency-name: golang.org/x/sys
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: go-dependencies
- dependency-name: golang.org/x/term
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: go-dependencies
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-03-04 22:38:22 +00:00
Juan Bustamante c36dcf8b66
Merge pull request #2088 from AidanDelaney/fix/2087-getBestRunMirror
Return an image even if inaccessible
2024-03-04 11:09:01 -05:00
Aidan Delaney 0fdda16749 Return an image even if inaccessible
When all run images are inaccessible, still return a run image.  Pack
will then provide a better error message to the end-user.

Signed-off-by: Aidan Delaney <adelaney21@bloomberg.net>
2024-03-04 07:21:06 +00:00
Juan Bustamante 1e41857483
Merge pull request #2085 from valen-mascarenhas14/v-dev
Add pack cli support for IBM ppc64le
2024-03-01 11:58:54 -05:00
valen-mascarenhas14 d579a39358 Add pack cli support for IBM ppc64le
Signed-off-by: valen-mascarenhas14 <valen.mascarenhas@ibm.com>
2024-03-01 21:17:07 +05:30
Juan Bustamante ea5a48ac72
Merge pull request #2081 from joshwlewis/support-empty-stacks
Add validation support for empty/nil `[[stacks]]`
2024-02-28 17:13:31 -05:00
Juan Bustamante a0bb25ea5b
Merge branch 'main' into support-empty-stacks 2024-02-28 16:45:54 -05:00
Juan Bustamante 3356686e25
Merge pull request #2082 from buildpacks/dependabot/go_modules/go-dependencies-0ae3d4a4b9
build(deps): bump the go-dependencies group with 2 updates
2024-02-28 15:22:37 -05:00
dependabot[bot] 35fd5f5e2d
build(deps): bump the go-dependencies group with 2 updates
Bumps the go-dependencies group with 2 updates: [github.com/gdamore/tcell/v2](https://github.com/gdamore/tcell) and [golang.org/x/crypto](https://github.com/golang/crypto).


Updates `github.com/gdamore/tcell/v2` from 2.7.0 to 2.7.1
- [Release notes](https://github.com/gdamore/tcell/releases)
- [Changelog](https://github.com/gdamore/tcell/blob/main/CHANGESv2.md)
- [Commits](https://github.com/gdamore/tcell/compare/v2.7.0...v2.7.1)

Updates `golang.org/x/crypto` from 0.19.0 to 0.20.0
- [Commits](https://github.com/golang/crypto/compare/v0.19.0...v0.20.0)

---
updated-dependencies:
- dependency-name: github.com/gdamore/tcell/v2
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: go-dependencies
- dependency-name: golang.org/x/crypto
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: go-dependencies
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-02-26 22:18:04 +00:00
Josh W Lewis 7a5d93b2c7
Fix incorrect append argument
Signed-off-by: Josh W Lewis <josh.lewis@salesforce.com>
2024-02-26 14:18:34 -06:00
Josh W Lewis 03cfdef3d0
Assume non-meta buildpacks without stacks use any stack
Signed-off-by: Josh W Lewis <josh.lewis@salesforce.com>
2024-02-26 13:45:01 -06:00
Josh W Lewis 85e9682091
Add a test for non-meta buildpack with empty stacks
Signed-off-by: Josh W Lewis <josh.lewis@salesforce.com>
2024-02-26 13:42:11 -06:00
Juan Bustamante 2df4445a47
Merge pull request #2074 from buildpacks/dependabot/go_modules/github.com/opencontainers/image-spec-1.1.0
build(deps): bump github.com/opencontainers/image-spec from 1.1.0-rc5 to 1.1.0
2024-02-21 07:46:44 -05:00
dependabot[bot] b6d622e5aa
build(deps): bump github.com/opencontainers/image-spec
Bumps [github.com/opencontainers/image-spec](https://github.com/opencontainers/image-spec) from 1.1.0-rc5 to 1.1.0.
- [Release notes](https://github.com/opencontainers/image-spec/releases)
- [Changelog](https://github.com/opencontainers/image-spec/blob/main/RELEASES.md)
- [Commits](https://github.com/opencontainers/image-spec/compare/v1.1.0-rc5...v1.1.0)

---
updated-dependencies:
- dependency-name: github.com/opencontainers/image-spec
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-02-19 22:49:52 +00:00
github-bot 06e3112b10 Merge remote-tracking branch 'origin/release/0.33.2' 2024-02-14 23:10:08 +00:00
Juan Bustamante f2cffc4ab6
Merge pull request #2069 from buildpacks/deps/jjbustamante/deps-0.33.2
Bump docker/docker v25 and lifecycle 0.18.5
2024-02-14 18:09:52 -05:00
Juan Bustamante ffd707e3d4
bumping docker/cli to v25
Signed-off-by: Juan Bustamante <jbustamante@vmware.com>
2024-02-14 17:45:43 -05:00
Juan Bustamante 84564e8e08
Merge pull request #2058 from buildpacks/dependabot/go_modules/github.com/docker/cli-25.0.3incompatible
build(deps): bump github.com/docker/cli from 24.0.7+incompatible to 25.0.3+incompatible
2024-02-14 17:40:19 -05:00
Juan Bustamante e2ce0ad322
bump docker/docker v25, lifecycle 0.18.5 and removing buildkit pin
Signed-off-by: Juan Bustamante <jbustamante@vmware.com>
2024-02-14 17:10:22 -05:00
dependabot[bot] 8c63233347
build(deps): bump github.com/docker/cli
Bumps [github.com/docker/cli](https://github.com/docker/cli) from 24.0.7+incompatible to 25.0.3+incompatible.
- [Commits](https://github.com/docker/cli/compare/v24.0.7...v25.0.3)

---
updated-dependencies:
- dependency-name: github.com/docker/cli
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-02-14 21:44:52 +00:00
Juan Bustamante 1ede7ea0c2
Merge pull request #2067 from buildpacks/deps/jjbustamante/update-to-lifecycle-0_18_5
Bump default lifecycle version & lifecycle library version 0.18.5
2024-02-14 16:41:21 -05:00
Juan Bustamante 5805e69f2d
Update to version 0.18.5
Signed-off-by: Juan Bustamante <jbustamante@vmware.com>
2024-02-14 16:11:25 -05:00
Juan Bustamante f3b49cb5b3
Merge pull request #2062 from matejvasek/update-docker-v25
Update docker to v25
2024-02-14 16:03:58 -05:00
Matej Vašek b38a8d9f1a
chore: update docker to v25
Signed-off-by: Matej Vašek <mvasek@redhat.com>
2024-02-14 03:23:09 +01:00
Juan Bustamante ded78f30bd
Merge pull request #2042 from colincasey/fix_1922_silently_ignoring_keys_in_project_toml
Warn if project.toml contains keys not supported by schema
2024-02-12 09:45:37 -05:00
Colin Casey bfaafe9aaf
Merge branch 'main' into fix_1922_silently_ignoring_keys_in_project_toml 2024-02-10 11:01:25 -04:00
Colin Casey da37994a41 Use logger with ReadProjectDescriptor
Signed-off-by: Colin Casey <casey.colin@gmail.com>
2024-02-09 23:07:13 -04:00
Juan Bustamante 5cbc93efc4
Merge pull request #2056 from buildpacks/dependabot/go_modules/go-dependencies-c1d307fc42
build(deps): bump the go-dependencies group with 6 updates
2024-02-08 17:02:43 -05:00
dependabot[bot] 42bc57d0f5
build(deps): bump the go-dependencies group with 6 updates
Bumps the go-dependencies group with 6 updates:

| Package | From | To |
| --- | --- | --- |
| [github.com/google/go-containerregistry](https://github.com/google/go-containerregistry) | `0.18.0` | `0.19.0` |
| [golang.org/x/crypto](https://github.com/golang/crypto) | `0.18.0` | `0.19.0` |
| [golang.org/x/mod](https://github.com/golang/mod) | `0.14.0` | `0.15.0` |
| [golang.org/x/oauth2](https://github.com/golang/oauth2) | `0.16.0` | `0.17.0` |
| [golang.org/x/sys](https://github.com/golang/sys) | `0.16.0` | `0.17.0` |
| [golang.org/x/term](https://github.com/golang/term) | `0.16.0` | `0.17.0` |


Updates `github.com/google/go-containerregistry` from 0.18.0 to 0.19.0
- [Release notes](https://github.com/google/go-containerregistry/releases)
- [Changelog](https://github.com/google/go-containerregistry/blob/main/.goreleaser.yml)
- [Commits](https://github.com/google/go-containerregistry/compare/v0.18.0...v0.19.0)

Updates `golang.org/x/crypto` from 0.18.0 to 0.19.0
- [Commits](https://github.com/golang/crypto/compare/v0.18.0...v0.19.0)

Updates `golang.org/x/mod` from 0.14.0 to 0.15.0
- [Commits](https://github.com/golang/mod/compare/v0.14.0...v0.15.0)

Updates `golang.org/x/oauth2` from 0.16.0 to 0.17.0
- [Commits](https://github.com/golang/oauth2/compare/v0.16.0...v0.17.0)

Updates `golang.org/x/sys` from 0.16.0 to 0.17.0
- [Commits](https://github.com/golang/sys/compare/v0.16.0...v0.17.0)

Updates `golang.org/x/term` from 0.16.0 to 0.17.0
- [Commits](https://github.com/golang/term/compare/v0.16.0...v0.17.0)

---
updated-dependencies:
- dependency-name: github.com/google/go-containerregistry
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: go-dependencies
- dependency-name: golang.org/x/crypto
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: go-dependencies
- dependency-name: golang.org/x/mod
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: go-dependencies
- dependency-name: golang.org/x/oauth2
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: go-dependencies
- dependency-name: golang.org/x/sys
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: go-dependencies
- dependency-name: golang.org/x/term
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: go-dependencies
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-02-08 21:41:31 +00:00
Juan Bustamante f983ad826e
Merge pull request #2028 from Parthiba-Hazra/MAC-address
feat: added a mac-address flag to build option, so that user can manually set the MAC-address.
2024-02-08 16:06:20 -05:00
Juan Bustamante a2573b01e5
Merge branch 'main' into MAC-address 2024-02-08 15:45:16 -05:00
Juan Bustamante 8ed450d44d
Merge pull request #2049 from buildpacks/dependabot/github_actions/buildpacks/github-actions-5.5.2
build(deps): bump buildpacks/github-actions from 5.5.1 to 5.5.2
2024-02-07 18:31:10 -05:00
dependabot[bot] 6a83c5c83e
build(deps): bump buildpacks/github-actions from 5.5.1 to 5.5.2
Bumps [buildpacks/github-actions](https://github.com/buildpacks/github-actions) from 5.5.1 to 5.5.2.
- [Release notes](https://github.com/buildpacks/github-actions/releases)
- [Commits](https://github.com/buildpacks/github-actions/compare/v5.5.1...v5.5.2)

---
updated-dependencies:
- dependency-name: buildpacks/github-actions
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-02-07 22:18:49 +00:00
Juan Bustamante d15c3e93fb
Updating pack version for acceptance tests, it was moved to 0.34.0
Signed-off-by: Juan Bustamante <bustamantejj@gmail.com>
2024-02-07 16:40:24 -05:00
Juan Bustamante 18b172fb74
running make format
Signed-off-by: Juan Bustamante <bustamantejj@gmail.com>
2024-02-07 16:31:45 -05:00
Juan Bustamante cc4647d49c
Merge pull request #2043 from colincasey/1500_separate_suggested_and_trusted_builders
Separate suggested builders from default trusted builders
2024-02-07 16:22:58 -05:00
Juan Bustamante 214a376920
Update pack.go
Signed-off-by: Juan Bustamante <bustamantejj@gmail.com>
2024-02-07 16:07:01 -05:00
Juan Bustamante ec71d3c090
Merge branch 'main' into fix_1922_silently_ignoring_keys_in_project_toml
Signed-off-by: Juan Bustamante <juan.bustamante@broadcom.com>
2024-02-07 16:03:43 -05:00
Juan Bustamante bdaaead7ba
Merge branch 'main' into 1500_separate_suggested_and_trusted_builders 2024-02-07 16:02:07 -05:00
Colin Casey 7f2d731393
Merge branch 'main' into 1500_separate_suggested_and_trusted_builders 2024-02-06 12:33:05 -04:00
Colin Casey 96ab9c9886
Merge branch 'main' into fix_1922_silently_ignoring_keys_in_project_toml 2024-02-05 09:33:02 -04:00
Colin Casey 9841c430f7
Merge branch 'main' into fix_1922_silently_ignoring_keys_in_project_toml 2024-02-02 16:15:37 -04:00
Colin Casey 01cf0d325e
Merge branch 'main' into 1500_separate_suggested_and_trusted_builders 2024-02-02 16:15:17 -04:00
Colin Casey 37de02ab9c Removed `heroku/builder:20` from suggested builders
Signed-off-by: Colin Casey <casey.colin@gmail.com>
2024-02-02 15:29:41 -04:00
Parthiba-Hazra d7559e2440 add test cases for new changes in Rebase function
Signed-off-by: Parthiba-Hazra <parthibahazra@gmail.com>
2024-02-02 21:00:32 +05:30
Parthiba-Hazra c6749c7b94 fix merge conflicts
Signed-off-by: Parthiba-Hazra <parthibahazra@gmail.com>

update documentation for PreviousImage filed in RebaseOptions

Signed-off-by: Parthiba-Hazra <parthibahazra@gmail.com>

update docs

Signed-off-by: Parthiba-Hazra <parthibahazra@gmail.com>
2024-02-02 17:55:52 +05:30
Colin Casey 1b68d1261e Separate suggested builders from default trusted builders
Signed-off-by: Colin Casey <casey.colin@gmail.com>
2024-01-30 15:12:55 -04:00
Colin Casey 5b1219d6c5 Increase test coverage
Signed-off-by: Colin Casey <casey.colin@gmail.com>
2024-01-30 12:52:59 -04:00
Colin Casey 77f7915e40 Limit acceptance to current version and up
Signed-off-by: Colin Casey <casey.colin@gmail.com>
2024-01-30 12:34:47 -04:00
Colin Casey f662318bb6 Warn if project.toml contains keys not supported by schema
- also notifies when the schema version is missing and defaults to `0.1`

Fixes #1922

Signed-off-by: Colin Casey <casey.colin@gmail.com>
2024-01-30 11:42:00 -04:00
Parthiba-Hazra b7d6bc0cb3 Renaming the `--tag` flag to `--previous-image` to better reflect its purpose.
If previous-image flag set then workingImage will be based off of opts.PreviousImage in the rebaser.Rebase

Signed-off-by: Parthiba-Hazra <parthibahazra@gmail.com>

fix merge conflicts

Signed-off-by: Parthiba-Hazra <parthibahazra@gmail.com>

resolve merge conflict

Signed-off-by: Parthiba-Hazra <parthibahazra@gmail.com>
2024-01-29 20:45:02 +05:30
Juan Bustamante e1a4d0096b Moves lifecycle package to phase
Signed-off-by: Juan Bustamante <jbustamante@vmware.com>
2024-01-29 20:41:00 +05:30
Juan Bustamante ef68692d56 adding feedback from review
Signed-off-by: Juan Bustamante <jbustamante@vmware.com>
2024-01-29 20:40:07 +05:30
Juan Bustamante c571998ee9 Implementing RFC-0123
During builder creation, end-users can provide the flag `--flatten` with
the buildpacks they want to put in one layer.

Signed-off-by: Juan Bustamante <jbustamante@vmware.com>
2024-01-29 20:39:35 +05:30
Rizul Gupta ad4874858b Update internal/commands/rebase.go
Co-authored-by: Natalie Arellano <narellano@vmware.com>
Signed-off-by: Rizul Gupta <112455393+rizul2108@users.noreply.github.com>
2024-01-29 20:35:47 +05:30
Rizul Gupta da19388a0b change help text of --publish
Signed-off-by: Rizul Gupta <mail2rizul@gmail.com>
2024-01-29 20:35:46 +05:30
Parthiba-Hazra f46c54147c add an option to retag rather than replacing the target image while rebasing
Signed-off-by: Parthiba-Hazra <parthibahazra@gmail.com>

add an option to "retag" rather than replacing the target image while rebasing

Signed-off-by: Parthiba-Hazra <parthibahazra@gmail.com>
2024-01-29 20:31:08 +05:30
Parthiba-Hazra 3b1544c028 feat: added a mac-address flag to build option to set the value to the docker config
Signed-off-by: Parthiba-Hazra <parthibahazra@gmail.com>

fix failed workflow

Signed-off-by: Parthiba-Hazra <parthibahazra@gmail.com>
2024-01-20 19:09:32 +05:30
291 changed files with 12883 additions and 2524 deletions

View File

@ -17,7 +17,9 @@ jobs:
- name: Set up go
uses: actions/setup-go@v5
with:
go-version: "1.21"
go-version: 1.24
check-latest: true
go-version-file: 'go.mod'
- name: Set up go env
run: |
echo "GOPATH=$(go env GOPATH)" >> $GITHUB_ENV

View File

@ -20,10 +20,11 @@ jobs:
strategy:
fail-fast: false
matrix:
config: [macos, linux, windows-lcow, windows-wcow]
config: [macos, linux, windows-lcow]
include:
- config: macos
os: macos
# since macos-14 the latest runner is arm64
os: macos-arm64
runner: macos-latest
no_docker: "true"
pack_bin: pack
@ -37,11 +38,6 @@ jobs:
runner: [self-hosted, windows, lcow]
no_docker: "false"
pack_bin: pack.exe
- config: windows-wcow
os: windows
runner: [windows-2019]
no_docker: "false"
pack_bin: pack.exe
runs-on: ${{ matrix.runner }}
env:
PACK_BIN: ${{ matrix.pack_bin }}
@ -74,8 +70,8 @@ jobs:
- name: Set up go
uses: actions/setup-go@v5
with:
go-version: "1.21"
check-latest: true
go-version-file: 'go.mod'
- name: Set up go env for Unix
if: runner.os != 'Windows'
run: |
@ -90,36 +86,6 @@ jobs:
shell: powershell
- name: Verify
run: make verify
- name: Register runner IP
if: matrix.config == 'windows-wcow'
shell: powershell
run: |
# Get IP from default gateway interface
$IPAddress=(Get-NetIPAddress -InterfaceAlias ((Get-NetRoute "0.0.0.0/0").InterfaceAlias) -AddressFamily IPv4)[0].IPAddress
# Allow container-to-host registry traffic (from public interface, to the same interface)
New-NetfirewallRule -DisplayName test-registry -LocalAddress $IPAddress -RemoteAddress $IPAddress
# create or update daemon config to allow host as insecure-registry
$config=@{}
if (Test-Path C:\ProgramData\docker\config\daemon.json) {
$config=(Get-Content C:\ProgramData\docker\config\daemon.json | ConvertFrom-json)
}
$config | Add-Member -Force -Name "insecure-registries" -value @("$IPAddress/32") -MemberType NoteProperty
ConvertTo-json $config | Out-File -Encoding ASCII C:\ProgramData\docker\config\daemon.json
Restart-Service docker
# dump docker info for auditing
docker version
docker info
# Modify etc\hosts to include runner IP
$IPAddress=(Get-NetIPAddress -InterfaceAlias ((Get-NetRoute "0.0.0.0/0").InterfaceAlias) -AddressFamily IPv4)[0].IPAddress
"# Modified by CNB: https://github.com/buildpacks/ci/tree/main/gh-runners/windows
${IPAddress} host.docker.internal
${IPAddress} gateway.docker.internal
" | Out-File -Filepath C:\Windows\System32\drivers\etc\hosts -Encoding utf8
- name: Test
env:
TEST_COVERAGE: 1
@ -157,7 +123,6 @@ jobs:
PACK_BUILD: ${{ github.run_number }}
shell: powershell
- uses: actions/upload-artifact@v4
if: matrix.config != 'windows-lcow'
with:
name: pack-${{ matrix.os }}
path: out/${{ env.PACK_BIN }}
@ -170,12 +135,16 @@ jobs:
- name: linux-arm64
goarch: arm64
goos: linux
- name: macos-arm64
goarch: arm64
- name: macos
# since macos-14 default runner is arm, we need to build for intel architecture later
goarch: amd64
goos: darwin
- name: linux-s390x
goarch: s390x
goos: linux
- name: linux-ppc64le
goarch: ppc64le
goos: linux
needs: test
runs-on: ubuntu-latest
steps:
@ -183,8 +152,8 @@ jobs:
- name: Set up go
uses: actions/setup-go@v5
with:
go-version: "1.21"
check-latest: true
go-version-file: 'go.mod'
- name: Build
run: |
[[ $GITHUB_REF =~ ^refs\/heads\/release/(.*)$ ]] && version=${BASH_REMATCH[1]} || version=0.0.0
@ -239,6 +208,12 @@ jobs:
filename=pack-v${{ env.PACK_VERSION }}-linux-s390x.tgz
tar -C pack-linux-s390x -vzcf $filename pack
shasum -a 256 $filename > $filename.sha256
- name: Package artifacts - linux-ppc64le
run: |
chmod +x pack-linux-ppc64le/pack
filename=pack-v${{ env.PACK_VERSION }}-linux-ppc64le.tgz
tar -C pack-linux-ppc64le -vzcf $filename pack
shasum -a 256 $filename > $filename.sha256
- name: Package artifacts - macos-arm64
run: |
chmod +x pack-macos-arm64/pack
@ -278,7 +253,7 @@ jobs:
milestone: ${{ env.PACK_MILESTONE }}
- name: Create Pre-Release
if: ${{ env.PACK_VERSION != env.PACK_MILESTONE }}
uses: softprops/action-gh-release@v1
uses: softprops/action-gh-release@v2
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
@ -314,6 +289,11 @@ jobs:
```bash
(curl -sSL "https://github.com/buildpacks/pack/releases/download/v${{ env.PACK_VERSION }}/pack-v${{ env.PACK_VERSION }}-linux-s390x.tgz" | sudo tar -C /usr/local/bin/ --no-same-owner -xzv pack)
```
##### PPC64LE
```bash
(curl -sSL "https://github.com/buildpacks/pack/releases/download/v${{ env.PACK_VERSION }}/pack-v${{ env.PACK_VERSION }}-linux-ppc64le.tgz" | sudo tar -C /usr/local/bin/ --no-same-owner -xzv pack)
```
#### MacOS
@ -354,7 +334,7 @@ jobs:
- name: Create Beta Release
if: ${{ env.PACK_VERSION == env.PACK_MILESTONE }}
uses: softprops/action-gh-release@v1
uses: softprops/action-gh-release@v2
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:

View File

@ -70,9 +70,9 @@ jobs:
fi
- name: Scan latest release image
id: scan-image
uses: anchore/scan-action@v3
uses: anchore/scan-action@v6
with:
image: buildpacksio/pack:${{ steps.read-go.outputs.latest-release-version }}
image: docker.io/buildpacksio/pack:${{ steps.read-go.outputs.latest-release-version }}
- name: Create issue if needed
if: failure() && steps.scan-image.outcome == 'failure'
env:
@ -91,7 +91,7 @@ jobs:
search_output=$(gh issue list --search "$title" --label "$label")
GITHUB_WORKFLOW_URL=https://github.com/$GITHUB_REPOSITORY/actions/runs/$GITHUB_RUN_ID
body="Latest buildpacksio/pack v${{ steps.read-go.outputs.latest-release-version }} triggered CVE(s) from Grype. For further details, see: $GITHUB_WORKFLOW_URL"
body="Latest docker.io/buildpacksio/pack v${{ steps.read-go.outputs.latest-release-version }} triggered CVE(s) from Grype. For further details, see: $GITHUB_WORKFLOW_URL"
if [ -z "${search_output// }" ]
then

View File

@ -46,8 +46,8 @@ jobs:
- name: Set up go
uses: actions/setup-go@v5
with:
go-version: "1.21"
check-latest: true
go-version-file: 'go.mod'
- name: Set up go env
run: |
echo "GOPATH=$(go env GOPATH)" >> $GITHUB_ENV
@ -59,3 +59,4 @@ jobs:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
make acceptance
docker network prune

View File

@ -11,64 +11,6 @@ on:
required: true
jobs:
pack-cli:
runs-on: ubuntu-latest
env:
PACKAGE_NAME: pack-cli
steps:
- uses: actions/checkout@v4
- name: Determine version
uses: actions/github-script@v7
id: version
with:
result-encoding: string
script: |
let payload = context.payload;
let tag = (payload.release && payload.release.tag_name) || (payload.inputs && payload.inputs.tag_name);
if (!tag) {
throw "ERROR: unable to determine tag"
}
return tag.replace(/^v/, '');
- name: Set PACK_VERSION
run: echo "PACK_VERSION=${{ steps.version.outputs.result }}" >> $GITHUB_ENV
shell: bash
- name: Setup working dir
run: |
mkdir -p ${{ env.PACKAGE_NAME }}
cp .github/workflows/delivery/archlinux/${{ env.PACKAGE_NAME }}/PKGBUILD ${{ env.PACKAGE_NAME }}/PKGBUILD
- name: Metadata
id: metadata
run: |
url=https://github.com/buildpacks/pack/archive/v${{ env.PACK_VERSION }}.tar.gz
filename=pack-${{ env.PACK_VERSION }}.tgz
fullpath=`pwd`/$filename
curl -sSL "$url" -o "$fullpath"
sha512=$(sha512sum "$fullpath" | awk '{ print $1 }')
echo "url=$url" >> $GITHUB_OUTPUT
echo "sha512=$sha512" >> $GITHUB_OUTPUT
- name: Fill PKGBUILD
uses: cschleiden/replace-tokens@v1
with:
files: ${{ env.PACKAGE_NAME }}/PKGBUILD
tokenPrefix: '{{'
tokenSuffix: '}}'
env:
PACK_VERSION: ${{ env.PACK_VERSION }}
SRC_TGZ_URL: ${{ steps.metadata.outputs.url }}
SRC_TGZ_SHA: ${{ steps.metadata.outputs.sha512 }}
- name: Print PKGBUILD
run: cat ${{ env.PACKAGE_NAME }}/PKGBUILD
- name: Test
uses: docker://archlinux:latest
with:
entrypoint: .github/workflows/delivery/archlinux/test-install-package.sh
- name: Publish
uses: docker://archlinux:latest
env:
AUR_KEY: ${{ secrets.AUR_KEY }}
with:
entrypoint: .github/workflows/delivery/archlinux/publish-package.sh
pack-cli-bin:
runs-on: ubuntu-latest
env:

View File

@ -16,8 +16,9 @@ on:
default: false
env:
REGISTRY_NAME: 'docker.io'
USER_NAME: 'buildpacksio'
IMG_NAME: 'pack'
USERNAME: 'buildpacksio'
jobs:
deliver-docker:
@ -52,7 +53,7 @@ jobs:
with:
ref: v${{ steps.version.outputs.result }}
- name: Determine App Name
run: 'echo "IMG_NAME=${{ env.USERNAME }}/${{ env.IMG_NAME }}" >> $GITHUB_ENV'
run: 'echo "IMG_NAME=${{ env.REGISTRY_NAME }}/${{ env.USER_NAME }}/${{ env.IMG_NAME }}" >> $GITHUB_ENV'
- name: Login to Dockerhub
uses: docker/login-action@v3
with:
@ -60,12 +61,12 @@ jobs:
password: ${{ secrets.DOCKER_PASSWORD }}
- uses: docker/setup-qemu-action@v3
- uses: docker/setup-buildx-action@v3
- uses: buildpacks/github-actions/setup-tools@v5.5.1
- uses: buildpacks/github-actions/setup-tools@v5.9.2
- name: Buildx Build/Publish
run: |
docker buildx build . \
--tag ${{ env.IMG_NAME }}:${{ steps.version.outputs.result }}${{ matrix.suffix }} \
--platform linux/amd64,linux/arm64,linux/s390x \
--platform linux/amd64,linux/arm64,linux/s390x,linux/ppc64le \
--build-arg pack_version=${{ steps.version.outputs.result }} \
--build-arg base_image=${{ matrix.base_image }} \
--provenance=false \
@ -73,8 +74,8 @@ jobs:
- name: Tag Image as Base
if: ${{ (github.event.release != '' || github.event.inputs.tag_latest) && matrix.config == 'base' }}
run: |
crane copy ${{ env.IMG_NAME }}:${{ steps.version.outputs.result }} ${{ env.IMG_NAME }}:base
crane copy ${{ env.IMG_NAME }}:${{ steps.version.outputs.result }}${{ matrix.suffix }} ${{ env.IMG_NAME }}:base
- name: Tag Image as Latest
if: ${{ (github.event.release != '' || github.event.inputs.tag_latest) && matrix.config != 'base' }}
run: |
crane copy ${{ env.IMG_NAME }}:${{ steps.version.outputs.result }} ${{ env.IMG_NAME }}:latest
crane copy ${{ env.IMG_NAME }}:${{ steps.version.outputs.result }}${{ matrix.suffix }} ${{ env.IMG_NAME }}:latest

View File

@ -50,6 +50,11 @@ jobs:
core.setOutput("linux_url", asset.browser_download_url);
}
if (asset.name.endsWith("linux-arm64.tgz")) {
core.setOutput("linux_arm64_name", asset.name);
core.setOutput("linux_arm64_url", asset.browser_download_url);
}
if (asset.name.endsWith("macos.tgz")) {
core.setOutput("macos_name", asset.name);
core.setOutput("macos_url", asset.browser_download_url);
@ -67,6 +72,10 @@ jobs:
linux_sha256=$(sha256sum ${{ steps.assets.outputs.linux_name }} | cut -d ' ' -f1)
echo "linux_sha256=$linux_sha256" >> $GITHUB_OUTPUT
curl -sSL ${{ steps.assets.outputs.linux_arm64_url }} -o ${{ steps.assets.outputs.linux_arm64_name }}
linux_arm64_sha256=$(sha256sum ${{ steps.assets.outputs.linux_arm64_name }} | cut -d ' ' -f1)
echo "linux_arm64_sha256=$linux_arm64_sha256" >> $GITHUB_OUTPUT
curl -sSL ${{ steps.assets.outputs.macos_url }} -o ${{ steps.assets.outputs.macos_name }}
macos_sha256=$(sha256sum ${{ steps.assets.outputs.macos_name }} | cut -d ' ' -f1)
echo "macos_sha256=$macos_sha256" >> $GITHUB_OUTPUT
@ -83,6 +92,8 @@ jobs:
env:
LINUX_URL: ${{ steps.assets.outputs.linux_url }}
LINUX_SHA: ${{ steps.checksums.outputs.linux_sha256 }}
LINUX_ARM64_URL: ${{ steps.assets.outputs.linux_arm64_url }}
LINUX_ARM64_SHA: ${{ steps.checksums.outputs.linux_arm64_sha256 }}
MACOS_URL: ${{ steps.assets.outputs.macos_url }}
MACOS_SHA: ${{ steps.checksums.outputs.macos_sha256 }}
MACOS_ARM64_URL: ${{ steps.assets.outputs.macos_arm64_url }}

View File

@ -20,8 +20,8 @@ jobs:
strategy:
fail-fast: false
matrix:
target: [bionic, focal, jammy, lunar]
runs-on: ubuntu-20.04
target: [bionic, focal, jammy, noble, oracular, plucky]
runs-on: ubuntu-22.04
steps:
- name: Checkout code
uses: actions/checkout@v4
@ -103,9 +103,33 @@ jobs:
GPG_PUBLIC_KEY: ${{ secrets.GPG_PUBLIC_KEY }}
PACKAGE_VERSION: ${{ steps.version.outputs.result }}
- name: Deliver lunar
if: matrix.target == 'lunar'
uses: docker://ubuntu:lunar
- name: Deliver noble
if: matrix.target == 'noble'
uses: docker://ubuntu:noble
with:
entrypoint: .github/workflows/delivery/ubuntu/deliver.sh
env:
DEBIAN_FRONTEND: "noninteractive"
GO_DEP_PACKAGE_NAME: golang
GPG_PRIVATE_KEY: ${{ secrets.GPG_PRIVATE_KEY }}
GPG_PUBLIC_KEY: ${{ secrets.GPG_PUBLIC_KEY }}
PACKAGE_VERSION: ${{ steps.version.outputs.result }}
- name: Deliver oracular
if: matrix.target == 'oracular'
uses: docker://ubuntu:oracular
with:
entrypoint: .github/workflows/delivery/ubuntu/deliver.sh
env:
DEBIAN_FRONTEND: "noninteractive"
GO_DEP_PACKAGE_NAME: golang
GPG_PRIVATE_KEY: ${{ secrets.GPG_PRIVATE_KEY }}
GPG_PUBLIC_KEY: ${{ secrets.GPG_PUBLIC_KEY }}
PACKAGE_VERSION: ${{ steps.version.outputs.result }}
- name: Deliver plucky
if: matrix.target == 'plucky'
uses: docker://ubuntu:plucky
with:
entrypoint: .github/workflows/delivery/ubuntu/deliver.sh
env:

View File

@ -1,8 +1,8 @@
# Arch Linux
There are 3 maintained packages:
There are two maintained packages by us and one official archlinux package:
- [pack-cli](https://aur.archlinux.org/packages/pack-cli/): The latest release of `pack`, compiled from source.
- [pack-cli](https://archlinux.org/packages/extra/x86_64/pack-cli/): Official Archlinux package in the 'Extra' repo.
- [pack-cli-bin](https://aur.archlinux.org/packages/pack-cli-bin/): The latest release of `pack`, precompiled.
- [pack-cli-git](https://aur.archlinux.org/packages/pack-cli-git/): An unreleased version of `pack`, compiled from source of the `main` branch.

View File

@ -1,22 +0,0 @@
# Maintainer: Michael William Le Nguyen <michael at mail dot ttp dot codes>
# Maintainer: Buildpacks Maintainers <cncf-buildpacks-maintainers at lists dot cncf dot io>
pkgname=pack-cli
pkgver={{PACK_VERSION}}
pkgrel=1
pkgdesc="CLI for building apps using Cloud Native Buildpacks"
arch=('x86_64')
url="https://buildpacks.io/"
license=('Apache')
makedepends=('go-pie')
source=("{{SRC_TGZ_URL}}")
sha512sums=("{{SRC_TGZ_SHA}}")
build() {
export GOPATH="${srcdir}/go"
cd "${srcdir}/pack-${pkgver}"
PACK_VERSION="v${pkgver}" make build
}
package() {
export GOPATH="${srcdir}/go"
go clean -modcache
install -D -m755 "${srcdir}/pack-${pkgver}/out/pack" "${pkgdir}/usr/bin/pack"
}

View File

@ -14,7 +14,10 @@ class Pack < Formula
elsif OS.mac?
url "{{MACOS_URL}}"
sha256 "{{MACOS_SHA}}"
else
elsif OS.linux? && Hardware::CPU.arm?
url "{{LINUX_ARM64_URL}}"
sha256 "{{LINUX_ARM64_SHA}}"
else
url "{{LINUX_URL}}"
sha256 "{{LINUX_SHA}}"
end

View File

@ -26,6 +26,29 @@ Alternatively, you can use Gitpod to run pre-configured dev environment in the c
* Symlinks - Some of our tests attempt to create symlinks. On Windows, this requires the [permission to be provided](https://stackoverflow.com/a/24353758).
### Testing GitHub actions on forks
The pack release process involves chaining a series of GitHub actions together, such as:
* The "build" workflow, which creates:
* .tgz files containing the pack binaries and shasums for the .tgz files
* a draft release with the above artifacts
* The "delivery-docker" workflow, which builds and pushes OCI images containing the pack binary
* The "benchmark" workflow, which runs performance checks for each commit and uploads reports to GitHub Pages
It can be rather cumbersome to test changes to these workflows, as they are heavily intertwined. Thus, we recommend forking the buildpacks/pack repository on GitHub and running through the entire release process end-to-end.
For the fork, it is necessary to complete the following preparations:
* Add the following secrets:
* `DOCKER_PASSWORD` for the delivery-docker workflow, if not using ghcr.io
* `DOCKER_USERNAME` for the delivery-docker workflow, if not using ghcr.io
* `DEPLOY_KEY` for the release-merge workflow, as a SSH private key for repository access
* Enable the issues feature on the repository and create `status/triage` and `type/bug` labels for the check-latest-release workflow
* Create a branch named `gh-pages` for uploading benchmark reports for the benchmark workflow
The `tools/test-fork.sh` script can be used to update the source code to reflect the state of the fork and disable workflows that should not run on the fork repository.
It can be invoked like so: `./tools/test-fork.sh <registry repo name>`
## Tasks
### Building
@ -104,15 +127,15 @@ make prepare-for-pr
### Acceptance Tests
Some options users can provide to our acceptance tests are:
| ENV_VAR | Description | Default |
|--------------|------------------------------------------------------------------------|---------|
| ACCEPTANCE_SUITE_CONFIG | A set of configurations for how to run the acceptance tests, describing the version of `pack` used for testing, the version of `pack` used to create the builders used in the test, and the version of `lifecycle` binaries used to test with Github | `[{"pack": "current", "pack_create_builder": "current", "lifecycle": "default"}]'` |
| COMPILE_PACK_WITH_VERSION | Tell `pack` what version to consider itself | `dev` |
| GITHUB_TOKEN | A Github Token, used when downloading `pack` and `lifecycle` releases from Github during the test setup | "" |
| LIFECYCLE_IMAGE | Image reference to be used in untrusted builder workflows | buildpacksio/lifecycle:<lifecycle version> |
| LIFECYCLE_PATH | Path to a `.tgz` file filled with a set of `lifecycle` binaries | The Github release for the default version of lifecycle in `pack` |
| PACK_PATH | Path to a `pack` executable. | A compiled version of the current branch |
| PREVIOUS_LIFECYCLE_IMAGE | Image reference to be used in untrusted builder workflows, used to test compatibility of `pack` with the n-1 version of the `lifecycle` | buildpacksio/lifecycle:<PREVIOUS_LIFECYCLE_PATH lifecycle version>, buildpacksio/lifecycle:<n-1 lifecycle version> |
| PREVIOUS_LIFECYCLE_PATH | Path to a `.tgz` file filled with a set of `lifecycle` binaries, used to test compatibility of `pack` with the n-1 version of the `lifecycle` | The Github release for n-1 release of `lifecycle` |
| PREVIOUS_PACK_FIXTURES_PATH | Path to a set of fixtures, used to override the most up-to-date fixtures, in case of changed functionality | `acceptance/testdata/pack_previous_fixtures_overrides` |
| PREVIOUS_PACK_PATH | Path to a `pack` executable, used to test compatibility with n-1 version of `pack` | The most recent release from `pack`'s Github release |
| ENV_VAR | Description | Default |
|--------------|------------------------------------------------------------------------|------------------------------------------------------------------------------------------------------------------------------|
| ACCEPTANCE_SUITE_CONFIG | A set of configurations for how to run the acceptance tests, describing the version of `pack` used for testing, the version of `pack` used to create the builders used in the test, and the version of `lifecycle` binaries used to test with Github | `[{"pack": "current", "pack_create_builder": "current", "lifecycle": "default"}]'` |
| COMPILE_PACK_WITH_VERSION | Tell `pack` what version to consider itself | `dev` |
| GITHUB_TOKEN | A Github Token, used when downloading `pack` and `lifecycle` releases from Github during the test setup | "" |
| LIFECYCLE_IMAGE | Image reference to be used in untrusted builder workflows | docker.io/buildpacksio/lifecycle:<lifecycle version> |
| LIFECYCLE_PATH | Path to a `.tgz` file filled with a set of `lifecycle` binaries | The Github release for the default version of lifecycle in `pack` |
| PACK_PATH | Path to a `pack` executable. | A compiled version of the current branch |
| PREVIOUS_LIFECYCLE_IMAGE | Image reference to be used in untrusted builder workflows, used to test compatibility of `pack` with the n-1 version of the `lifecycle` | docker.io/buildpacksio/lifecycle:<PREVIOUS_LIFECYCLE_PATH lifecycle version>, buildpacksio/lifecycle:<n-1 lifecycle version> |
| PREVIOUS_LIFECYCLE_PATH | Path to a `.tgz` file filled with a set of `lifecycle` binaries, used to test compatibility of `pack` with the n-1 version of the `lifecycle` | The Github release for n-1 release of `lifecycle` |
| PREVIOUS_PACK_FIXTURES_PATH | Path to a set of fixtures, used to override the most up-to-date fixtures, in case of changed functionality | `acceptance/testdata/pack_previous_fixtures_overrides` |
| PREVIOUS_PACK_PATH | Path to a `pack` executable, used to test compatibility with n-1 version of `pack` | The most recent release from `pack`'s Github release |

View File

@ -1,6 +1,6 @@
ARG base_image=gcr.io/distroless/static
FROM golang:1.20 as builder
FROM golang:1.24 as builder
ARG pack_version
ENV PACK_VERSION=$pack_version
WORKDIR /app

View File

@ -58,7 +58,7 @@ BINDIR:=/usr/bin/
## build: Build the program
build: out
@echo "=====> Building..."
$(GOCMD) build -ldflags "-s -w -X 'github.com/buildpacks/pack.Version=${PACK_VERSION}' -extldflags ${LDFLAGS}" -trimpath -o ./out/$(PACK_BIN) -a ./cmd/pack
$(GOCMD) build -ldflags "-s -w -X 'github.com/buildpacks/pack/pkg/client.Version=${PACK_VERSION}' -extldflags '${LDFLAGS}'" -trimpath -o ./out/$(PACK_BIN) -a
## all: Run clean, verify, test, and build operations
all: clean verify test build
@ -160,12 +160,12 @@ install-goimports:
## install-golangci-lint: Install golangci-lint dependency
install-golangci-lint:
@echo "=====> Installing golangci-lint..."
cd tools && $(GOCMD) install github.com/golangci/golangci-lint/cmd/golangci-lint@v1.51.1
cd tools && $(GOCMD) install github.com/golangci/golangci-lint/v2/cmd/golangci-lint@v2.0.2
## mod-tidy: Tidy Go modules
mod-tidy:
$(GOCMD) mod tidy -compat=1.21
cd tools && $(GOCMD) mod tidy -compat=1.21
$(GOCMD) mod tidy -compat=1.24
cd tools && $(GOCMD) mod tidy -compat=1.24
## tidy: Tidy modules and format the code
tidy: mod-tidy format

View File

@ -34,9 +34,9 @@ Check out the command line documentation [here][pack-docs]
To learn more about the details, check out the [specs repository][specs].
[app-dev]: https://buildpacks.io/docs/app-developer-guide/
[bp-author]: https://buildpacks.io/docs/buildpack-author-guide/
[operator]: https://buildpacks.io/docs/operator-guide/
[app-dev]: https://buildpacks.io/docs/for-app-developers/
[bp-author]: https://buildpacks.io/docs/for-buildpack-authors/
[operator]: https://buildpacks.io/docs/for-platform-operators/
[buildpacks.io]: https://buildpacks.io/
[install-pack]: https://buildpacks.io/docs/install-pack/
[getting-started]: https://buildpacks.io/docs/app-journey

File diff suppressed because it is too large Load Diff

View File

@ -1,5 +1,4 @@
//go:build acceptance
// +build acceptance
package assertions
@ -60,7 +59,7 @@ func (a ImageAssertionManager) HasCreateTime(image string, expectedTime time.Tim
a.assert.TrueWithMessage(actualTime.Sub(expectedTime) < 5*time.Second && expectedTime.Sub(actualTime) < 5*time.Second, fmt.Sprintf("expected image create time %s to match expected time %s", actualTime, expectedTime))
}
func (a ImageAssertionManager) HasLabelWithData(image, label, data string) {
func (a ImageAssertionManager) HasLabelContaining(image, label, data string) {
a.testObject.Helper()
inspect, err := a.imageManager.InspectLocal(image)
a.assert.Nil(err)
@ -69,6 +68,15 @@ func (a ImageAssertionManager) HasLabelWithData(image, label, data string) {
a.assert.Contains(label, data)
}
func (a ImageAssertionManager) HasLabelNotContaining(image, label, data string) {
a.testObject.Helper()
inspect, err := a.imageManager.InspectLocal(image)
a.assert.Nil(err)
label, ok := inspect.Config.Labels[label]
a.assert.TrueWithMessage(ok, fmt.Sprintf("expected label %s to exist", label))
a.assert.NotContains(label, data)
}
func (a ImageAssertionManager) HasLengthLayers(image string, length int) {
a.testObject.Helper()
inspect, err := a.imageManager.InspectLocal(image)

View File

@ -1,11 +1,11 @@
//go:build acceptance
// +build acceptance
package assertions
import (
"fmt"
"regexp"
"strings"
"testing"
h "github.com/buildpacks/pack/testhelpers"
@ -85,8 +85,12 @@ func (l LifecycleOutputAssertionManager) IncludesSeparatePhasesWithRunExtension(
l.assert.ContainsAll(l.output, "[detector]", "[analyzer]", "[extender (run)]", "[exporter]")
}
func (l LifecycleOutputAssertionManager) IncludesLifecycleImageTag(tag string) {
func (l LifecycleOutputAssertionManager) IncludesTagOrEphemeralLifecycle(tag string) {
l.testObject.Helper()
l.assert.Contains(l.output, tag)
if !strings.Contains(l.output, tag) {
if !strings.Contains(l.output, "pack.local/lifecyle") {
l.testObject.Fatalf("Unable to locate reference to lifecycle image within output")
}
}
}

View File

@ -1,5 +1,4 @@
//go:build acceptance
// +build acceptance
package assertions
@ -32,6 +31,42 @@ func (o OutputAssertionManager) ReportsSuccessfulImageBuild(name string) {
o.assert.ContainsF(o.output, "Successfully built image '%s'", name)
}
func (o OutputAssertionManager) ReportsSuccessfulIndexLocallyCreated(name string) {
o.testObject.Helper()
o.assert.ContainsF(o.output, "Successfully created manifest list '%s'", name)
}
func (o OutputAssertionManager) ReportsSuccessfulIndexPushed(name string) {
o.testObject.Helper()
o.assert.ContainsF(o.output, "Successfully pushed manifest list '%s' to registry", name)
}
func (o OutputAssertionManager) ReportsSuccessfulManifestAddedToIndex(name string) {
o.testObject.Helper()
o.assert.ContainsF(o.output, "Successfully added image '%s' to index", name)
}
func (o OutputAssertionManager) ReportsSuccessfulIndexDeleted() {
o.testObject.Helper()
o.assert.Contains(o.output, "Successfully deleted manifest list(s) from local storage")
}
func (o OutputAssertionManager) ReportsSuccessfulIndexAnnotated(name, manifest string) {
o.testObject.Helper()
o.assert.ContainsF(o.output, "Successfully annotated image '%s' in index '%s'", name, manifest)
}
func (o OutputAssertionManager) ReportsSuccessfulRemoveManifestFromIndex(name string) {
o.testObject.Helper()
o.assert.ContainsF(o.output, "Successfully removed image(s) from index: '%s'", name)
}
func (o OutputAssertionManager) ReportSuccessfulQuietBuild(name string) {
o.testObject.Helper()
o.testObject.Log("quiet mode")
@ -82,6 +117,12 @@ func (o OutputAssertionManager) ReportsRunImageStackNotMatchingBuilder(runImageS
)
}
func (o OutputAssertionManager) ReportsDeprecatedUseOfStack() {
o.testObject.Helper()
o.assert.Contains(o.output, "Warning: deprecated usage of stack")
}
func (o OutputAssertionManager) WithoutColors() {
o.testObject.Helper()
o.testObject.Log("has no color")
@ -137,6 +178,12 @@ func (o OutputAssertionManager) IncludesUsagePrompt() {
o.assert.Contains(o.output, "Run 'pack --help' for usage.")
}
func (o OutputAssertionManager) ReportsBuilderCreated(name string) {
o.testObject.Helper()
o.assert.ContainsF(o.output, "Successfully created builder image '%s'", name)
}
func (o OutputAssertionManager) ReportsSettingDefaultBuilder(name string) {
o.testObject.Helper()
@ -167,7 +214,7 @@ func (o OutputAssertionManager) IncludesTrustedBuildersHeading() {
o.assert.Contains(o.output, "Trusted Builders:")
}
const googleBuilder = "gcr.io/buildpacks/builder:v1"
const googleBuilder = "gcr.io/buildpacks/builder:google-22"
func (o OutputAssertionManager) IncludesGoogleBuilder() {
o.testObject.Helper()
@ -182,8 +229,7 @@ func (o OutputAssertionManager) IncludesPrefixedGoogleBuilder() {
}
var herokuBuilders = []string{
"heroku/builder:20",
"heroku/builder:22",
"heroku/builder:24",
}
func (o OutputAssertionManager) IncludesHerokuBuilders() {

View File

@ -1,5 +1,4 @@
//go:build acceptance
// +build acceptance
package assertions

View File

@ -1,5 +1,4 @@
//go:build acceptance
// +build acceptance
package buildpacks

View File

@ -1,5 +1,4 @@
//go:build acceptance
// +build acceptance
package buildpacks
@ -47,4 +46,5 @@ var (
ExtFolderSimpleLayers = folderBuildModule{name: "simple-layers-extension"}
MetaBpFolder = folderBuildModule{name: "meta-buildpack"}
MetaBpDependency = folderBuildModule{name: "meta-buildpack-dependency"}
MultiPlatformFolderBP = folderBuildModule{name: "multi-platform-buildpack"}
)

View File

@ -1,5 +1,4 @@
//go:build acceptance
// +build acceptance
package buildpacks

View File

@ -1,5 +1,4 @@
//go:build acceptance
// +build acceptance
package buildpacks

View File

@ -1,5 +1,4 @@
//go:build acceptance
// +build acceptance
package buildpacks

View File

@ -1,5 +1,4 @@
//go:build acceptance
// +build acceptance
package config
@ -354,9 +353,9 @@ func (b assetManagerBuilder) buildPack(compileVersion string) string {
b.assert.Nil(err)
cmd := exec.Command("go", "build",
// XXX the version setter is wrong here, there is no cmd.Version
"-ldflags", fmt.Sprintf("-X 'github.com/buildpacks/pack/cmd.Version=%s'", compileVersion),
"-o", packPath,
"./cmd/pack",
)
if filepath.Base(cwd) == "acceptance" {
cmd.Dir = filepath.Dir(cwd)

View File

@ -1,5 +1,4 @@
//go:build acceptance
// +build acceptance
package config

View File

@ -1,5 +1,4 @@
//go:build acceptance
// +build acceptance
package config

View File

@ -1,5 +1,4 @@
//go:build acceptance
// +build acceptance
package config

View File

@ -1,5 +1,4 @@
//go:build acceptance
// +build acceptance
package config

View File

@ -1,5 +1,4 @@
//go:build acceptance
// +build acceptance
package config

View File

@ -1,5 +1,4 @@
//go:build acceptance
// +build acceptance
package invoke
@ -237,6 +236,11 @@ const (
MetaBuildpackFolder
PlatformRetries
FlattenBuilderCreationV2
FixesRunImageMetadata
ManifestCommands
PlatformOption
MultiPlatformBuildersAndBuildPackages
StackWarning
)
var featureTests = map[Feature]func(i *PackInvoker) bool{
@ -270,6 +274,21 @@ var featureTests = map[Feature]func(i *PackInvoker) bool{
FlattenBuilderCreationV2: func(i *PackInvoker) bool {
return i.atLeast("v0.33.1")
},
FixesRunImageMetadata: func(i *PackInvoker) bool {
return i.atLeast("v0.34.0")
},
ManifestCommands: func(i *PackInvoker) bool {
return i.atLeast("v0.34.0")
},
PlatformOption: func(i *PackInvoker) bool {
return i.atLeast("v0.34.0")
},
MultiPlatformBuildersAndBuildPackages: func(i *PackInvoker) bool {
return i.atLeast("v0.34.0")
},
StackWarning: func(i *PackInvoker) bool {
return i.atLeast("v0.37.0")
},
}
func (i *PackInvoker) SupportsFeature(f Feature) bool {

View File

@ -1,5 +1,4 @@
//go:build acceptance
// +build acceptance
package invoke

View File

@ -1,5 +1,4 @@
//go:build acceptance
// +build acceptance
package managers
@ -23,10 +22,10 @@ var DefaultDuration = 10 * time.Second
type ImageManager struct {
testObject *testing.T
assert h.AssertionManager
dockerCli client.CommonAPIClient
dockerCli client.APIClient
}
func NewImageManager(t *testing.T, dockerCli client.CommonAPIClient) ImageManager {
func NewImageManager(t *testing.T, dockerCli client.APIClient) ImageManager {
return ImageManager{
testObject: t,
assert: h.NewAssertionManager(t),
@ -44,7 +43,7 @@ func (im ImageManager) CleanupImages(imageNames ...string) {
func (im ImageManager) InspectLocal(image string) (dockertypes.ImageInspect, error) {
im.testObject.Helper()
inspect, _, err := im.dockerCli.ImageInspectWithRaw(context.Background(), image)
inspect, err := im.dockerCli.ImageInspect(context.Background(), image)
return inspect, err
}
@ -90,7 +89,7 @@ func (im ImageManager) ExposePortOnImage(image, containerName string) TestContai
}, nil, nil, containerName)
im.assert.Nil(err)
err = im.dockerCli.ContainerStart(ctx, ctr.ID, dockertypes.ContainerStartOptions{})
err = im.dockerCli.ContainerStart(ctx, ctr.ID, container.StartOptions{})
im.assert.Nil(err)
return TestContainer{
testObject: im.testObject,
@ -120,7 +119,7 @@ func (im ImageManager) CreateContainer(name string) TestContainer {
type TestContainer struct {
testObject *testing.T
dockerCli client.CommonAPIClient
dockerCli client.APIClient
assert h.AssertionManager
name string
id string
@ -137,7 +136,7 @@ func (t TestContainer) RunWithOutput() string {
func (t TestContainer) Cleanup() {
t.testObject.Helper()
t.dockerCli.ContainerKill(context.Background(), t.name, "SIGKILL")
t.dockerCli.ContainerRemove(context.Background(), t.name, dockertypes.ContainerRemoveOptions{Force: true})
t.dockerCli.ContainerRemove(context.Background(), t.name, container.RemoveOptions{Force: true})
}
func (t TestContainer) WaitForResponse(duration time.Duration) string {

View File

@ -1,5 +1,4 @@
//go:build acceptance && !windows
// +build acceptance,!windows
package os

View File

@ -1,5 +1,4 @@
//go:build acceptance && darwin && amd64
// +build acceptance,darwin,amd64
package os

View File

@ -1,5 +1,4 @@
//go:build acceptance && darwin && arm64
// +build acceptance,darwin,arm64
package os

View File

@ -1,5 +1,4 @@
//go:build acceptance && linux
// +build acceptance,linux
package os

View File

@ -1,5 +1,4 @@
//go:build acceptance && windows
// +build acceptance,windows
package os

View File

@ -1,5 +1,4 @@
//go:build acceptance
// +build acceptance
package acceptance

View File

@ -0,0 +1,21 @@
api = "0.10"
[buildpack]
id = "simple/layers"
version = "simple-layers-version"
name = "Simple Layers Buildpack"
[[targets]]
os = "linux"
arch = "amd64"
[[targets]]
os = "linux"
arch = "arm64"
[[targets]]
os = "windows"
arch = "amd64"
[[stacks]]
id = "*"

View File

@ -0,0 +1,3 @@
#!/usr/bin/env bash
echo "---> Build: NOOP Buildpack"

View File

@ -0,0 +1,3 @@
#!/usr/bin/env bash
## always detect

View File

@ -0,0 +1,3 @@
@echo off
echo ---- Build: NOOP Buildpack

View File

@ -0,0 +1,2 @@
@echo off
:: always detect

View File

@ -35,6 +35,6 @@ if [[ -z "$EXT_RUN_SWITCH" ]]; then
else
echo "Generating run.Dockerfile for run image switch..."
cat >>"${output_dir}/run.Dockerfile" <<EOL
FROM some-not-exist-run-image!
FROM busybox:latest
EOL
fi

View File

@ -0,0 +1,6 @@
#!/usr/bin/env bash
echo "---> BUILD: System Fail Detect buildpack (should never run)"
# This should never be reached
exit 1

View File

@ -0,0 +1,6 @@
#!/usr/bin/env bash
echo "---> DETECT: System Fail Detect buildpack (will fail)"
# Always fail detection
exit 1

View File

@ -0,0 +1,9 @@
api = "0.7"
[buildpack]
id = "system/fail-detect"
version = "system-fail-detect-version"
name = "System Fail Detect Buildpack"
[[stacks]]
id = "pack.test.stack"

View File

@ -0,0 +1,20 @@
#!/usr/bin/env bash
echo "---> BUILD: System Post buildpack"
set -o errexit
set -o pipefail
layers_dir=$1
platform_dir=$2
# Create a layer to verify it ran
mkdir -p "${layers_dir}/system-post"
cat > "${layers_dir}/system-post.toml" <<EOF
launch = true
cache = true
EOF
echo "System Post Buildpack was here" > "${layers_dir}/system-post/marker"
exit 0

View File

@ -0,0 +1,6 @@
#!/usr/bin/env bash
echo "---> DETECT: System Post buildpack"
# Always pass detection for testing
exit 0

View File

@ -0,0 +1,9 @@
api = "0.7"
[buildpack]
id = "system/post"
version = "system-post-version"
name = "System Post Buildpack"
[[stacks]]
id = "pack.test.stack"

View File

@ -0,0 +1,20 @@
#!/usr/bin/env bash
echo "---> BUILD: System Pre buildpack"
set -o errexit
set -o pipefail
layers_dir=$1
platform_dir=$2
# Create a layer to verify it ran
mkdir -p "${layers_dir}/system-pre"
cat > "${layers_dir}/system-pre.toml" <<EOF
launch = true
cache = true
EOF
echo "System Pre Buildpack was here" > "${layers_dir}/system-pre/marker"
exit 0

View File

@ -0,0 +1,6 @@
#!/usr/bin/env bash
echo "---> DETECT: System Pre buildpack"
# Always pass detection for testing
exit 0

View File

@ -0,0 +1,9 @@
api = "0.7"
[buildpack]
id = "system/pre"
version = "system-pre-version"
name = "System Pre Buildpack"
[[stacks]]
id = "pack.test.stack"

View File

@ -0,0 +1,19 @@
[[buildpacks]]
id = "simple/layers"
version = "simple-layers-version"
uri = "{{ .BuildpackURI }}"
[[order]]
[[order.group]]
id = "simple/layers"
version = "simple-layers-version"
[build]
image = "{{ .BuildImage }}"
[run]
[[run.images]]
image = "{{ .RunImage }}"

View File

@ -0,0 +1,28 @@
[[buildpacks]]
id = "simple/layers"
version = "simple-layers-version"
uri = "{{ .BuildpackURI }}"
[[order]]
[[order.group]]
id = "simple/layers"
version = "simple-layers-version"
# Targets the buildpack will work with
[[targets]]
os = "linux"
arch = "amd64"
[[targets]]
os = "windows"
arch = "amd64"
[build]
image = "{{ .BuildImage }}"
[run]
[[run.images]]
image = "{{ .RunImage }}"

View File

@ -0,0 +1,33 @@
[[buildpacks]]
id = "simple-layers-buildpack"
uri = "file://{{.Fixtures}}/simple-layers-buildpack"
[[buildpacks]]
id = "system/fail-detect"
uri = "file://{{.Fixtures}}/system-fail-detect"
[[buildpacks]]
id = "system/post"
uri = "file://{{.Fixtures}}/system-post-buildpack"
# System buildpacks configuration
[system]
[system.pre]
buildpacks = [
{ id = "system/fail-detect", version = "system-fail-detect-version", optional = false }
]
[system.post]
buildpacks = [
{ id = "system/post", version = "system-post-version", optional = true }
]
[[order]]
[[order.group]]
id = "simple-layers-buildpack"
version = "simple-layers-buildpack-version"
[stack]
id = "pack.test.stack"
build-image = "pack-test/build"
run-image = "pack-test/run"

View File

@ -0,0 +1,29 @@
[[buildpacks]]
id = "simple-layers-buildpack"
uri = "file://{{.Fixtures}}/simple-layers-buildpack"
[[buildpacks]]
id = "system/fail-detect"
uri = "file://{{.Fixtures}}/system-fail-detect"
[[buildpacks]]
id = "system/pre"
uri = "file://{{.Fixtures}}/system-pre-buildpack"
# System buildpacks configuration
[system]
[system.pre]
buildpacks = [
{ id = "system/fail-detect", version = "system-fail-detect-version", optional = true },
{ id = "system/pre", version = "system-pre-version", optional = false }
]
[[order]]
[[order.group]]
id = "simple-layers-buildpack"
version = "simple-layers-buildpack-version"
[stack]
id = "pack.test.stack"
build-image = "pack-test/build"
run-image = "pack-test/run"

View File

@ -0,0 +1,33 @@
[[buildpacks]]
id = "simple-layers-buildpack"
uri = "file://{{.Fixtures}}/simple-layers-buildpack"
[[buildpacks]]
id = "system/pre"
uri = "file://{{.Fixtures}}/system-pre-buildpack"
[[buildpacks]]
id = "system/post"
uri = "file://{{.Fixtures}}/system-post-buildpack"
# System buildpacks configuration
[system]
[system.pre]
buildpacks = [
{ id = "system/pre", version = "system-pre-version", optional = false }
]
[system.post]
buildpacks = [
{ id = "system/post", version = "system-post-version", optional = true }
]
[[order]]
[[order.group]]
id = "simple-layers-buildpack"
version = "simple-layers-buildpack-version"
[stack]
id = "pack.test.stack"
build-image = "pack-test/build"
run-image = "pack-test/run"

View File

@ -5,4 +5,4 @@ uri = "{{ .BuildpackURI }}"
image = "{{ .PackageName }}"
[platform]
os = "{{ .OS }}"
os = "{{ .OS }}"

View File

@ -0,0 +1,5 @@
[buildpack]
uri = "{{ .BuildpackURI }}"
[[dependencies]]
uri = "{{ .PackageName }}"

View File

@ -2,9 +2,9 @@ Pack:
Version: {{ .Version }}
OS/Arch: {{ .OS }}/{{ .Arch }}
Default Lifecycle Version: 0.18.4
Default Lifecycle Version: 0.20.11
Supported Platform APIs: 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 0.10, 0.11, 0.12
Supported Platform APIs: 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 0.10, 0.11, 0.12, 0.13
Config:
default-builder-image = "{{ .DefaultBuilder }}"

View File

@ -1,5 +1,4 @@
//go:build benchmarks
// +build benchmarks
package benchmarks

View File

@ -25,6 +25,8 @@ type Config struct {
Lifecycle LifecycleConfig `toml:"lifecycle"`
Run RunConfig `toml:"run"`
Build BuildConfig `toml:"build"`
Targets []dist.Target `toml:"targets"`
System dist.System `toml:"system"`
}
// ModuleCollection is a list of ModuleConfigs
@ -37,8 +39,8 @@ type ModuleConfig struct {
}
func (c *ModuleConfig) DisplayString() string {
if c.ModuleInfo.FullName() != "" {
return c.ModuleInfo.FullName()
if c.FullName() != "" {
return c.FullName()
}
return c.ImageOrURI.DisplayString()

View File

@ -157,6 +157,39 @@ uri = "noop-buildpack.tgz"
})
})
})
when("system buildpack is defined", func() {
it.Before(func() {
h.AssertNil(t, os.WriteFile(builderConfigPath, []byte(`
[[system.pre.buildpacks]]
id = "id-1"
version = "1.0"
optional = false
[[system.post.buildpacks]]
id = "id-2"
version = "2.0"
optional = true
`), 0666))
})
it("returns a builder config", func() {
builderConfig, _, err := builder.ReadConfig(builderConfigPath)
h.AssertNil(t, err)
h.AssertEq(t, len(builderConfig.System.Pre.Buildpacks), 1)
h.AssertEq(t, len(builderConfig.System.Post.Buildpacks), 1)
// Verify system.pre.buildpacks
h.AssertEq(t, builderConfig.System.Pre.Buildpacks[0].ID, "id-1")
h.AssertEq(t, builderConfig.System.Pre.Buildpacks[0].Version, "1.0")
h.AssertEq(t, builderConfig.System.Pre.Buildpacks[0].Optional, false)
// Verify system.post.buildpacks
h.AssertEq(t, builderConfig.System.Post.Buildpacks[0].ID, "id-2")
h.AssertEq(t, builderConfig.System.Post.Buildpacks[0].Version, "2.0")
h.AssertEq(t, builderConfig.System.Post.Buildpacks[0].Optional, true)
})
})
})
when("#ValidateConfig()", func() {

View File

@ -19,7 +19,11 @@ type Config struct {
Buildpack dist.BuildpackURI `toml:"buildpack"`
Extension dist.BuildpackURI `toml:"extension"`
Dependencies []dist.ImageOrURI `toml:"dependencies"`
Platform dist.Platform `toml:"platform"`
// deprecated
Platform dist.Platform `toml:"platform"`
// Define targets for composite buildpacks
Targets []dist.Target `toml:"targets"`
}
func DefaultConfig() Config {
@ -117,6 +121,17 @@ func (r *ConfigReader) Read(path string) (Config, error) {
return packageConfig, nil
}
func (r *ConfigReader) ReadBuildpackDescriptor(path string) (dist.BuildpackDescriptor, error) {
buildpackCfg := dist.BuildpackDescriptor{}
_, err := toml.DecodeFile(path, &buildpackCfg)
if err != nil {
return dist.BuildpackDescriptor{}, err
}
return buildpackCfg, nil
}
func validateURI(uri, relativeBaseDir string) error {
locatorType, err := buildpack.GetLocatorType(uri, relativeBaseDir, nil)
if err != nil {

View File

@ -5,8 +5,6 @@ import (
"github.com/pkg/errors"
"github.com/spf13/cobra"
"github.com/buildpacks/pack/internal/docker"
"github.com/buildpacks/pack/buildpackage"
builderwriter "github.com/buildpacks/pack/internal/builder/writer"
"github.com/buildpacks/pack/internal/commands"
@ -106,6 +104,7 @@ func NewPackCommand(logger ConfigurableLogger) (*cobra.Command, error) {
rootCmd.AddCommand(commands.SetDefaultRegistry(logger, cfg, cfgPath))
rootCmd.AddCommand(commands.RemoveRegistry(logger, cfg, cfgPath))
rootCmd.AddCommand(commands.YankBuildpack(logger, cfg, packClient))
rootCmd.AddCommand(commands.NewManifestCommand(logger, packClient))
}
packHome, err := config.PackHome()
@ -139,7 +138,7 @@ func initConfig() (config.Config, string, error) {
}
func initClient(logger logging.Logger, cfg config.Config) (*client.Client, error) {
if err := docker.ProcessDockerContext(logger); err != nil {
if err := client.ProcessDockerContext(logger); err != nil {
return nil, err
}

View File

@ -20,7 +20,7 @@ import (
"github.com/buildpacks/pack/pkg/client"
)
func tryInitSSHDockerClient() (dockerClient.CommonAPIClient, error) {
func tryInitSSHDockerClient() (dockerClient.APIClient, error) {
dockerHost := os.Getenv("DOCKER_HOST")
_url, err := url.Parse(dockerHost)
isSSH := err == nil && _url.Scheme == "ssh"
@ -70,7 +70,7 @@ func readSecret(prompt string) (pw []byte, err error) {
fmt.Fprint(os.Stderr, prompt)
pw, err = term.ReadPassword(fd)
fmt.Fprintln(os.Stderr)
return
return pw, err
}
var b [1]byte

190
go.mod
View File

@ -1,138 +1,154 @@
module github.com/buildpacks/pack
require (
github.com/BurntSushi/toml v1.3.2
github.com/BurntSushi/toml v1.5.0
github.com/GoogleContainerTools/kaniko v1.24.0
github.com/Masterminds/semver v1.5.0
github.com/Microsoft/go-winio v0.6.1
github.com/Microsoft/go-winio v0.6.2
github.com/apex/log v1.9.0
github.com/buildpacks/imgutil v0.0.0-20240118145509-e94a1b7de8a9
github.com/buildpacks/lifecycle v0.18.4
github.com/docker/cli v24.0.7+incompatible
github.com/docker/docker v24.0.7+incompatible
github.com/docker/go-connections v0.5.0
github.com/buildpacks/imgutil v0.0.0-20250814164739-4b1c8875ba7e
github.com/buildpacks/lifecycle v0.20.11
github.com/containerd/errdefs v1.0.0
github.com/docker/cli v28.3.3+incompatible
github.com/docker/docker v28.3.3+incompatible
github.com/docker/go-connections v0.6.0
github.com/dustin/go-humanize v1.0.1
github.com/gdamore/tcell/v2 v2.7.0
github.com/go-git/go-git/v5 v5.11.0
github.com/gdamore/tcell/v2 v2.8.1
github.com/go-git/go-git/v5 v5.16.2
github.com/golang/mock v1.6.0
github.com/google/go-cmp v0.6.0
github.com/google/go-containerregistry v0.18.0
github.com/google/go-cmp v0.7.0
github.com/google/go-containerregistry v0.20.6
github.com/google/go-github/v30 v30.1.0
github.com/hectane/go-acl v0.0.0-20190604041725-da78bae5fc95
github.com/heroku/color v0.0.6
github.com/mitchellh/ioprogress v0.0.0-20180201004757-6a23b12fa88e
github.com/onsi/gomega v1.31.1
github.com/moby/go-archive v0.1.0
github.com/onsi/gomega v1.38.0
github.com/opencontainers/go-digest v1.0.0
github.com/opencontainers/image-spec v1.1.0-rc5
github.com/opencontainers/image-spec v1.1.1
github.com/pelletier/go-toml v1.9.5
github.com/pkg/errors v0.9.1
github.com/rivo/tview v0.0.0-20220307222120-9994674d60a8
github.com/sabhiram/go-gitignore v0.0.0-20210923224102-525f6e181f06
github.com/sclevine/spec v1.4.0
github.com/spf13/cobra v1.8.0
golang.org/x/crypto v0.18.0
golang.org/x/mod v0.14.0
golang.org/x/oauth2 v0.16.0
golang.org/x/sync v0.6.0
golang.org/x/sys v0.16.0
golang.org/x/term v0.16.0
golang.org/x/text v0.14.0
github.com/spf13/cobra v1.9.1
golang.org/x/crypto v0.41.0
golang.org/x/mod v0.27.0
golang.org/x/oauth2 v0.30.0
golang.org/x/sync v0.16.0
golang.org/x/sys v0.35.0
golang.org/x/term v0.34.0
golang.org/x/text v0.28.0
gopkg.in/yaml.v3 v3.0.1
)
require (
dario.cat/mergo v1.0.0 // indirect
dario.cat/mergo v1.0.2 // indirect
github.com/Azure/azure-sdk-for-go v68.0.0+incompatible // indirect
github.com/Azure/go-ansiterm v0.0.0-20230124172434-306776ec8161 // indirect
github.com/Azure/go-ansiterm v0.0.0-20250102033503-faa5f7b0171c // indirect
github.com/Azure/go-autorest v14.2.0+incompatible // indirect
github.com/Azure/go-autorest/autorest v0.11.29 // indirect
github.com/Azure/go-autorest/autorest/adal v0.9.23 // indirect
github.com/Azure/go-autorest/autorest/azure/auth v0.5.12 // indirect
github.com/Azure/go-autorest/autorest/azure/cli v0.4.6 // indirect
github.com/Azure/go-autorest/autorest/date v0.3.0 // indirect
github.com/Azure/go-autorest/logger v0.2.1 // indirect
github.com/Azure/go-autorest/tracing v0.6.0 // indirect
github.com/ProtonMail/go-crypto v0.0.0-20230828082145-3c4c8a2d2371 // indirect
github.com/Azure/go-autorest/autorest v0.11.30 // indirect
github.com/Azure/go-autorest/autorest/adal v0.9.24 // indirect
github.com/Azure/go-autorest/autorest/azure/auth v0.5.13 // indirect
github.com/Azure/go-autorest/autorest/azure/cli v0.4.7 // indirect
github.com/Azure/go-autorest/autorest/date v0.3.1 // indirect
github.com/Azure/go-autorest/logger v0.2.2 // indirect
github.com/Azure/go-autorest/tracing v0.6.1 // indirect
github.com/ProtonMail/go-crypto v1.2.0 // indirect
github.com/agext/levenshtein v1.2.3 // indirect
github.com/aws/aws-sdk-go-v2 v1.21.2 // indirect
github.com/aws/aws-sdk-go-v2/config v1.19.0 // indirect
github.com/aws/aws-sdk-go-v2/credentials v1.13.43 // indirect
github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.13.13 // indirect
github.com/aws/aws-sdk-go-v2/internal/configsources v1.1.43 // indirect
github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.4.37 // indirect
github.com/aws/aws-sdk-go-v2/internal/ini v1.3.45 // indirect
github.com/aws/aws-sdk-go-v2/service/ecr v1.20.2 // indirect
github.com/aws/aws-sdk-go-v2/service/ecrpublic v1.18.2 // indirect
github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.9.37 // indirect
github.com/aws/aws-sdk-go-v2/service/sso v1.15.2 // indirect
github.com/aws/aws-sdk-go-v2/service/ssooidc v1.17.3 // indirect
github.com/aws/aws-sdk-go-v2/service/sts v1.23.2 // indirect
github.com/aws/smithy-go v1.15.0 // indirect
github.com/awslabs/amazon-ecr-credential-helper/ecr-login v0.0.0-20231003182221-725682229e60 // indirect
github.com/aws/aws-sdk-go-v2 v1.36.3 // indirect
github.com/aws/aws-sdk-go-v2/config v1.29.14 // indirect
github.com/aws/aws-sdk-go-v2/credentials v1.17.67 // indirect
github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.30 // indirect
github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.34 // indirect
github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.34 // indirect
github.com/aws/aws-sdk-go-v2/internal/ini v1.8.3 // indirect
github.com/aws/aws-sdk-go-v2/service/ecr v1.44.0 // indirect
github.com/aws/aws-sdk-go-v2/service/ecrpublic v1.33.0 // indirect
github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.12.3 // indirect
github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.12.15 // indirect
github.com/aws/aws-sdk-go-v2/service/sso v1.25.3 // indirect
github.com/aws/aws-sdk-go-v2/service/ssooidc v1.30.1 // indirect
github.com/aws/aws-sdk-go-v2/service/sts v1.33.19 // indirect
github.com/aws/smithy-go v1.22.3 // indirect
github.com/awslabs/amazon-ecr-credential-helper/ecr-login v0.9.1 // indirect
github.com/beorn7/perks v1.0.1 // indirect
github.com/cespare/xxhash/v2 v2.2.0 // indirect
github.com/cespare/xxhash/v2 v2.3.0 // indirect
github.com/chrismellard/docker-credential-acr-env v0.0.0-20230304212654-82a0ddb27589 // indirect
github.com/cloudflare/circl v1.3.7 // indirect
github.com/containerd/containerd v1.7.7 // indirect
github.com/cloudflare/circl v1.6.1 // indirect
github.com/containerd/errdefs/pkg v0.3.0 // indirect
github.com/containerd/log v0.1.0 // indirect
github.com/containerd/stargz-snapshotter/estargz v0.14.3 // indirect
github.com/containerd/typeurl v1.0.2 // indirect
github.com/cyphar/filepath-securejoin v0.2.4 // indirect
github.com/containerd/stargz-snapshotter/estargz v0.16.3 // indirect
github.com/containerd/typeurl/v2 v2.2.3 // indirect
github.com/cyphar/filepath-securejoin v0.4.1 // indirect
github.com/dimchansky/utfbom v1.1.1 // indirect
github.com/distribution/reference v0.5.0 // indirect
github.com/distribution/reference v0.6.0 // indirect
github.com/docker/distribution v2.8.3+incompatible // indirect
github.com/docker/docker-credential-helpers v0.8.0 // indirect
github.com/docker/docker-credential-helpers v0.9.3 // indirect
github.com/docker/go-metrics v0.0.1 // indirect
github.com/docker/go-units v0.5.0 // indirect
github.com/emirpasic/gods v1.18.1 // indirect
github.com/gdamore/encoding v1.0.0 // indirect
github.com/felixge/httpsnoop v1.0.4 // indirect
github.com/gdamore/encoding v1.0.1 // indirect
github.com/go-git/gcfg v1.5.1-0.20230307220236-3a3c6141e376 // indirect
github.com/go-git/go-billy/v5 v5.5.0 // indirect
github.com/go-git/go-billy/v5 v5.6.2 // indirect
github.com/go-logr/logr v1.4.3 // indirect
github.com/go-logr/stdr v1.2.2 // indirect
github.com/go-viper/mapstructure/v2 v2.3.0 // indirect
github.com/gogo/protobuf v1.3.2 // indirect
github.com/golang-jwt/jwt/v4 v4.5.0 // indirect
github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da // indirect
github.com/golang/protobuf v1.5.3 // indirect
github.com/golang-jwt/jwt/v4 v4.5.2 // indirect
github.com/golang/groupcache v0.0.0-20241129210726-2c02b8208cf8 // indirect
github.com/google/go-querystring v1.1.0 // indirect
github.com/google/uuid v1.4.0 // indirect
github.com/gorilla/mux v1.8.0 // indirect
github.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510 // indirect
github.com/google/uuid v1.6.0 // indirect
github.com/gorilla/mux v1.8.1 // indirect
github.com/inconshreveable/mousetrap v1.1.0 // indirect
github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99 // indirect
github.com/jmespath/go-jmespath v0.4.0 // indirect
github.com/kevinburke/ssh_config v1.2.0 // indirect
github.com/klauspost/compress v1.17.1 // indirect
github.com/klauspost/compress v1.18.0 // indirect
github.com/lucasb-eyer/go-colorful v1.2.0 // indirect
github.com/mattn/go-colorable v0.1.13 // indirect
github.com/mattn/go-isatty v0.0.20 // indirect
github.com/mattn/go-runewidth v0.0.15 // indirect
github.com/matttproud/golang_protobuf_extensions v1.0.4 // indirect
github.com/mattn/go-runewidth v0.0.16 // indirect
github.com/mitchellh/go-homedir v1.1.0 // indirect
github.com/moby/buildkit v0.12.2 // indirect
github.com/moby/buildkit v0.22.0 // indirect
github.com/moby/docker-image-spec v1.3.1 // indirect
github.com/moby/patternmatcher v0.6.0 // indirect
github.com/moby/sys/sequential v0.5.0 // indirect
github.com/moby/term v0.5.0 // indirect
github.com/moby/sys/atomicwriter v0.1.0 // indirect
github.com/moby/sys/sequential v0.6.0 // indirect
github.com/moby/sys/user v0.4.0 // indirect
github.com/moby/sys/userns v0.1.0 // indirect
github.com/moby/term v0.5.2 // indirect
github.com/morikuni/aec v1.0.0 // indirect
github.com/opencontainers/runc v1.1.9 // indirect
github.com/opencontainers/selinux v1.11.0 // indirect
github.com/pjbgf/sha1cd v0.3.0 // indirect
github.com/prometheus/client_golang v1.17.0 // indirect
github.com/prometheus/client_model v0.5.0 // indirect
github.com/prometheus/common v0.44.0 // indirect
github.com/prometheus/procfs v0.12.0 // indirect
github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect
github.com/opencontainers/selinux v1.12.0 // indirect
github.com/pjbgf/sha1cd v0.3.2 // indirect
github.com/planetscale/vtprotobuf v0.6.1-0.20240319094008-0393e58bdf10 // indirect
github.com/prometheus/client_golang v1.22.0 // indirect
github.com/prometheus/client_model v0.6.2 // indirect
github.com/prometheus/common v0.64.0 // indirect
github.com/prometheus/procfs v0.16.1 // indirect
github.com/rivo/uniseg v0.4.3 // indirect
github.com/sergi/go-diff v1.2.0 // indirect
github.com/sergi/go-diff v1.3.2-0.20230802210424-5b0b94c5c0d3 // indirect
github.com/sirupsen/logrus v1.9.3 // indirect
github.com/skeema/knownhosts v1.2.1 // indirect
github.com/spf13/pflag v1.0.5 // indirect
github.com/vbatts/tar-split v0.11.5 // indirect
github.com/skeema/knownhosts v1.3.1 // indirect
github.com/spf13/pflag v1.0.6 // indirect
github.com/tonistiigi/go-csvvalue v0.0.0-20240814133006-030d3b2625d0 // indirect
github.com/vbatts/tar-split v0.12.1 // indirect
github.com/xanzy/ssh-agent v0.3.3 // indirect
golang.org/x/net v0.20.0 // indirect
golang.org/x/tools v0.16.1 // indirect
google.golang.org/appengine v1.6.8 // indirect
google.golang.org/protobuf v1.31.0 // indirect
github.com/xeipuuv/gojsonpointer v0.0.0-20180127040702-4e3ac2762d5f // indirect
github.com/xeipuuv/gojsonreference v0.0.0-20180127040603-bd5ef7bd5415 // indirect
github.com/xeipuuv/gojsonschema v1.2.0 // indirect
go.opentelemetry.io/auto/sdk v1.1.0 // indirect
go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.61.0 // indirect
go.opentelemetry.io/otel v1.36.0 // indirect
go.opentelemetry.io/otel/metric v1.36.0 // indirect
go.opentelemetry.io/otel/trace v1.36.0 // indirect
golang.org/x/net v0.42.0 // indirect
google.golang.org/protobuf v1.36.6 // indirect
gopkg.in/warnings.v0 v0.1.2 // indirect
gotest.tools/v3 v3.4.0 // indirect
)
go 1.21
replace github.com/BurntSushi/toml => github.com/BurntSushi/toml v1.3.2
// Pin moby/buildkit until docker/docker is upgraded
replace github.com/moby/buildkit => github.com/moby/buildkit v0.11.6
go 1.24.4

491
go.sum
View File

@ -1,45 +1,48 @@
dario.cat/mergo v1.0.0 h1:AGCNq9Evsj31mOgNPcLyXc+4PNABt905YmuqPYYpBWk=
dario.cat/mergo v1.0.0/go.mod h1:uNxQE+84aUszobStD9th8a29P2fMDhsBdgRYvZOxGmk=
github.com/AdaLogics/go-fuzz-headers v0.0.0-20230811130428-ced1acdcaa24 h1:bvDV9vkmnHYOMsOr4WLk+Vo07yKIzd94sVoIqshQ4bU=
github.com/AdaLogics/go-fuzz-headers v0.0.0-20230811130428-ced1acdcaa24/go.mod h1:8o94RPi1/7XTJvwPpRSzSUedZrtlirdB3r9Z20bi2f8=
dario.cat/mergo v1.0.2 h1:85+piFYR1tMbRrLcDwR18y4UKJ3aH1Tbzi24VRW1TK8=
dario.cat/mergo v1.0.2/go.mod h1:E/hbnu0NxMFBjpMIE34DRGLWqDy0g5FuKDhCb31ngxA=
github.com/AdaLogics/go-fuzz-headers v0.0.0-20240806141605-e8a1dd7889d6 h1:He8afgbRMd7mFxO99hRNu+6tazq8nFF9lIwo9JFroBk=
github.com/AdaLogics/go-fuzz-headers v0.0.0-20240806141605-e8a1dd7889d6/go.mod h1:8o94RPi1/7XTJvwPpRSzSUedZrtlirdB3r9Z20bi2f8=
github.com/Azure/azure-sdk-for-go v68.0.0+incompatible h1:fcYLmCpyNYRnvJbPerq7U0hS+6+I79yEDJBqVNcqUzU=
github.com/Azure/azure-sdk-for-go v68.0.0+incompatible/go.mod h1:9XXNKU+eRnpl9moKnB4QOLf1HestfXbmab5FXxiDBjc=
github.com/Azure/go-ansiterm v0.0.0-20230124172434-306776ec8161 h1:L/gRVlceqvL25UVaW/CKtUDjefjrs0SPonmDGUVOYP0=
github.com/Azure/go-ansiterm v0.0.0-20230124172434-306776ec8161/go.mod h1:xomTg63KZ2rFqZQzSB4Vz2SUXa1BpHTVz9L5PTmPC4E=
github.com/Azure/go-ansiterm v0.0.0-20250102033503-faa5f7b0171c h1:udKWzYgxTojEKWjV8V+WSxDXJ4NFATAsZjh8iIbsQIg=
github.com/Azure/go-ansiterm v0.0.0-20250102033503-faa5f7b0171c/go.mod h1:xomTg63KZ2rFqZQzSB4Vz2SUXa1BpHTVz9L5PTmPC4E=
github.com/Azure/go-autorest v14.2.0+incompatible h1:V5VMDjClD3GiElqLWO7mz2MxNAK/vTfRHdAubSIPRgs=
github.com/Azure/go-autorest v14.2.0+incompatible/go.mod h1:r+4oMnoxhatjLLJ6zxSWATqVooLgysK6ZNox3g/xq24=
github.com/Azure/go-autorest/autorest v0.11.24/go.mod h1:G6kyRlFnTuSbEYkQGawPfsCswgme4iYf6rfSKUDzbCc=
github.com/Azure/go-autorest/autorest v0.11.29 h1:I4+HL/JDvErx2LjyzaVxllw2lRDB5/BT2Bm4g20iqYw=
github.com/Azure/go-autorest/autorest v0.11.29/go.mod h1:ZtEzC4Jy2JDrZLxvWs8LrBWEBycl1hbT1eknI8MtfAs=
github.com/Azure/go-autorest/autorest v0.11.28/go.mod h1:MrkzG3Y3AH668QyF9KRk5neJnGgmhQ6krbhR8Q5eMvA=
github.com/Azure/go-autorest/autorest v0.11.30 h1:iaZ1RGz/ALZtN5eq4Nr1SOFSlf2E4pDI3Tcsl+dZPVE=
github.com/Azure/go-autorest/autorest v0.11.30/go.mod h1:t1kpPIOpIVX7annvothKvb0stsrXa37i7b+xpmBW8Fs=
github.com/Azure/go-autorest/autorest/adal v0.9.18/go.mod h1:XVVeme+LZwABT8K5Lc3hA4nAe8LDBVle26gTrguhhPQ=
github.com/Azure/go-autorest/autorest/adal v0.9.22/go.mod h1:XuAbAEUv2Tta//+voMI038TrJBqjKam0me7qR+L8Cmk=
github.com/Azure/go-autorest/autorest/adal v0.9.23 h1:Yepx8CvFxwNKpH6ja7RZ+sKX+DWYNldbLiALMC3BTz8=
github.com/Azure/go-autorest/autorest/adal v0.9.23/go.mod h1:5pcMqFkdPhviJdlEy3kC/v1ZLnQl0MH6XA5YCcMhy4c=
github.com/Azure/go-autorest/autorest/azure/auth v0.5.12 h1:wkAZRgT/pn8HhFyzfe9UnqOjJYqlembgCTi72Bm/xKk=
github.com/Azure/go-autorest/autorest/azure/auth v0.5.12/go.mod h1:84w/uV8E37feW2NCJ08uT9VBfjfUHpgLVnG2InYD6cg=
github.com/Azure/go-autorest/autorest/azure/cli v0.4.5/go.mod h1:ADQAXrkgm7acgWVUNamOgh8YNrv4p27l3Wc55oVfpzg=
github.com/Azure/go-autorest/autorest/azure/cli v0.4.6 h1:w77/uPk80ZET2F+AfQExZyEWtn+0Rk/uw17m9fv5Ajc=
github.com/Azure/go-autorest/autorest/adal v0.9.24 h1:BHZfgGsGwdkHDyZdtQRQk1WeUdW0m2WPAwuHZwUi5i4=
github.com/Azure/go-autorest/autorest/adal v0.9.24/go.mod h1:7T1+g0PYFmACYW5LlG2fcoPiPlFHjClyRGL7dRlP5c8=
github.com/Azure/go-autorest/autorest/azure/auth v0.5.13 h1:Ov8avRZi2vmrE2JcXw+tu5K/yB41r7xK9GZDiBF7NdM=
github.com/Azure/go-autorest/autorest/azure/auth v0.5.13/go.mod h1:5BAVfWLWXihP47vYrPuBKKf4cS0bXI+KM9Qx6ETDJYo=
github.com/Azure/go-autorest/autorest/azure/cli v0.4.6/go.mod h1:piCfgPho7BiIDdEQ1+g4VmKyD5y+p/XtSNqE6Hc4QD0=
github.com/Azure/go-autorest/autorest/date v0.3.0 h1:7gUk1U5M/CQbp9WoqinNzJar+8KY+LPI6wiWrP/myHw=
github.com/Azure/go-autorest/autorest/azure/cli v0.4.7 h1:Q9R3utmFg9K1B4OYtAZ7ZUUvIUdzQt7G2MN5Hi/d670=
github.com/Azure/go-autorest/autorest/azure/cli v0.4.7/go.mod h1:bVrAueELJ0CKLBpUHDIvD516TwmHmzqwCpvONWRsw3s=
github.com/Azure/go-autorest/autorest/date v0.3.0/go.mod h1:BI0uouVdmngYNUzGWeSYnokU+TrmwEsOqdt8Y6sso74=
github.com/Azure/go-autorest/autorest/date v0.3.1 h1:o9Z8Jyt+VJJTCZ/UORishuHOusBwolhjokt9s5k8I4w=
github.com/Azure/go-autorest/autorest/date v0.3.1/go.mod h1:Dz/RDmXlfiFFS/eW+b/xMUSFs1tboPVy6UjgADToWDM=
github.com/Azure/go-autorest/autorest/mocks v0.4.1/go.mod h1:LTp+uSrOhSkaKrUy935gNZuuIPPVsHlr9DSOxSayd+k=
github.com/Azure/go-autorest/autorest/mocks v0.4.2 h1:PGN4EDXnuQbojHbU0UWoNvmu9AGVwYHG9/fkDYhtAfw=
github.com/Azure/go-autorest/autorest/mocks v0.4.2/go.mod h1:Vy7OitM9Kei0i1Oj+LvyAWMXJHeKH1MVlzFugfVrmyU=
github.com/Azure/go-autorest/logger v0.2.1 h1:IG7i4p/mDa2Ce4TRyAO8IHnVhAVF3RFU+ZtXWSmf4Tg=
github.com/Azure/go-autorest/logger v0.2.1/go.mod h1:T9E3cAhj2VqvPOtCYAvby9aBXkZmbF5NWuPV8+WeEW8=
github.com/Azure/go-autorest/tracing v0.6.0 h1:TYi4+3m5t6K48TGI9AUdb+IzbnSxvnvUMfuitfgcfuo=
github.com/Azure/go-autorest/logger v0.2.2 h1:hYqBsEBywrrOSW24kkOCXRcKfKhK76OzLTfF+MYDE2o=
github.com/Azure/go-autorest/logger v0.2.2/go.mod h1:I5fg9K52o+iuydlWfa9T5K6WFos9XYr9dYTFzpqgibw=
github.com/Azure/go-autorest/tracing v0.6.0/go.mod h1:+vhtPC754Xsa23ID7GlGsrdKBpUA79WCAKPPZVC2DeU=
github.com/Azure/go-autorest/tracing v0.6.1 h1:YUMSrC/CeD1ZnnXcNYU4a/fzsO35u2Fsful9L/2nyR0=
github.com/Azure/go-autorest/tracing v0.6.1/go.mod h1:/3EgjbsjraOqiicERAeu3m7/z0x1TzjQGAwDrJrXGkc=
github.com/BurntSushi/toml v1.3.2 h1:o7IhLm0Msx3BaB+n3Ag7L8EVlByGnpq14C4YWiu/gL8=
github.com/BurntSushi/toml v1.3.2/go.mod h1:CxXYINrC8qIiEnFrOxCa7Jy5BFHlXnUU2pbicEuybxQ=
github.com/GoogleContainerTools/kaniko v1.24.0 h1:PgzzuOwaraxC7UMw0F0YoxNHi+a6YeiAbDgc2GHrk+M=
github.com/GoogleContainerTools/kaniko v1.24.0/go.mod h1:hO9q9uGMwrItm4wGcX7E0cMJIw84NM6gPETIt6vkwAk=
github.com/Masterminds/semver v1.5.0 h1:H65muMkzWKEuNDnfl9d70GUjFniHKHRbFPGBuZ3QEww=
github.com/Masterminds/semver v1.5.0/go.mod h1:MB6lktGJrhw8PrUyiEoblNEGEQ+RzHPF078ddwwvV3Y=
github.com/Microsoft/go-winio v0.5.2/go.mod h1:WpS1mjBmmwHBEWmogvA2mj8546UReBk4v8QkMxJ6pZY=
github.com/Microsoft/go-winio v0.6.1 h1:9/kr64B9VUZrLm5YYwbGtUJnMgqWVOdUAXu6Migciow=
github.com/Microsoft/go-winio v0.6.1/go.mod h1:LRdKpFKfdobln8UmuiYcKPot9D2v6svN5+sAH+4kjUM=
github.com/Microsoft/hcsshim v0.11.4 h1:68vKo2VN8DE9AdN4tnkWnmdhqdbpUFM8OF3Airm7fz8=
github.com/Microsoft/hcsshim v0.11.4/go.mod h1:smjE4dvqPX9Zldna+t5FG3rnoHhaB7QYxPRqGcpAD9w=
github.com/ProtonMail/go-crypto v0.0.0-20230828082145-3c4c8a2d2371 h1:kkhsdkhsCvIsutKu5zLMgWtgh9YxGCNAw8Ad8hjwfYg=
github.com/ProtonMail/go-crypto v0.0.0-20230828082145-3c4c8a2d2371/go.mod h1:EjAoLdwvbIOoOQr3ihjnSoLZRtE8azugULFRteWMNc0=
github.com/Microsoft/go-winio v0.6.2 h1:F2VQgta7ecxGYO8k3ZZz3RS8fVIXVxONVUPlNERoyfY=
github.com/Microsoft/go-winio v0.6.2/go.mod h1:yd8OoFMLzJbo9gZq8j5qaps8bJ9aShtEA8Ipt1oGCvU=
github.com/ProtonMail/go-crypto v1.2.0 h1:+PhXXn4SPGd+qk76TlEePBfOfivE0zkWFenhGhFLzWs=
github.com/ProtonMail/go-crypto v1.2.0/go.mod h1:9whxjD8Rbs29b4XWbB8irEcE8KHMqaR2e7GWU1R+/PE=
github.com/agext/levenshtein v1.2.3 h1:YB2fHEn0UJagG8T1rrWknE3ZQzWM06O8AMAatNn7lmo=
github.com/agext/levenshtein v1.2.3/go.mod h1:JEDfjyjHDjOF/1e4FlBE/PkbqA9OfWu2ki2W0IB5558=
github.com/alecthomas/template v0.0.0-20160405071501-a0175ee3bccc/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc=
@ -54,83 +57,87 @@ github.com/aphistic/sweet v0.2.0/go.mod h1:fWDlIh/isSE9n6EPsRmC0det+whmX6dJid3st
github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5 h1:0CwZNZbxp69SHPdPJAN/hZIm0C4OItdklCFmMRWYpio=
github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5/go.mod h1:wHh0iHkYZB8zMSxRWpUBQtwG5a7fFgvEO+odwuTv2gs=
github.com/aws/aws-sdk-go v1.20.6/go.mod h1:KmX6BPdI08NWTb3/sm4ZGu5ShLoqVDhKgpiN924inxo=
github.com/aws/aws-sdk-go-v2 v1.21.2 h1:+LXZ0sgo8quN9UOKXXzAWRT3FWd4NxeXWOZom9pE7GA=
github.com/aws/aws-sdk-go-v2 v1.21.2/go.mod h1:ErQhvNuEMhJjweavOYhxVkn2RUx7kQXVATHrjKtxIpM=
github.com/aws/aws-sdk-go-v2/config v1.19.0 h1:AdzDvwH6dWuVARCl3RTLGRc4Ogy+N7yLFxVxXe1ClQ0=
github.com/aws/aws-sdk-go-v2/config v1.19.0/go.mod h1:ZwDUgFnQgsazQTnWfeLWk5GjeqTQTL8lMkoE1UXzxdE=
github.com/aws/aws-sdk-go-v2/credentials v1.13.43 h1:LU8vo40zBlo3R7bAvBVy/ku4nxGEyZe9N8MqAeFTzF8=
github.com/aws/aws-sdk-go-v2/credentials v1.13.43/go.mod h1:zWJBz1Yf1ZtX5NGax9ZdNjhhI4rgjfgsyk6vTY1yfVg=
github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.13.13 h1:PIktER+hwIG286DqXyvVENjgLTAwGgoeriLDD5C+YlQ=
github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.13.13/go.mod h1:f/Ib/qYjhV2/qdsf79H3QP/eRE4AkVyEf6sk7XfZ1tg=
github.com/aws/aws-sdk-go-v2/internal/configsources v1.1.43 h1:nFBQlGtkbPzp/NjZLuFxRqmT91rLJkgvsEQs68h962Y=
github.com/aws/aws-sdk-go-v2/internal/configsources v1.1.43/go.mod h1:auo+PiyLl0n1l8A0e8RIeR8tOzYPfZZH/JNlrJ8igTQ=
github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.4.37 h1:JRVhO25+r3ar2mKGP7E0LDl8K9/G36gjlqca5iQbaqc=
github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.4.37/go.mod h1:Qe+2KtKml+FEsQF/DHmDV+xjtche/hwoF75EG4UlHW8=
github.com/aws/aws-sdk-go-v2/internal/ini v1.3.45 h1:hze8YsjSh8Wl1rYa1CJpRmXP21BvOBuc76YhW0HsuQ4=
github.com/aws/aws-sdk-go-v2/internal/ini v1.3.45/go.mod h1:lD5M20o09/LCuQ2mE62Mb/iSdSlCNuj6H5ci7tW7OsE=
github.com/aws/aws-sdk-go-v2/service/ecr v1.20.2 h1:y6LX9GUoEA3mO0qpFl1ZQHj1rFyPWVphlzebiSt2tKE=
github.com/aws/aws-sdk-go-v2/service/ecr v1.20.2/go.mod h1:Q0LcmaN/Qr8+4aSBrdrXXePqoX0eOuYpJLbYpilmWnA=
github.com/aws/aws-sdk-go-v2/service/ecrpublic v1.18.2 h1:PpbXaecV3sLAS6rjQiaKw4/jyq3Z8gNzmoJupHAoBp0=
github.com/aws/aws-sdk-go-v2/service/ecrpublic v1.18.2/go.mod h1:fUHpGXr4DrXkEDpGAjClPsviWf+Bszeb0daKE0blxv8=
github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.9.37 h1:WWZA/I2K4ptBS1kg0kV1JbBtG/umed0vwHRrmcr9z7k=
github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.9.37/go.mod h1:vBmDnwWXWxNPFRMmG2m/3MKOe+xEcMDo1tanpaWCcck=
github.com/aws/aws-sdk-go-v2/service/sso v1.15.2 h1:JuPGc7IkOP4AaqcZSIcyqLpFSqBWK32rM9+a1g6u73k=
github.com/aws/aws-sdk-go-v2/service/sso v1.15.2/go.mod h1:gsL4keucRCgW+xA85ALBpRFfdSLH4kHOVSnLMSuBECo=
github.com/aws/aws-sdk-go-v2/service/ssooidc v1.17.3 h1:HFiiRkf1SdaAmV3/BHOFZ9DjFynPHj8G/UIO1lQS+fk=
github.com/aws/aws-sdk-go-v2/service/ssooidc v1.17.3/go.mod h1:a7bHA82fyUXOm+ZSWKU6PIoBxrjSprdLoM8xPYvzYVg=
github.com/aws/aws-sdk-go-v2/service/sts v1.23.2 h1:0BkLfgeDjfZnZ+MhB3ONb01u9pwFYTCZVhlsSSBvlbU=
github.com/aws/aws-sdk-go-v2/service/sts v1.23.2/go.mod h1:Eows6e1uQEsc4ZaHANmsPRzAKcVDrcmjjWiih2+HUUQ=
github.com/aws/smithy-go v1.15.0 h1:PS/durmlzvAFpQHDs4wi4sNNP9ExsqZh6IlfdHXgKK8=
github.com/aws/smithy-go v1.15.0/go.mod h1:Tg+OJXh4MB2R/uN61Ko2f6hTZwB/ZYGOtib8J3gBHzA=
github.com/awslabs/amazon-ecr-credential-helper/ecr-login v0.0.0-20231003182221-725682229e60 h1:ONd54l3oubhjMPcj7HpjPWvlFI6WXsu0/W7DsKCPI9w=
github.com/awslabs/amazon-ecr-credential-helper/ecr-login v0.0.0-20231003182221-725682229e60/go.mod h1:eSn65Noe23f/Z7A2ESqw3dbhAFSEyzZf38nXcKVNxtE=
github.com/aws/aws-sdk-go-v2 v1.36.3 h1:mJoei2CxPutQVxaATCzDUjcZEjVRdpsiiXi2o38yqWM=
github.com/aws/aws-sdk-go-v2 v1.36.3/go.mod h1:LLXuLpgzEbD766Z5ECcRmi8AzSwfZItDtmABVkRLGzg=
github.com/aws/aws-sdk-go-v2/config v1.29.14 h1:f+eEi/2cKCg9pqKBoAIwRGzVb70MRKqWX4dg1BDcSJM=
github.com/aws/aws-sdk-go-v2/config v1.29.14/go.mod h1:wVPHWcIFv3WO89w0rE10gzf17ZYy+UVS1Geq8Iei34g=
github.com/aws/aws-sdk-go-v2/credentials v1.17.67 h1:9KxtdcIA/5xPNQyZRgUSpYOE6j9Bc4+D7nZua0KGYOM=
github.com/aws/aws-sdk-go-v2/credentials v1.17.67/go.mod h1:p3C44m+cfnbv763s52gCqrjaqyPikj9Sg47kUVaNZQQ=
github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.30 h1:x793wxmUWVDhshP8WW2mlnXuFrO4cOd3HLBroh1paFw=
github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.30/go.mod h1:Jpne2tDnYiFascUEs2AWHJL9Yp7A5ZVy3TNyxaAjD6M=
github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.34 h1:ZK5jHhnrioRkUNOc+hOgQKlUL5JeC3S6JgLxtQ+Rm0Q=
github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.34/go.mod h1:p4VfIceZokChbA9FzMbRGz5OV+lekcVtHlPKEO0gSZY=
github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.34 h1:SZwFm17ZUNNg5Np0ioo/gq8Mn6u9w19Mri8DnJ15Jf0=
github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.34/go.mod h1:dFZsC0BLo346mvKQLWmoJxT+Sjp+qcVR1tRVHQGOH9Q=
github.com/aws/aws-sdk-go-v2/internal/ini v1.8.3 h1:bIqFDwgGXXN1Kpp99pDOdKMTTb5d2KyU5X/BZxjOkRo=
github.com/aws/aws-sdk-go-v2/internal/ini v1.8.3/go.mod h1:H5O/EsxDWyU+LP/V8i5sm8cxoZgc2fdNR9bxlOFrQTo=
github.com/aws/aws-sdk-go-v2/service/ecr v1.44.0 h1:E+UTVTDH6XTSjqxHWRuY8nB6s+05UllneWxnycplHFk=
github.com/aws/aws-sdk-go-v2/service/ecr v1.44.0/go.mod h1:iQ1skgw1XRK+6Lgkb0I9ODatAP72WoTILh0zXQ5DtbU=
github.com/aws/aws-sdk-go-v2/service/ecrpublic v1.33.0 h1:wA2O6pZ2r5smqJunFP4hp7qptMW4EQxs8O6RVHPulOE=
github.com/aws/aws-sdk-go-v2/service/ecrpublic v1.33.0/go.mod h1:RZL7ov7c72wSmoM8bIiVxRHgcVdzhNkVW2J36C8RF4s=
github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.12.3 h1:eAh2A4b5IzM/lum78bZ590jy36+d/aFLgKF/4Vd1xPE=
github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.12.3/go.mod h1:0yKJC/kb8sAnmlYa6Zs3QVYqaC8ug2AbnNChv5Ox3uA=
github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.12.15 h1:dM9/92u2F1JbDaGooxTq18wmmFzbJRfXfVfy96/1CXM=
github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.12.15/go.mod h1:SwFBy2vjtA0vZbjjaFtfN045boopadnoVPhu4Fv66vY=
github.com/aws/aws-sdk-go-v2/service/sso v1.25.3 h1:1Gw+9ajCV1jogloEv1RRnvfRFia2cL6c9cuKV2Ps+G8=
github.com/aws/aws-sdk-go-v2/service/sso v1.25.3/go.mod h1:qs4a9T5EMLl/Cajiw2TcbNt2UNo/Hqlyp+GiuG4CFDI=
github.com/aws/aws-sdk-go-v2/service/ssooidc v1.30.1 h1:hXmVKytPfTy5axZ+fYbR5d0cFmC3JvwLm5kM83luako=
github.com/aws/aws-sdk-go-v2/service/ssooidc v1.30.1/go.mod h1:MlYRNmYu/fGPoxBQVvBYr9nyr948aY/WLUvwBMBJubs=
github.com/aws/aws-sdk-go-v2/service/sts v1.33.19 h1:1XuUZ8mYJw9B6lzAkXhqHlJd/XvaX32evhproijJEZY=
github.com/aws/aws-sdk-go-v2/service/sts v1.33.19/go.mod h1:cQnB8CUnxbMU82JvlqjKR2HBOm3fe9pWorWBza6MBJ4=
github.com/aws/smithy-go v1.22.3 h1:Z//5NuZCSW6R4PhQ93hShNbyBbn8BWCmCVCt+Q8Io5k=
github.com/aws/smithy-go v1.22.3/go.mod h1:t1ufH5HMublsJYulve2RKmHDC15xu1f26kHCp/HgceI=
github.com/awslabs/amazon-ecr-credential-helper/ecr-login v0.9.1 h1:50sS0RWhGpW/yZx2KcDNEb1u1MANv5BMEkJgcieEDTA=
github.com/awslabs/amazon-ecr-credential-helper/ecr-login v0.9.1/go.mod h1:ErZOtbzuHabipRTDTor0inoRlYwbsV1ovwSxjGs/uJo=
github.com/aybabtme/rgbterm v0.0.0-20170906152045-cc83f3b3ce59/go.mod h1:q/89r3U2H7sSsE2t6Kca0lfwTK8JdoNGS/yzM/4iH5I=
github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q=
github.com/beorn7/perks v1.0.0/go.mod h1:KWe93zE9D1o94FZ5RNwFwVgaQK1VOXiVxmqh+CedLV8=
github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM=
github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw=
github.com/buildpacks/imgutil v0.0.0-20240118145509-e94a1b7de8a9 h1:kxe31xfMWJAIAzDfGQ3lL0j8QSSRfEHyLg7dRWIHA8I=
github.com/buildpacks/imgutil v0.0.0-20240118145509-e94a1b7de8a9/go.mod h1:PsazEB9yz+NG/cgm0Z1oQ0Xq6rD/U7eNMt5Su41afYY=
github.com/buildpacks/lifecycle v0.18.4 h1:LGl/4guzU+57hn08W8RwjLLizYtuNfCZHtxn8TP2+bE=
github.com/buildpacks/lifecycle v0.18.4/go.mod h1:DxxfyFaCi9ovbbP2fhcKBlImfbTPiPEtM5UqSlD1TJ8=
github.com/bwesterb/go-ristretto v1.2.3/go.mod h1:fUIoIZaG73pV5biE2Blr2xEzDoMj7NFEuV9ekS419A0=
github.com/cespare/xxhash/v2 v2.2.0 h1:DC2CZ1Ep5Y4k3ZQ899DldepgrayRUGE6BBZ/cd9Cj44=
github.com/cespare/xxhash/v2 v2.2.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs=
github.com/buildpacks/imgutil v0.0.0-20250814164739-4b1c8875ba7e h1:a+vpYYeK7E7+3uGqseiRutzKA7yNNjAOPON9+VOADiw=
github.com/buildpacks/imgutil v0.0.0-20250814164739-4b1c8875ba7e/go.mod h1:UH4th60x/wM1DdH7+eSgzbp0kgsJMhVgngWzXoF21cs=
github.com/buildpacks/lifecycle v0.20.11 h1:lr8smVyW59HvkdJj7H3rYbfiNT7ndkV4cV2lQiOnCuo=
github.com/buildpacks/lifecycle v0.20.11/go.mod h1:+YlGlTCwJcyJSp5QvZKxH8k2JOpYzjTE9NYB6CA5CuE=
github.com/cenkalti/backoff/v4 v4.3.0 h1:MyRJ/UdXutAwSAT+s3wNd7MfTIcy71VQueUuFK343L8=
github.com/cenkalti/backoff/v4 v4.3.0/go.mod h1:Y3VNntkOUPxTVeUxJ/G5vcM//AlwfmyYozVcomhLiZE=
github.com/cespare/xxhash/v2 v2.3.0 h1:UL815xU9SqsFlibzuggzjXhog7bL6oX9BbNZnL2UFvs=
github.com/cespare/xxhash/v2 v2.3.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs=
github.com/chrismellard/docker-credential-acr-env v0.0.0-20230304212654-82a0ddb27589 h1:krfRl01rzPzxSxyLyrChD+U+MzsBXbm0OwYYB67uF+4=
github.com/chrismellard/docker-credential-acr-env v0.0.0-20230304212654-82a0ddb27589/go.mod h1:OuDyvmLnMCwa2ep4Jkm6nyA0ocJuZlGyk2gGseVzERM=
github.com/cloudflare/circl v1.3.3/go.mod h1:5XYMA4rFBvNIrhs50XuiBJ15vF2pZn4nnUKZrLbUZFA=
github.com/cloudflare/circl v1.3.7 h1:qlCDlTPz2n9fu58M0Nh1J/JzcFpfgkFHHX3O35r5vcU=
github.com/cloudflare/circl v1.3.7/go.mod h1:sRTcRWXGLrKw6yIGJ+l7amYJFfAXbZG0kBSc8r4zxgA=
github.com/containerd/containerd v1.7.7 h1:QOC2K4A42RQpcrZyptP6z9EJZnlHfHJUfZrAAHe15q4=
github.com/containerd/containerd v1.7.7/go.mod h1:3c4XZv6VeT9qgf9GMTxNTMFxGJrGpI2vz1yk4ye+YY8=
github.com/cloudflare/circl v1.6.1 h1:zqIqSPIndyBh1bjLVVDHMPpVKqp8Su/V+6MeDzzQBQ0=
github.com/cloudflare/circl v1.6.1/go.mod h1:uddAzsPgqdMAYatqJ0lsjX1oECcQLIlRpzZh3pJrofs=
github.com/containerd/errdefs v1.0.0 h1:tg5yIfIlQIrxYtu9ajqY42W3lpS19XqdxRQeEwYG8PI=
github.com/containerd/errdefs v1.0.0/go.mod h1:+YBYIdtsnF4Iw6nWZhJcqGSg/dwvV7tyJ/kCkyJ2k+M=
github.com/containerd/errdefs/pkg v0.3.0 h1:9IKJ06FvyNlexW690DXuQNx2KA2cUJXx151Xdx3ZPPE=
github.com/containerd/errdefs/pkg v0.3.0/go.mod h1:NJw6s9HwNuRhnjJhM7pylWwMyAkmCQvQ4GpJHEqRLVk=
github.com/containerd/log v0.1.0 h1:TCJt7ioM2cr/tfR8GPbGf9/VRAX8D2B4PjzCpfX540I=
github.com/containerd/log v0.1.0/go.mod h1:VRRf09a7mHDIRezVKTRCrOq78v577GXq3bSa3EhrzVo=
github.com/containerd/stargz-snapshotter/estargz v0.14.3 h1:OqlDCK3ZVUO6C3B/5FSkDwbkEETK84kQgEeFwDC+62k=
github.com/containerd/stargz-snapshotter/estargz v0.14.3/go.mod h1:KY//uOCIkSuNAHhJogcZtrNHdKrA99/FCCRjE3HD36o=
github.com/containerd/typeurl v1.0.2 h1:Chlt8zIieDbzQFzXzAeBEF92KhExuE4p9p92/QmY7aY=
github.com/containerd/typeurl v1.0.2/go.mod h1:9trJWW2sRlGub4wZJRTW83VtbOLS6hwcDZXTn6oPz9s=
github.com/cpuguy83/go-md2man/v2 v2.0.3/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o=
github.com/containerd/stargz-snapshotter/estargz v0.16.3 h1:7evrXtoh1mSbGj/pfRccTampEyKpjpOnS3CyiV1Ebr8=
github.com/containerd/stargz-snapshotter/estargz v0.16.3/go.mod h1:uyr4BfYfOj3G9WBVE8cOlQmXAbPN9VEQpBBeJIuOipU=
github.com/containerd/typeurl/v2 v2.2.3 h1:yNA/94zxWdvYACdYO8zofhrTVuQY73fFU1y++dYSw40=
github.com/containerd/typeurl/v2 v2.2.3/go.mod h1:95ljDnPfD3bAbDJRugOiShd/DlAAsxGtUBhJxIn7SCk=
github.com/cpuguy83/go-md2man/v2 v2.0.6/go.mod h1:oOW0eioCTA6cOiMLiUPZOpcVxMig6NIQQ7OS05n1F4g=
github.com/creack/pty v1.1.18 h1:n56/Zwd5o6whRC5PMGretI4IdRLlmBXYNjScPaBgsbY=
github.com/creack/pty v1.1.18/go.mod h1:MOBLtS5ELjhRRrroQr9kyvTxUAFNvYEK993ew/Vr4O4=
github.com/cyphar/filepath-securejoin v0.2.4 h1:Ugdm7cg7i6ZK6x3xDF1oEu1nfkyfH53EtKeQYTC3kyg=
github.com/cyphar/filepath-securejoin v0.2.4/go.mod h1:aPGpWjXOXUn2NCNjFvBE6aRxGGx79pTxQpKOJNYHHl4=
github.com/cyphar/filepath-securejoin v0.4.1 h1:JyxxyPEaktOD+GAnqIqTf9A8tHyAG22rowi7HkoSU1s=
github.com/cyphar/filepath-securejoin v0.4.1/go.mod h1:Sdj7gXlvMcPZsbhwhQ33GguGLDGQL7h7bg04C/+u9jI=
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
github.com/dimchansky/utfbom v1.1.1 h1:vV6w1AhK4VMnhBno/TPVCoK9U/LP0PkLCS9tbxHdi/U=
github.com/dimchansky/utfbom v1.1.1/go.mod h1:SxdoEBH5qIqFocHMyGOXVAybYJdr71b1Q/j0mACtrfE=
github.com/distribution/reference v0.5.0 h1:/FUIFXtfc/x2gpa5/VGfiGLuOIdYa1t65IKK2OFGvA0=
github.com/distribution/reference v0.5.0/go.mod h1:BbU0aIcezP1/5jX/8MP0YiH4SdvB5Y4f/wlDRiLyi3E=
github.com/docker/cli v24.0.7+incompatible h1:wa/nIwYFW7BVTGa7SWPVyyXU9lgORqUb1xfI36MSkFg=
github.com/docker/cli v24.0.7+incompatible/go.mod h1:JLrzqnKDaYBop7H2jaqPtU4hHvMKP+vjCwu2uszcLI8=
github.com/distribution/reference v0.6.0 h1:0IXCQ5g4/QMHHkarYzh5l+u8T3t73zM5QvfrDyIgxBk=
github.com/distribution/reference v0.6.0/go.mod h1:BbU0aIcezP1/5jX/8MP0YiH4SdvB5Y4f/wlDRiLyi3E=
github.com/docker/cli v28.3.3+incompatible h1:fp9ZHAr1WWPGdIWBM1b3zLtgCF+83gRdVMTJsUeiyAo=
github.com/docker/cli v28.3.3+incompatible/go.mod h1:JLrzqnKDaYBop7H2jaqPtU4hHvMKP+vjCwu2uszcLI8=
github.com/docker/distribution v2.8.3+incompatible h1:AtKxIZ36LoNK51+Z6RpzLpddBirtxJnzDrHLEKxTAYk=
github.com/docker/distribution v2.8.3+incompatible/go.mod h1:J2gT2udsDAN96Uj4KfcMRqY0/ypR+oyYUYmja8H+y+w=
github.com/docker/docker v24.0.7+incompatible h1:Wo6l37AuwP3JaMnZa226lzVXGA3F9Ig1seQen0cKYlM=
github.com/docker/docker v24.0.7+incompatible/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk=
github.com/docker/docker-credential-helpers v0.8.0 h1:YQFtbBQb4VrpoPxhFuzEBPQ9E16qz5SpHLS+uswaCp8=
github.com/docker/docker-credential-helpers v0.8.0/go.mod h1:UGFXcuoQ5TxPiB54nHOZ32AWRqQdECoh/Mg0AlEYb40=
github.com/docker/go-connections v0.5.0 h1:USnMq7hx7gwdVZq1L49hLXaFtUdTADjXGp+uj1Br63c=
github.com/docker/go-connections v0.5.0/go.mod h1:ov60Kzw0kKElRwhNs9UlUHAE/F9Fe6GLaXnqyDdmEXc=
github.com/docker/docker v28.3.3+incompatible h1:Dypm25kh4rmk49v1eiVbsAtpAsYURjYkaKubwuBdxEI=
github.com/docker/docker v28.3.3+incompatible/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk=
github.com/docker/docker-credential-helpers v0.9.3 h1:gAm/VtF9wgqJMoxzT3Gj5p4AqIjCBS4wrsOh9yRqcz8=
github.com/docker/docker-credential-helpers v0.9.3/go.mod h1:x+4Gbw9aGmChi3qTLZj8Dfn0TD20M/fuWy0E5+WDeCo=
github.com/docker/go-connections v0.6.0 h1:LlMG9azAe1TqfR7sO+NJttz1gy6KO7VJBh+pMmjSD94=
github.com/docker/go-connections v0.6.0/go.mod h1:AahvXYshr6JgfUJGdDCs2b5EZG/vmaMAntpSFH5BFKE=
github.com/docker/go-metrics v0.0.1 h1:AgB/0SvBxihN0X8OR4SjsblXkbMvalQ8cjmtKQ2rQV8=
github.com/docker/go-metrics v0.0.1/go.mod h1:cG1hvH2utMXtqgqqYE9plW6lDxS3/5ayHzueweSI3Vw=
github.com/docker/go-units v0.5.0 h1:69rxXcBk27SvSaaxTtLh/8llcHD8vYHT7WSdRZ/jvr4=
@ -139,74 +146,82 @@ github.com/docker/libtrust v0.0.0-20160708172513-aabc10ec26b7 h1:UhxFibDNY/bfvqU
github.com/docker/libtrust v0.0.0-20160708172513-aabc10ec26b7/go.mod h1:cyGadeNEkKy96OOhEzfZl+yxihPEzKnqJwvfuSUqbZE=
github.com/dustin/go-humanize v1.0.1 h1:GzkhY7T5VNhEkwH0PVJgjz+fX1rhBrR7pRT3mDkpeCY=
github.com/dustin/go-humanize v1.0.1/go.mod h1:Mu1zIs6XwVuF/gI1OepvI0qD18qycQx+mFykh5fBlto=
github.com/elazarl/goproxy v0.0.0-20230808193330-2592e75ae04a h1:mATvB/9r/3gvcejNsXKSkQ6lcIaNec2nyfOdlTBR2lU=
github.com/elazarl/goproxy v0.0.0-20230808193330-2592e75ae04a/go.mod h1:Ro8st/ElPeALwNFlcTpWmkr6IoMFfkjXAvTHpevnDsM=
github.com/elazarl/goproxy v1.7.2 h1:Y2o6urb7Eule09PjlhQRGNsqRfPmYI3KKQLFpCAV3+o=
github.com/elazarl/goproxy v1.7.2/go.mod h1:82vkLNir0ALaW14Rc399OTTjyNREgmdL2cVoIbS6XaE=
github.com/emirpasic/gods v1.18.1 h1:FXtiHYKDGKCW2KzwZKx0iC0PQmdlorYgdFG9jPXJ1Bc=
github.com/emirpasic/gods v1.18.1/go.mod h1:8tpGGwCnJ5H4r6BWwaV6OrWmMoPhUl5jm/FMNAnJvWQ=
github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4=
github.com/felixge/httpsnoop v1.0.4 h1:NFTV2Zj1bL4mc9sqWACXbQFVBBg2W3GPvqp8/ESS2Wg=
github.com/felixge/httpsnoop v1.0.4/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSwevea8zH2U=
github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo=
github.com/gdamore/encoding v1.0.0 h1:+7OoQ1Bc6eTm5niUzBa0Ctsh6JbMW6Ra+YNuAtDBdko=
github.com/gdamore/encoding v1.0.0/go.mod h1:alR0ol34c49FCSBLjhosxzcPHQbf2trDkoo5dl+VrEg=
github.com/gdamore/encoding v1.0.1 h1:YzKZckdBL6jVt2Gc+5p82qhrGiqMdG/eNs6Wy0u3Uhw=
github.com/gdamore/encoding v1.0.1/go.mod h1:0Z0cMFinngz9kS1QfMjCP8TY7em3bZYeeklsSDPivEo=
github.com/gdamore/tcell/v2 v2.4.1-0.20210905002822-f057f0a857a1/go.mod h1:Az6Jt+M5idSED2YPGtwnfJV0kXohgdCBPmHGSYc1r04=
github.com/gdamore/tcell/v2 v2.7.0 h1:I5LiGTQuwrysAt1KS9wg1yFfOI3arI3ucFrxtd/xqaA=
github.com/gdamore/tcell/v2 v2.7.0/go.mod h1:hl/KtAANGBecfIPxk+FzKvThTqI84oplgbPEmVX60b8=
github.com/gliderlabs/ssh v0.3.5 h1:OcaySEmAQJgyYcArR+gGGTHCyE7nvhEMTlYY+Dp8CpY=
github.com/gliderlabs/ssh v0.3.5/go.mod h1:8XB4KraRrX39qHhT6yxPsHedjA08I/uBVwj4xC+/+z4=
github.com/gdamore/tcell/v2 v2.8.1 h1:KPNxyqclpWpWQlPLx6Xui1pMk8S+7+R37h3g07997NU=
github.com/gdamore/tcell/v2 v2.8.1/go.mod h1:bj8ori1BG3OYMjmb3IklZVWfZUJ1UBQt9JXrOCOhGWw=
github.com/gliderlabs/ssh v0.3.8 h1:a4YXD1V7xMF9g5nTkdfnja3Sxy1PVDCj1Zg4Wb8vY6c=
github.com/gliderlabs/ssh v0.3.8/go.mod h1:xYoytBv1sV0aL3CavoDuJIQNURXkkfPA/wxQ1pL1fAU=
github.com/go-git/gcfg v1.5.1-0.20230307220236-3a3c6141e376 h1:+zs/tPmkDkHx3U66DAb0lQFJrpS6731Oaa12ikc+DiI=
github.com/go-git/gcfg v1.5.1-0.20230307220236-3a3c6141e376/go.mod h1:an3vInlBmSxCcxctByoQdvwPiA7DTK7jaaFDBTtu0ic=
github.com/go-git/go-billy/v5 v5.5.0 h1:yEY4yhzCDuMGSv83oGxiBotRzhwhNr8VZyphhiu+mTU=
github.com/go-git/go-billy/v5 v5.5.0/go.mod h1:hmexnoNsr2SJU1Ju67OaNz5ASJY3+sHgFRpCtpDCKow=
github.com/go-git/go-billy/v5 v5.6.2 h1:6Q86EsPXMa7c3YZ3aLAQsMA0VlWmy43r6FHqa/UNbRM=
github.com/go-git/go-billy/v5 v5.6.2/go.mod h1:rcFC2rAsp/erv7CMz9GczHcuD0D32fWzH+MJAU+jaUU=
github.com/go-git/go-git-fixtures/v4 v4.3.2-0.20231010084843-55a94097c399 h1:eMje31YglSBqCdIqdhKBW8lokaMrL3uTkpGYlE2OOT4=
github.com/go-git/go-git-fixtures/v4 v4.3.2-0.20231010084843-55a94097c399/go.mod h1:1OCfN199q1Jm3HZlxleg+Dw/mwps2Wbk9frAWm+4FII=
github.com/go-git/go-git/v5 v5.11.0 h1:XIZc1p+8YzypNr34itUfSvYJcv+eYdTnTvOZ2vD3cA4=
github.com/go-git/go-git/v5 v5.11.0/go.mod h1:6GFcX2P3NM7FPBfpePbpLd21XxsgdAt+lKqXmCUiUCY=
github.com/go-git/go-git/v5 v5.16.2 h1:fT6ZIOjE5iEnkzKyxTHK1W4HGAsPhqEqiSAssSO77hM=
github.com/go-git/go-git/v5 v5.16.2/go.mod h1:4Ge4alE/5gPs30F2H1esi2gPd69R0C39lolkucHBOp8=
github.com/go-kit/kit v0.8.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as=
github.com/go-logfmt/logfmt v0.3.0/go.mod h1:Qt1PoO58o5twSAckw1HlFXLmHsOX5/0LbT9GBnD5lWE=
github.com/go-logfmt/logfmt v0.4.0/go.mod h1:3RMwSq7FuexP4Kalkev3ejPJsZTpXXBr9+V4qmtdjCk=
github.com/go-logr/logr v1.3.0 h1:2y3SDp0ZXuc6/cjLSZ+Q3ir+QB9T/iG5yYRXqsagWSY=
github.com/go-logr/logr v1.3.0/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY=
github.com/go-logr/logr v1.2.2/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A=
github.com/go-logr/logr v1.4.3 h1:CjnDlHq8ikf6E492q6eKboGOC0T8CDaOvkHCIg8idEI=
github.com/go-logr/logr v1.4.3/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY=
github.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag=
github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE=
github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY=
github.com/go-task/slim-sprig v0.0.0-20230315185526-52ccab3ef572 h1:tfuBGBXKqDEevZMzYi5KSi8KkcZtzBcTgAUUtapy0OI=
github.com/go-task/slim-sprig v0.0.0-20230315185526-52ccab3ef572/go.mod h1:9Pwr4B2jHnOSGXyyzV8ROjYa2ojvAY6HCGYYfMoC3Ls=
github.com/go-task/slim-sprig/v3 v3.0.0 h1:sUs3vkvUymDpBKi3qH1YSqBQk9+9D/8M2mN1vB6EwHI=
github.com/go-task/slim-sprig/v3 v3.0.0/go.mod h1:W848ghGpv3Qj3dhTPRyJypKRiqCdHZiAzKg9hl15HA8=
github.com/go-viper/mapstructure/v2 v2.3.0 h1:27XbWsHIqhbdR5TIC911OfYvgSaW93HM+dX7970Q7jk=
github.com/go-viper/mapstructure/v2 v2.3.0/go.mod h1:oJDH3BJKyqBA2TXFhDsKDGDTlndYOZ6rGS0BRZIxGhM=
github.com/gogo/protobuf v1.1.1/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ=
github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q=
github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q=
github.com/golang-jwt/jwt/v4 v4.0.0/go.mod h1:/xlHOz8bRuivTWchD4jCa+NbatV+wEUSzwAxVc6locg=
github.com/golang-jwt/jwt/v4 v4.2.0/go.mod h1:/xlHOz8bRuivTWchD4jCa+NbatV+wEUSzwAxVc6locg=
github.com/golang-jwt/jwt/v4 v4.5.0 h1:7cYmW1XlMY7h7ii7UhUyChSgS5wUJEnm9uZVTGqOWzg=
github.com/golang-jwt/jwt/v4 v4.5.0/go.mod h1:m21LjoU+eqJr34lmDMbreY2eSTRJ1cv77w39/MY0Ch0=
github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da h1:oI5xCqsCo564l8iNU+DwB5epxmsaqB+rhGL0m5jtYqE=
github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc=
github.com/golang-jwt/jwt/v4 v4.5.2 h1:YtQM7lnr8iZ+j5q71MGKkNw9Mn7AjHM68uc9g5fXeUI=
github.com/golang-jwt/jwt/v4 v4.5.2/go.mod h1:m21LjoU+eqJr34lmDMbreY2eSTRJ1cv77w39/MY0Ch0=
github.com/golang/groupcache v0.0.0-20241129210726-2c02b8208cf8 h1:f+oWsMOmNPc8JmEHVZIycC7hBoQxHH9pNKQORJNozsQ=
github.com/golang/groupcache v0.0.0-20241129210726-2c02b8208cf8/go.mod h1:wcDNUvekVysuuOpQKo3191zZyTpiI6se1N1ULghS0sw=
github.com/golang/mock v1.6.0 h1:ErTB+efbowRARo13NNdxyJji2egdxLGQhRaY+DUumQc=
github.com/golang/mock v1.6.0/go.mod h1:p6yTPP+5HYm5mzsMV8JkE6ZKdX+/wYM6Hr+LicevLPs=
github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
github.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
github.com/golang/protobuf v1.3.2/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk=
github.com/golang/protobuf v1.5.2/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY=
github.com/golang/protobuf v1.5.3 h1:KhyjKVUg7Usr/dYsdSqoFveMYd5ko72D+zANwlG1mmg=
github.com/golang/protobuf v1.5.3/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY=
github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU=
github.com/google/go-cmp v0.5.2/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
github.com/google/go-cmp v0.5.8/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY=
github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI=
github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY=
github.com/google/go-containerregistry v0.18.0 h1:ShE7erKNPqRh5ue6Z9DUOlk04WsnFWPO6YGr3OxnfoQ=
github.com/google/go-containerregistry v0.18.0/go.mod h1:u0qB2l7mvtWVR5kNcbFIhFY1hLbf8eeGapA+vbFDCtQ=
github.com/google/go-cmp v0.7.0 h1:wk8382ETsv4JYUZwIsn6YpYiWiBsYLSJiTsyBybVuN8=
github.com/google/go-cmp v0.7.0/go.mod h1:pXiqmnSA92OHEEa9HXL2W4E7lf9JzCmGVUdgjX3N/iU=
github.com/google/go-containerregistry v0.20.6 h1:cvWX87UxxLgaH76b4hIvya6Dzz9qHB31qAwjAohdSTU=
github.com/google/go-containerregistry v0.20.6/go.mod h1:T0x8MuoAoKX/873bkeSfLD2FAkwCDf9/HZgsFJ02E2Y=
github.com/google/go-github/v30 v30.1.0 h1:VLDx+UolQICEOKu2m4uAoMti1SxuEBAl7RSEG16L+Oo=
github.com/google/go-github/v30 v30.1.0/go.mod h1:n8jBpHl45a/rlBUtRJMOG4GhNADUQFEufcolZ95JfU8=
github.com/google/go-querystring v1.0.0/go.mod h1:odCYkC5MyYFN7vkCjXpyrEuKhc/BUO6wN/zVPAxq5ck=
github.com/google/go-querystring v1.1.0 h1:AnCroh3fv4ZBgVIf1Iwtovgjaw/GiKJo8M8yD/fhyJ8=
github.com/google/go-querystring v1.1.0/go.mod h1:Kcdr2DB4koayq7X8pmAG4sNG59So17icRSOU623lUBU=
github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg=
github.com/google/pprof v0.0.0-20210407192527-94a9f03dee38 h1:yAJXTCF9TqKcTiHJAE8dj7HMvPfh66eeA2JYW7eFpSE=
github.com/google/pprof v0.0.0-20210407192527-94a9f03dee38/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE=
github.com/google/pprof v0.0.0-20250403155104-27863c87afa6 h1:BHT72Gu3keYf3ZEu2J0b1vyeLSOYI8bm5wbJM/8yDe8=
github.com/google/pprof v0.0.0-20250403155104-27863c87afa6/go.mod h1:boTsfXsheKC2y+lKOCMpSfarhxDeIzfZG1jqGcPl3cA=
github.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510 h1:El6M4kTTCOh6aBiKaUGG7oYTSPP8MxqL4YI3kZKwcP4=
github.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510/go.mod h1:pupxD2MaaD3pAXIBCelhxNneeOaAeabZDe5s4K6zSpQ=
github.com/google/uuid v1.1.1/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
github.com/google/uuid v1.4.0 h1:MtMxsa51/r9yyhkyLsVeVt0B+BGQZzpQiTQ4eHZ8bc4=
github.com/google/uuid v1.4.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
github.com/gorilla/mux v1.8.0 h1:i40aqfkR1h2SlN9hojwV5ZA91wcXFOvkdNIeFDP5koI=
github.com/gorilla/mux v1.8.0/go.mod h1:DVbg23sWSpFRCP0SfiEN6jmj59UnW/n46BH5rLB71So=
github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0=
github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
github.com/gorilla/mux v1.8.1 h1:TuBL49tXwgrFYWhqrNgrUNEY92u81SPhu7sTdzQEiWY=
github.com/gorilla/mux v1.8.1/go.mod h1:AKf9I4AEqPTmMytcMc0KkNouC66V3BtZ4qD5fmWSiMQ=
github.com/grpc-ecosystem/grpc-gateway/v2 v2.22.0 h1:asbCHRVmodnJTuQ3qamDwqVOIjwqUPTYmYuemVOx+Ys=
github.com/grpc-ecosystem/grpc-gateway/v2 v2.22.0/go.mod h1:ggCgvZ2r7uOoQjOyu2Y1NhHmEPPzzuhWgcza5M1Ji1I=
github.com/hectane/go-acl v0.0.0-20190604041725-da78bae5fc95 h1:S4qyfL2sEm5Budr4KVMyEniCy+PbS55651I/a+Kn/NQ=
github.com/hectane/go-acl v0.0.0-20190604041725-da78bae5fc95/go.mod h1:QiyDdbZLaJ/mZP4Zwc9g2QsfaEA4o7XvvgZegSci5/E=
github.com/heroku/color v0.0.6 h1:UTFFMrmMLFcL3OweqP1lAdp8i1y/9oHqkeHjQ/b/Ny0=
@ -217,10 +232,6 @@ github.com/inconshreveable/mousetrap v1.1.0/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLf
github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99 h1:BQSFePA1RWJOlocH6Fxy8MmwDt+yVQYULKfN0RoTN8A=
github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99/go.mod h1:1lJo3i6rXxKeerYnT8Nvf0QmHCRC1n8sfWVwXF2Frvo=
github.com/jmespath/go-jmespath v0.0.0-20180206201540-c2b33e8439af/go.mod h1:Nht3zPeWKUH0NzdCt2Blrr5ys8VGpn0CEB0cQHVjt7k=
github.com/jmespath/go-jmespath v0.4.0 h1:BEgLn5cpjn8UN1mAw4NjwDrS35OdebyEtFe+9YPoQUg=
github.com/jmespath/go-jmespath v0.4.0/go.mod h1:T8mJZnbsbmF+m6zOOFylbeCJqk5+pHWvzYPziyZiYoo=
github.com/jmespath/go-jmespath/internal/testify v1.5.1 h1:shLQSRRSCCPj3f2gpwzGwWFoC7ycTf1rcQZHOlsJ6N8=
github.com/jmespath/go-jmespath/internal/testify v1.5.1/go.mod h1:L3OGu8Wl2/fWfCI6z80xFu9LTZmf1ZRjMHUOPmWr69U=
github.com/jpillora/backoff v0.0.0-20180909062703-3050d21c67d7/go.mod h1:2iMrUgbbvHEiQClaW2NsSzMyGHqN+rDFqY705q49KG0=
github.com/json-iterator/go v1.1.6/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU=
github.com/json-iterator/go v1.1.7/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4=
@ -229,8 +240,8 @@ github.com/kevinburke/ssh_config v1.2.0 h1:x584FjTGwHzMwvHx18PXxbBVzfnxogHaAReU4
github.com/kevinburke/ssh_config v1.2.0/go.mod h1:CT57kijsi8u/K/BOFA39wgDQJ9CxiF4nAY/ojJ6r6mM=
github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8=
github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck=
github.com/klauspost/compress v1.17.1 h1:NE3C767s2ak2bweCZo3+rdP4U/HoyVXLv/X9f2gPS5g=
github.com/klauspost/compress v1.17.1/go.mod h1:ntbaceVETuRiXiv4DpjP66DpAtAGkEQskQzEyD//IeE=
github.com/klauspost/compress v1.18.0 h1:c/Cqfb0r+Yi+JtIEq73FWXVkRonBlf0CRNYc8Zttxdo=
github.com/klauspost/compress v1.18.0/go.mod h1:2Pp+KzxcywXVXMr50+X0Q/Lsb43OQHYWRCY2AiWywWQ=
github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ=
github.com/kr/logfmt v0.0.0-20140226030751-b84e30acd515/go.mod h1:+0opPa2QZZtGFBFZlji/RkVcI2GknAs/DXo4wKdlNEc=
github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo=
@ -241,6 +252,8 @@ github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ=
github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI=
github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY=
github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE=
github.com/kylelemons/godebug v1.1.0 h1:RPNrshWIDI6G2gRW9EHilWtl7Z6Sb1BR0xunSBf0SNc=
github.com/kylelemons/godebug v1.1.0/go.mod h1:9/0rRGxNHcop5bhtWyNeEfOS8JIWk580+fNqagV/RAw=
github.com/lucasb-eyer/go-colorful v1.2.0 h1:1nnpGOrhyZZuNyfu1QjKiUICQ74+3FNCN69Aj6K7nkY=
github.com/lucasb-eyer/go-colorful v1.2.0/go.mod h1:R4dSotOR9KMtayYi1e77YzuveK+i7ruzyGqttikkLy0=
github.com/mattn/go-colorable v0.1.1/go.mod h1:FuOcm+DKB9mbwrcAfNl7/TZVBZ6rcnceauSikq3lYCQ=
@ -253,103 +266,113 @@ github.com/mattn/go-isatty v0.0.16/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/
github.com/mattn/go-isatty v0.0.20 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWEY=
github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y=
github.com/mattn/go-runewidth v0.0.13/go.mod h1:Jdepj2loyihRzMpdS35Xk/zdY8IAYHsh153qUoGf23w=
github.com/mattn/go-runewidth v0.0.15 h1:UNAjwbU9l54TA3KzvqLGxwWjHmMgBUVhBiTjelZgg3U=
github.com/mattn/go-runewidth v0.0.15/go.mod h1:Jdepj2loyihRzMpdS35Xk/zdY8IAYHsh153qUoGf23w=
github.com/mattn/go-runewidth v0.0.16 h1:E5ScNMtiwvlvB5paMFdw9p4kSQzbXFikJ5SQO6TULQc=
github.com/mattn/go-runewidth v0.0.16/go.mod h1:Jdepj2loyihRzMpdS35Xk/zdY8IAYHsh153qUoGf23w=
github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0=
github.com/matttproud/golang_protobuf_extensions v1.0.4 h1:mmDVorXM7PCGKw94cs5zkfA9PSy5pEvNWRP0ET0TIVo=
github.com/matttproud/golang_protobuf_extensions v1.0.4/go.mod h1:BSXmuO+STAnVfrANrmjBb36TMTDstsz7MSK+HVaYKv4=
github.com/mgutz/ansi v0.0.0-20170206155736-9520e82c474b/go.mod h1:01TrycV0kFyexm33Z7vhZRXopbI8J3TDReVlkTgMUxE=
github.com/mitchellh/go-homedir v1.1.0 h1:lukF9ziXFxDFPkA1vsr5zpc1XuPDn/wFntq5mG+4E0Y=
github.com/mitchellh/go-homedir v1.1.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0=
github.com/mitchellh/ioprogress v0.0.0-20180201004757-6a23b12fa88e h1:Qa6dnn8DlasdXRnacluu8HzPts0S1I9zvvUPDbBnXFI=
github.com/mitchellh/ioprogress v0.0.0-20180201004757-6a23b12fa88e/go.mod h1:waEya8ee1Ro/lgxpVhkJI4BVASzkm3UZqkx/cFJiYHM=
github.com/moby/buildkit v0.11.6 h1:VYNdoKk5TVxN7k4RvZgdeM4GOyRvIi4Z8MXOY7xvyUs=
github.com/moby/buildkit v0.11.6/go.mod h1:GCqKfHhz+pddzfgaR7WmHVEE3nKKZMMDPpK8mh3ZLv4=
github.com/moby/buildkit v0.22.0 h1:aWN06w1YGSVN1XfeZbj2ZbgY+zi5xDAjEFI8Cy9fTjA=
github.com/moby/buildkit v0.22.0/go.mod h1:j4pP5hxiTWcz7xuTK2cyxQislHl/N2WWHzOy43DlLJw=
github.com/moby/docker-image-spec v1.3.1 h1:jMKff3w6PgbfSa69GfNg+zN/XLhfXJGnEx3Nl2EsFP0=
github.com/moby/docker-image-spec v1.3.1/go.mod h1:eKmb5VW8vQEh/BAr2yvVNvuiJuY6UIocYsFu/DxxRpo=
github.com/moby/go-archive v0.1.0 h1:Kk/5rdW/g+H8NHdJW2gsXyZ7UnzvJNOy6VKJqueWdcQ=
github.com/moby/go-archive v0.1.0/go.mod h1:G9B+YoujNohJmrIYFBpSd54GTUB4lt9S+xVQvsJyFuo=
github.com/moby/patternmatcher v0.6.0 h1:GmP9lR19aU5GqSSFko+5pRqHi+Ohk1O69aFiKkVGiPk=
github.com/moby/patternmatcher v0.6.0/go.mod h1:hDPoyOpDY7OrrMDLaYoY3hf52gNCR/YOUYxkhApJIxc=
github.com/moby/sys/sequential v0.5.0 h1:OPvI35Lzn9K04PBbCLW0g4LcFAJgHsvXsRyewg5lXtc=
github.com/moby/sys/sequential v0.5.0/go.mod h1:tH2cOOs5V9MlPiXcQzRC+eEyab644PWKGRYaaV5ZZlo=
github.com/moby/term v0.5.0 h1:xt8Q1nalod/v7BqbG21f8mQPqH+xAaC9C3N3wfWbVP0=
github.com/moby/term v0.5.0/go.mod h1:8FzsFHVUBGZdbDsJw/ot+X+d5HLUbvklYLJ9uGfcI3Y=
github.com/moby/sys/atomicwriter v0.1.0 h1:kw5D/EqkBwsBFi0ss9v1VG3wIkVhzGvLklJ+w3A14Sw=
github.com/moby/sys/atomicwriter v0.1.0/go.mod h1:Ul8oqv2ZMNHOceF643P6FKPXeCmYtlQMvpizfsSoaWs=
github.com/moby/sys/sequential v0.6.0 h1:qrx7XFUd/5DxtqcoH1h438hF5TmOvzC/lspjy7zgvCU=
github.com/moby/sys/sequential v0.6.0/go.mod h1:uyv8EUTrca5PnDsdMGXhZe6CCe8U/UiTWd+lL+7b/Ko=
github.com/moby/sys/user v0.4.0 h1:jhcMKit7SA80hivmFJcbB1vqmw//wU61Zdui2eQXuMs=
github.com/moby/sys/user v0.4.0/go.mod h1:bG+tYYYJgaMtRKgEmuueC0hJEAZWwtIbZTB+85uoHjs=
github.com/moby/sys/userns v0.1.0 h1:tVLXkFOxVu9A64/yh59slHVv9ahO9UIev4JZusOLG/g=
github.com/moby/sys/userns v0.1.0/go.mod h1:IHUYgu/kao6N8YZlp9Cf444ySSvCmDlmzUcYfDHOl28=
github.com/moby/term v0.5.2 h1:6qk3FJAFDs6i/q3W/pQ97SX192qKfZgGjCQqfCJkgzQ=
github.com/moby/term v0.5.2/go.mod h1:d3djjFCrjnB+fl8NJux+EJzu0msscUP+f8it8hPkFLc=
github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q=
github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q=
github.com/modern-go/reflect2 v0.0.0-20180701023420-4b7aa43c6742/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0=
github.com/modern-go/reflect2 v1.0.1/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0=
github.com/morikuni/aec v1.0.0 h1:nP9CBfwrvYnBRgY6qfDQkygYDmYwOilePFkwzv4dU8A=
github.com/morikuni/aec v1.0.0/go.mod h1:BbKIizmSmc5MMPqRYbxO4ZU0S0+P200+tUnFx7PXmsc=
github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 h1:C3w9PqII01/Oq1c1nUAm88MOHcQC9l5mIlSMApZMrHA=
github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ=
github.com/mwitkow/go-conntrack v0.0.0-20161129095857-cc309e4a2223/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U=
github.com/onsi/ginkgo v1.6.0 h1:Ix8l273rp3QzYgXSR+c8d1fTG7UPgYkOSELPhiY/YGw=
github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE=
github.com/onsi/ginkgo/v2 v2.15.0 h1:79HwNRBAZHOEwrczrgSOPy+eFTTlIGELKy5as+ClttY=
github.com/onsi/ginkgo/v2 v2.15.0/go.mod h1:HlxMHtYF57y6Dpf+mc5529KKmSq9h2FpCF+/ZkwUxKM=
github.com/onsi/ginkgo/v2 v2.23.4 h1:ktYTpKJAVZnDT4VjxSbiBenUjmlL/5QkBEocaWXiQus=
github.com/onsi/ginkgo/v2 v2.23.4/go.mod h1:Bt66ApGPBFzHyR+JO10Zbt0Gsp4uWxu5mIOTusL46e8=
github.com/onsi/gomega v1.5.0/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY=
github.com/onsi/gomega v1.31.1 h1:KYppCUK+bUgAZwHOu7EXVBKyQA6ILvOESHkn/tgoqvo=
github.com/onsi/gomega v1.31.1/go.mod h1:y40C95dwAD1Nz36SsEnxvfFe8FFfNxzI5eJ0EYGyAy0=
github.com/onsi/gomega v1.38.0 h1:c/WX+w8SLAinvuKKQFh77WEucCnPk4j2OTUr7lt7BeY=
github.com/onsi/gomega v1.38.0/go.mod h1:OcXcwId0b9QsE7Y49u+BTrL4IdKOBOKnD6VQNTJEB6o=
github.com/opencontainers/go-digest v1.0.0 h1:apOUWs51W5PlhuyGyz9FCeeBIOUDA/6nW8Oi/yOhh5U=
github.com/opencontainers/go-digest v1.0.0/go.mod h1:0JzlMkj0TRzQZfJkVvzbP0HBR3IKzErnv2BNG4W4MAM=
github.com/opencontainers/image-spec v1.1.0-rc5 h1:Ygwkfw9bpDvs+c9E34SdgGOj41dX/cbdlwvlWt0pnFI=
github.com/opencontainers/image-spec v1.1.0-rc5/go.mod h1:X4pATf0uXsnn3g5aiGIsVnJBR4mxhKzfwmvK/B2NTm8=
github.com/opencontainers/runc v1.1.9 h1:XR0VIHTGce5eWPkaPesqTBrhW2yAcaraWfsEalNwQLM=
github.com/opencontainers/runc v1.1.9/go.mod h1:CbUumNnWCuTGFukNXahoo/RFBZvDAgRh/smNYNOhA50=
github.com/opencontainers/selinux v1.11.0 h1:+5Zbo97w3Lbmb3PeqQtpmTkMwsW5nRI3YaLpt7tQ7oU=
github.com/opencontainers/selinux v1.11.0/go.mod h1:E5dMC3VPuVvVHDYmi78qvhJp8+M586T4DlDRYpFkyec=
github.com/opencontainers/image-spec v1.1.1 h1:y0fUlFfIZhPF1W537XOLg0/fcx6zcHCJwooC2xJA040=
github.com/opencontainers/image-spec v1.1.1/go.mod h1:qpqAh3Dmcf36wStyyWU+kCeDgrGnAve2nCC8+7h8Q0M=
github.com/opencontainers/selinux v1.12.0 h1:6n5JV4Cf+4y0KNXW48TLj5DwfXpvWlxXplUkdTrmPb8=
github.com/opencontainers/selinux v1.12.0/go.mod h1:BTPX+bjVbWGXw7ZZWUbdENt8w0htPSrlgOOysQaU62U=
github.com/pelletier/go-toml v1.9.5 h1:4yBQzkHv+7BHq2PQUZF3Mx0IYxG7LsP222s7Agd3ve8=
github.com/pelletier/go-toml v1.9.5/go.mod h1:u1nR/EPcESfeI/szUZKdtJ0xRNbUoANCkoOuaOx1Y+c=
github.com/pjbgf/sha1cd v0.3.0 h1:4D5XXmUUBUl/xQ6IjCkEAbqXskkq/4O7LmGn0AqMDs4=
github.com/pjbgf/sha1cd v0.3.0/go.mod h1:nZ1rrWOcGJ5uZgEEVL1VUM9iRQiZvWdbZjkKyFzPPsI=
github.com/pjbgf/sha1cd v0.3.2 h1:a9wb0bp1oC2TGwStyn0Umc/IGKQnEgF0vVaZ8QF8eo4=
github.com/pjbgf/sha1cd v0.3.2/go.mod h1:zQWigSxVmsHEZow5qaLtPYxpcKMMQpa09ixqBxuCS6A=
github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4=
github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
github.com/planetscale/vtprotobuf v0.6.1-0.20240319094008-0393e58bdf10 h1:GFCKgmp0tecUJ0sJuv4pzYCqS9+RGSn52M3FUwPs+uo=
github.com/planetscale/vtprotobuf v0.6.1-0.20240319094008-0393e58bdf10/go.mod h1:t/avpk3KcrXxUnYOhZhMXJlSEyie6gQbtLq5NM3loB8=
github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
github.com/prometheus/client_golang v0.9.1/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw=
github.com/prometheus/client_golang v1.0.0/go.mod h1:db9x61etRT2tGnBNRi70OPL5FsnadC4Ky3P0J6CfImo=
github.com/prometheus/client_golang v1.1.0/go.mod h1:I1FGZT9+L76gKKOs5djB6ezCbFQP1xR9D75/vuwEF3g=
github.com/prometheus/client_golang v1.17.0 h1:rl2sfwZMtSthVU752MqfjQozy7blglC+1SOtjMAMh+Q=
github.com/prometheus/client_golang v1.17.0/go.mod h1:VeL+gMmOAxkS2IqfCq0ZmHSL+LjWfWDUmp1mBz9JgUY=
github.com/prometheus/client_golang v1.22.0 h1:rb93p9lokFEsctTys46VnV1kLCDpVZ0a/Y92Vm0Zc6Q=
github.com/prometheus/client_golang v1.22.0/go.mod h1:R7ljNsLXhuQXYZYtw6GAE9AZg8Y7vEW5scdCXrWRXC0=
github.com/prometheus/client_model v0.0.0-20180712105110-5c3871d89910/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo=
github.com/prometheus/client_model v0.0.0-20190129233127-fd36f4220a90/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA=
github.com/prometheus/client_model v0.5.0 h1:VQw1hfvPvk3Uv6Qf29VrPF32JB6rtbgI6cYPYQjL0Qw=
github.com/prometheus/client_model v0.5.0/go.mod h1:dTiFglRmd66nLR9Pv9f0mZi7B7fk5Pm3gvsjB5tr+kI=
github.com/prometheus/client_model v0.6.2 h1:oBsgwpGs7iVziMvrGhE53c/GrLUsZdHnqNwqPLxwZyk=
github.com/prometheus/client_model v0.6.2/go.mod h1:y3m2F6Gdpfy6Ut/GBsUqTWZqCUvMVzSfMLjcu6wAwpE=
github.com/prometheus/common v0.4.1/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4=
github.com/prometheus/common v0.6.0/go.mod h1:eBmuwkDJBwy6iBfxCBob6t6dR6ENT/y+J+Zk0j9GMYc=
github.com/prometheus/common v0.44.0 h1:+5BrQJwiBB9xsMygAB3TNvpQKOwlkc25LbISbrdOOfY=
github.com/prometheus/common v0.44.0/go.mod h1:ofAIvZbQ1e/nugmZGz4/qCb9Ap1VoSTIO7x0VV9VvuY=
github.com/prometheus/common v0.64.0 h1:pdZeA+g617P7oGv1CzdTzyeShxAGrTBsolKNOLQPGO4=
github.com/prometheus/common v0.64.0/go.mod h1:0gZns+BLRQ3V6NdaerOhMbwwRbNh9hkGINtQAsP5GS8=
github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk=
github.com/prometheus/procfs v0.0.2/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA=
github.com/prometheus/procfs v0.0.3/go.mod h1:4A/X28fw3Fc593LaREMrKMqOKvUAntwMDaekg4FpcdQ=
github.com/prometheus/procfs v0.12.0 h1:jluTpSng7V9hY0O2R9DzzJHYb2xULk9VTR1V1R/k6Bo=
github.com/prometheus/procfs v0.12.0/go.mod h1:pcuDEFsWDnvcgNzo4EEweacyhjeA9Zk3cnaOZAZEfOo=
github.com/prometheus/procfs v0.16.1 h1:hZ15bTNuirocR6u0JZ6BAHHmwS1p8B4P6MRqxtzMyRg=
github.com/prometheus/procfs v0.16.1/go.mod h1:teAbpZRB1iIAJYREa1LsoWUXykVXA1KlTmWl8x/U+Is=
github.com/rivo/tview v0.0.0-20220307222120-9994674d60a8 h1:xe+mmCnDN82KhC010l3NfYlA8ZbOuzbXAzSYBa6wbMc=
github.com/rivo/tview v0.0.0-20220307222120-9994674d60a8/go.mod h1:WIfMkQNY+oq/mWwtsjOYHIZBuwthioY2srOmljJkTnk=
github.com/rivo/uniseg v0.2.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc=
github.com/rivo/uniseg v0.4.3 h1:utMvzDsuh3suAEnhH0RdHmoPbU648o6CvXxTx4SBMOw=
github.com/rivo/uniseg v0.4.3/go.mod h1:FN3SvrM+Zdj16jyLfmOkMNblXMcoc8DfTHruCPUcx88=
github.com/rogpeppe/fastuuid v1.1.0/go.mod h1:jVj6XXZzXRy/MSR5jhDC/2q6DgLz+nrA6LYCDYWNEvQ=
github.com/rogpeppe/go-internal v1.11.0 h1:cWPaGQEPrBb5/AsnsZesgZZ9yb1OQ+GOISoDNXVBh4M=
github.com/rogpeppe/go-internal v1.11.0/go.mod h1:ddIwULY96R17DhadqLgMfk9H9tvdUzkipdSkR5nkCZA=
github.com/rogpeppe/go-internal v1.14.1 h1:UQB4HGPB6osV0SQTLymcB4TgvyWu6ZyliaW0tI/otEQ=
github.com/rogpeppe/go-internal v1.14.1/go.mod h1:MaRKkUm5W0goXpeCfT7UZI6fk/L7L7so1lCWt35ZSgc=
github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM=
github.com/sabhiram/go-gitignore v0.0.0-20210923224102-525f6e181f06 h1:OkMGxebDjyw0ULyrTYWeN0UNCCkmCWfjPnIA2W6oviI=
github.com/sabhiram/go-gitignore v0.0.0-20210923224102-525f6e181f06/go.mod h1:+ePHsJ1keEjQtpvf9HHw0f4ZeJ0TLRsxhunSI2hYJSs=
github.com/sclevine/spec v1.4.0 h1:z/Q9idDcay5m5irkZ28M7PtQM4aOISzOpj4bUPkDee8=
github.com/sclevine/spec v1.4.0/go.mod h1:LvpgJaFyvQzRvc1kaDs0bulYwzC70PbiYjC4QnFHkOM=
github.com/sergi/go-diff v1.0.0/go.mod h1:0CfEIISq7TuYL3j771MWULgwwjU+GofnZX9QAmXWZgo=
github.com/sergi/go-diff v1.2.0 h1:XU+rvMAioB0UC3q1MFrIQy4Vo5/4VsRDQQXHsEya6xQ=
github.com/sergi/go-diff v1.2.0/go.mod h1:STckp+ISIX8hZLjrqAeVduY0gWCT9IjLuqbuNXdaHfM=
github.com/sergi/go-diff v1.3.2-0.20230802210424-5b0b94c5c0d3 h1:n661drycOFuPLCN3Uc8sB6B/s6Z4t2xvBgU1htSHuq8=
github.com/sergi/go-diff v1.3.2-0.20230802210424-5b0b94c5c0d3/go.mod h1:A0bzQcvG0E7Rwjx0REVgAGH58e96+X0MeOfepqsbeW4=
github.com/sirupsen/logrus v1.2.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo=
github.com/sirupsen/logrus v1.7.0/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0=
github.com/sirupsen/logrus v1.9.3 h1:dueUQJ1C2q9oE3F7wvmSGAaVtTmUizReu6fjN8uqzbQ=
github.com/sirupsen/logrus v1.9.3/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ=
github.com/skeema/knownhosts v1.2.1 h1:SHWdIUa82uGZz+F+47k8SY4QhhI291cXCpopT1lK2AQ=
github.com/skeema/knownhosts v1.2.1/go.mod h1:xYbVRSPxqBZFrdmDyMmsOs+uX1UZC3nTN3ThzgDxUwo=
github.com/skeema/knownhosts v1.3.1 h1:X2osQ+RAjK76shCbvhHHHVl3ZlgDm8apHEHFqRjnBY8=
github.com/skeema/knownhosts v1.3.1/go.mod h1:r7KTdC8l4uxWRyK2TpQZ/1o5HaSzh06ePQNxPwTcfiY=
github.com/smartystreets/assertions v1.0.0/go.mod h1:kHHU4qYBaI3q23Pp3VPrmWhuIUrLW/7eUrw0BU5VaoM=
github.com/smartystreets/go-aws-auth v0.0.0-20180515143844-0c1422d1fdb9/go.mod h1:SnhjPscd9TpLiy1LpzGSKh3bXCfxxXuqd9xmQJy3slM=
github.com/smartystreets/gunit v1.0.0/go.mod h1:qwPWnhz6pn0NnRBP++URONOVyNkPyr4SauJk4cUOwJs=
github.com/spf13/cobra v1.8.0 h1:7aJaZx1B85qltLMc546zn58BxxfZdR/W22ej9CFoEf0=
github.com/spf13/cobra v1.8.0/go.mod h1:WXLWApfZ71AjXPya3WOlMsY9yMs7YeiHhFVlvLyhcho=
github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA=
github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg=
github.com/spf13/cobra v1.9.1 h1:CXSaggrXdbHK9CF+8ywj8Amf7PBRmPCOJugH954Nnlo=
github.com/spf13/cobra v1.9.1/go.mod h1:nDyEzZ8ogv936Cinf6g1RU9MRY64Ir93oCnqb9wxYW0=
github.com/spf13/pflag v1.0.6 h1:jFzHGLGAlb3ruxLB8MhbI6A8+AQX/2eW4qeyNZXNp2o=
github.com/spf13/pflag v1.0.6/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg=
github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw=
@ -362,8 +385,8 @@ github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/
github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU=
github.com/stretchr/testify v1.8.2/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4=
github.com/stretchr/testify v1.8.4 h1:CcVxjf3Q8PM0mHUKJCdn+eZZtm5yQwehR5yeSVQQcUk=
github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo=
github.com/stretchr/testify v1.10.0 h1:Xv5erBjTwe/5IxqUQTdXv5kgmIvbHo3QQyRwhJsOfJA=
github.com/stretchr/testify v1.10.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY=
github.com/tj/assert v0.0.0-20171129193455-018094318fb0/go.mod h1:mZ9/Rh9oLWpLLDRpvE+3b7gP/C2YyLFYxNmcLnPTMe0=
github.com/tj/assert v0.0.3 h1:Df/BlaZ20mq6kuai7f5z2TvPFiwC3xaWJSDQNiIS3Rk=
github.com/tj/assert v0.0.3/go.mod h1:Ne6X72Q+TB1AteidzQncjw9PabbMp4PBMZ1k+vd1Pvk=
@ -371,35 +394,68 @@ github.com/tj/go-buffer v1.1.0/go.mod h1:iyiJpfFcR2B9sXu7KvjbT9fpM4mOelRSDTbntVj
github.com/tj/go-elastic v0.0.0-20171221160941-36157cbbebc2/go.mod h1:WjeM0Oo1eNAjXGDx2yma7uG2XoyRZTq1uv3M/o7imD0=
github.com/tj/go-kinesis v0.0.0-20171128231115-08b17f58cb1b/go.mod h1:/yhzCV0xPfx6jb1bBgRFjl5lytqVqZXEaeqWP8lTEao=
github.com/tj/go-spin v1.1.0/go.mod h1:Mg1mzmePZm4dva8Qz60H2lHwmJ2loum4VIrLgVnKwh4=
github.com/vbatts/tar-split v0.11.5 h1:3bHCTIheBm1qFTcgh9oPu+nNBtX+XJIupG/vacinCts=
github.com/vbatts/tar-split v0.11.5/go.mod h1:yZbwRsSeGjusneWgA781EKej9HF8vme8okylkAeNKLk=
github.com/tonistiigi/go-csvvalue v0.0.0-20240814133006-030d3b2625d0 h1:2f304B10LaZdB8kkVEaoXvAMVan2tl9AiK4G0odjQtE=
github.com/tonistiigi/go-csvvalue v0.0.0-20240814133006-030d3b2625d0/go.mod h1:278M4p8WsNh3n4a1eqiFcV2FGk7wE5fwUpUom9mK9lE=
github.com/vbatts/tar-split v0.12.1 h1:CqKoORW7BUWBe7UL/iqTVvkTBOF8UvOMKOIZykxnnbo=
github.com/vbatts/tar-split v0.12.1/go.mod h1:eF6B6i6ftWQcDqEn3/iGFRFRo8cBIMSJVOpnNdfTMFA=
github.com/xanzy/ssh-agent v0.3.3 h1:+/15pJfg/RsTxqYcX6fHqOXZwwMP+2VyYWJeWM2qQFM=
github.com/xanzy/ssh-agent v0.3.3/go.mod h1:6dzNDKs0J9rVPHPhaGCukekBHKqfl+L3KghI1Bc68Uw=
github.com/xeipuuv/gojsonpointer v0.0.0-20180127040702-4e3ac2762d5f h1:J9EGpcZtP0E/raorCMxlFGSTBrsSlaDGf3jU/qvAE2c=
github.com/xeipuuv/gojsonpointer v0.0.0-20180127040702-4e3ac2762d5f/go.mod h1:N2zxlSyiKSe5eX1tZViRH5QA0qijqEDrYZiPEAiq3wU=
github.com/xeipuuv/gojsonreference v0.0.0-20180127040603-bd5ef7bd5415 h1:EzJWgHovont7NscjpAxXsDA8S8BMYve8Y5+7cuRE7R0=
github.com/xeipuuv/gojsonreference v0.0.0-20180127040603-bd5ef7bd5415/go.mod h1:GwrjFmJcFw6At/Gs6z4yjiIwzuJ1/+UwLxMQDVQXShQ=
github.com/xeipuuv/gojsonschema v1.2.0 h1:LhYJRs+L4fBtjZUfuSZIKGeVu0QRy8e5Xi7D17UxZ74=
github.com/xeipuuv/gojsonschema v1.2.0/go.mod h1:anYRn/JVcOK2ZgGU+IjEV4nwlhoK5sQluxsYJ78Id3Y=
github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
github.com/yuin/goldmark v1.3.5/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k=
github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY=
go.opentelemetry.io/auto/sdk v1.1.0 h1:cH53jehLUN6UFLY71z+NDOiNJqDdPRaXzTel0sJySYA=
go.opentelemetry.io/auto/sdk v1.1.0/go.mod h1:3wSPjt5PWp2RhlCcmmOial7AvC4DQqZb7a7wCow3W8A=
go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.61.0 h1:F7Jx+6hwnZ41NSFTO5q4LYDtJRXBf2PD0rNBkeB/lus=
go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.61.0/go.mod h1:UHB22Z8QsdRDrnAtX4PntOl36ajSxcdUMt1sF7Y6E7Q=
go.opentelemetry.io/otel v1.36.0 h1:UumtzIklRBY6cI/lllNZlALOF5nNIzJVb16APdvgTXg=
go.opentelemetry.io/otel v1.36.0/go.mod h1:/TcFMXYjyRNh8khOAO9ybYkqaDBb/70aVwkNML4pP8E=
go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.33.0 h1:Vh5HayB/0HHfOQA7Ctx69E/Y/DcQSMPpKANYVMQ7fBA=
go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.33.0/go.mod h1:cpgtDBaqD/6ok/UG0jT15/uKjAY8mRA53diogHBg3UI=
go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.33.0 h1:wpMfgF8E1rkrT1Z6meFh1NDtownE9Ii3n3X2GJYjsaU=
go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.33.0/go.mod h1:wAy0T/dUbs468uOlkT31xjvqQgEVXv58BRFWEgn5v/0=
go.opentelemetry.io/otel/metric v1.36.0 h1:MoWPKVhQvJ+eeXWHFBOPoBOi20jh6Iq2CcCREuTYufE=
go.opentelemetry.io/otel/metric v1.36.0/go.mod h1:zC7Ks+yeyJt4xig9DEw9kuUFe5C3zLbVjV2PzT6qzbs=
go.opentelemetry.io/otel/sdk v1.36.0 h1:b6SYIuLRs88ztox4EyrvRti80uXIFy+Sqzoh9kFULbs=
go.opentelemetry.io/otel/sdk v1.36.0/go.mod h1:+lC+mTgD+MUWfjJubi2vvXWcVxyr9rmlshZni72pXeY=
go.opentelemetry.io/otel/sdk/metric v1.36.0 h1:r0ntwwGosWGaa0CrSt8cuNuTcccMXERFwHX4dThiPis=
go.opentelemetry.io/otel/sdk/metric v1.36.0/go.mod h1:qTNOhFDfKRwX0yXOqJYegL5WRaW376QbB7P4Pb0qva4=
go.opentelemetry.io/otel/trace v1.36.0 h1:ahxWNuqZjpdiFAyrIoQ4GIiAIhxAunQR6MUoKrsNd4w=
go.opentelemetry.io/otel/trace v1.36.0/go.mod h1:gQ+OnDZzrybY4k4seLzPAWNwVBBVlF2szhehOBB/tGA=
go.opentelemetry.io/proto/otlp v1.4.0 h1:TA9WRvW6zMwP+Ssb6fLoUIuirti1gGbP28GcKG1jgeg=
go.opentelemetry.io/proto/otlp v1.4.0/go.mod h1:PPBWZIP98o2ElSqI35IHfu7hIhSwvc5N38Jw8pXuGFY=
go.uber.org/automaxprocs v1.6.0 h1:O3y2/QNTOdbF+e/dpXNNW7Rx2hZ4sTIPyybbxyNqTUs=
go.uber.org/automaxprocs v1.6.0/go.mod h1:ifeIMSnPZuznNm6jmdzmU3/bfk01Fe2fotchwEFJ8r8=
golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4=
golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
golang.org/x/crypto v0.0.0-20190426145343-a29dc8fdc734/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc=
golang.org/x/crypto v0.0.0-20211215153901-e495a2d5b3d3/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4=
golang.org/x/crypto v0.0.0-20220622213112-05595931fe9d/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4=
golang.org/x/crypto v0.0.0-20220722155217-630584e8d5aa/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4=
golang.org/x/crypto v0.3.1-0.20221117191849-2c476679df9a/go.mod h1:hebNnKkNXi2UzZN1eVRvBB7co0a+JxK6XbPiWVs/3J4=
golang.org/x/crypto v0.6.0/go.mod h1:OFC/31mSvZgRz0V1QTNCzfAI1aIRzbiufJtkMIlEp58=
golang.org/x/crypto v0.7.0/go.mod h1:pYwdfH91IfpZVANVyUOhSIPZaFoJGxTFbZhFTx+dXZU=
golang.org/x/crypto v0.18.0 h1:PGVlW0xEltQnzFZ55hkuX5+KLyrMYhHld1YHO4AKcdc=
golang.org/x/crypto v0.18.0/go.mod h1:R0j02AL6hcrfOiy9T4ZYp/rcWeMxM3L6QYxlOuEG1mg=
golang.org/x/crypto v0.13.0/go.mod h1:y6Z2r+Rw4iayiXXAIxJIDAJ1zMW4yaTpebo8fPOliYc=
golang.org/x/crypto v0.17.0/go.mod h1:gCAAfMLgwOJRpTjQ2zCCt2OcSfYMTeZVSRtQlPC7Nq4=
golang.org/x/crypto v0.19.0/go.mod h1:Iy9bg/ha4yyC70EfRS8jz+B6ybOBKMaSxLj6P6oBDfU=
golang.org/x/crypto v0.23.0/go.mod h1:CKFgDieR+mRhux2Lsu27y0fO304Db0wZe70UKqHu0v8=
golang.org/x/crypto v0.41.0 h1:WKYxWedPGCTVVl5+WHSSrOBT0O8lx32+zxmHxijgXp4=
golang.org/x/crypto v0.41.0/go.mod h1:pO5AFd7FA68rFak7rOAGVuygIISepHftHnr8dr6+sUc=
golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4=
golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs=
golang.org/x/mod v0.14.0 h1:dGoOF9QVLYng8IHTm7BAyWqCqSheQ5pYWGhzW00YJr0=
golang.org/x/mod v0.14.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c=
golang.org/x/mod v0.12.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs=
golang.org/x/mod v0.15.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c=
golang.org/x/mod v0.17.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c=
golang.org/x/mod v0.27.0 h1:kb+q2PyFnEADO2IEF935ehFUXlWiNjJWtRNgBLSfbxQ=
golang.org/x/mod v0.27.0/go.mod h1:rWI627Fq0DEoudcK+MBkNkCe0EetEaDSwJJkCcjpazc=
golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
golang.org/x/net v0.0.0-20181114220301-adae6a3d119a/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
@ -412,14 +468,16 @@ golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v
golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM=
golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c=
golang.org/x/net v0.2.0/go.mod h1:KqCZLdyyvdV855qA2rE3GC2aiw5xGR5TEjj8smXukLY=
golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs=
golang.org/x/net v0.8.0/go.mod h1:QVkue5JL9kW//ek3r6jTKnTFis1tRmNAW2P1shuFdJc=
golang.org/x/net v0.20.0 h1:aCL9BSgETF1k+blQaYUBx9hJ9LOGP3gAVemcZlf1Kpo=
golang.org/x/net v0.20.0/go.mod h1:z8BVo6PvndSri0LbOE3hAn0apkU+1YvI6E70E9jsnvY=
golang.org/x/net v0.10.0/go.mod h1:0qNGK6F8kojg2nk9dLZ2mShWaEBan6FAoqfSigmmuDg=
golang.org/x/net v0.15.0/go.mod h1:idbUs1IY1+zTqbi8yxTbhexhEEk5ur9LInksu6HrEpk=
golang.org/x/net v0.21.0/go.mod h1:bIjVDfnllIU7BJ2DNgfnXvpSvtn8VRwhlsaeUTyUS44=
golang.org/x/net v0.25.0/go.mod h1:JkAGAh7GEvH74S6FOH42FLoXpXbE/aqXSrIQjXgsiwM=
golang.org/x/net v0.42.0 h1:jzkYrhi3YQWD6MLBJcsklgQsoAcw89EcZbJw8Z614hs=
golang.org/x/net v0.42.0/go.mod h1:FF1RA5d3u7nAYA4z2TkclSCKh68eSXtiFwcWQpPXdt8=
golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U=
golang.org/x/oauth2 v0.16.0 h1:aDkGMBSYxElaoP81NpoUoz2oo2R2wHdZpGToUxfyQrQ=
golang.org/x/oauth2 v0.16.0/go.mod h1:hqZ+0LWXsiVoZpeld6jVt06P3adbS2Uu911W1SsJv2o=
golang.org/x/oauth2 v0.30.0 h1:dnDm7JmhM45NNpd8FDDeLhK6FwqbOf4MLCM9zb1BOHI=
golang.org/x/oauth2 v0.30.0/go.mod h1:B++QgG3ZKulg6sRPGD/mqlHQs5rB3Ml9erfeDY7xKlU=
golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
@ -429,8 +487,12 @@ golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJ
golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.6.0 h1:5BMeUDZ7vkXGfEr1x9B4bRcTH4lpkTkpdh0T/J+qjbQ=
golang.org/x/sync v0.3.0/go.mod h1:FU7BRWz2tNW+3quACPkgCx/L+uEAv1htQ0V83Z9Rj+Y=
golang.org/x/sync v0.6.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk=
golang.org/x/sync v0.7.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk=
golang.org/x/sync v0.10.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk=
golang.org/x/sync v0.16.0 h1:ycBJEhp9p4vXvUZNszeOq0kGTPghopOL8q0fq3vstxw=
golang.org/x/sync v0.16.0/go.mod h1:1dzgHSNfp02xaA81J2MS99Qcpr2w7fw1gpm99rleRqA=
golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
golang.org/x/sys v0.0.0-20181116152217-5ac8a444bdc5/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
@ -442,7 +504,6 @@ golang.org/x/sys v0.0.0-20190801041406-cbf593c0f2f3/go.mod h1:h1NjWce9XRLGQEsW7w
golang.org/x/sys v0.0.0-20191026070338-33540a1f6037/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20210119212857-b64e53b001e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20210124154548-22da62e12c0c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20210309074719-68d13333faf2/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20210330210617-4fbd30eecc44/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
@ -454,57 +515,70 @@ golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBc
golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.2.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.3.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.12.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.15.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
golang.org/x/sys v0.16.0 h1:xWw16ngr6ZMtmxDyKyIgsE93KNKz5HKmMa3b8ALHidU=
golang.org/x/sys v0.16.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
golang.org/x/sys v0.17.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
golang.org/x/sys v0.20.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
golang.org/x/sys v0.29.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
golang.org/x/sys v0.35.0 h1:vz1N37gP5bs89s7He8XuIYXpyY0+QlsKmzipCbUtyxI=
golang.org/x/sys v0.35.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k=
golang.org/x/telemetry v0.0.0-20240228155512-f48c80bd79b2/go.mod h1:TeRTkGYfJXctD9OcfyVLyj2J3IxLnKwHJR8f4D8a3YE=
golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
golang.org/x/term v0.0.0-20201210144234-2321bbc49cbf/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
golang.org/x/term v0.0.0-20210220032956-6a3ed077a48d/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=
golang.org/x/term v0.2.0/go.mod h1:TVmDHMZPmdnySmBfhjOoOdhjzdE1h4u1VwSiw2l1Nuc=
golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k=
golang.org/x/term v0.6.0/go.mod h1:m6U89DPEgQRMq3DNkDClhWw02AUbt2daBVO4cn4Hv9U=
golang.org/x/term v0.8.0/go.mod h1:xPskH00ivmX89bAKVGSKKtLOWNx2+17Eiy94tnKShWo=
golang.org/x/term v0.12.0/go.mod h1:owVbMEjm3cBLCHdkQu9b1opXd4ETQWc3BhuQGKgXgvU=
golang.org/x/term v0.15.0/go.mod h1:BDl952bC7+uMoWR75FIrCDx79TPU9oHkTZ9yRbYOrX0=
golang.org/x/term v0.16.0 h1:m+B6fahuftsE9qjo0VWp2FW0mB3MTJvR0BaMQrq0pmE=
golang.org/x/term v0.16.0/go.mod h1:yn7UURbUtPyrVJPGPq404EukNFxcm/foM+bV/bfcDsY=
golang.org/x/term v0.17.0/go.mod h1:lLRBjIVuehSbZlaOtGMbcMncT+aqLLLmKrsjNrUguwk=
golang.org/x/term v0.20.0/go.mod h1:8UkIAJTvZgivsXaD6/pH6U9ecQzZ45awqEOzuCvwpFY=
golang.org/x/term v0.28.0/go.mod h1:Sw/lC2IAUZ92udQNf3WodGtn4k/XoLyZoh8v/8uiwek=
golang.org/x/term v0.34.0 h1:O/2T7POpk0ZZ7MAzMeWFSg6S5IpWd/RXDlM9hgM3DR4=
golang.org/x/term v0.34.0/go.mod h1:5jC53AEywhIVebHgPVeg0mj8OD3VO9OzclacVrqpaAw=
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk=
golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ=
golang.org/x/text v0.3.8/go.mod h1:E6s5w1FMmriuDzIBO73fBruAKo1PCIq6d2Q6DHfQ8WQ=
golang.org/x/text v0.4.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8=
golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8=
golang.org/x/text v0.8.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8=
golang.org/x/text v0.14.0 h1:ScX5w1eTa3QqT8oi6+ziP7dTV1S2+ALU0bI+0zXKWiQ=
golang.org/x/text v0.9.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8=
golang.org/x/text v0.13.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE=
golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU=
golang.org/x/time v0.3.0 h1:rg5rLMjNzMS1RkNLzCG38eapWhnYLFYXDXj2gOlr8j4=
golang.org/x/time v0.3.0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
golang.org/x/text v0.15.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU=
golang.org/x/text v0.21.0/go.mod h1:4IBbMaMmOPCJ8SecivzSH54+73PCFmPWxNTLm+vZkEQ=
golang.org/x/text v0.28.0 h1:rhazDwis8INMIwQ4tpjLDzUhx6RlXqZNPEM0huQojng=
golang.org/x/text v0.28.0/go.mod h1:U8nCwOR8jO/marOQ0QbDiOngZVEBB7MAiitBuMjXiNU=
golang.org/x/time v0.11.0 h1:/bpjEDfN9tkoN/ryeYHnv5hcMlc8ncjMcM4XBk5NWV0=
golang.org/x/time v0.11.0/go.mod h1:CDIdPxbZBQxdj6cxyCIdrNogrJKMJ7pr37NYpMcMDSg=
golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE=
golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA=
golang.org/x/tools v0.1.0/go.mod h1:xkSsbof2nBLbhDlRMhhhyNLN/zl3eTqcnHD5viDpcZ0=
golang.org/x/tools v0.1.1/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk=
golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc=
golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU=
golang.org/x/tools v0.16.1 h1:TLyB3WofjdOEepBHAU20JdNC1Zbg87elYofWYAY5oZA=
golang.org/x/tools v0.16.1/go.mod h1:kYVVN6I1mBNoB1OX+noeBjbRk4IUEPa7JJ+TJMEooJ0=
golang.org/x/tools v0.13.0/go.mod h1:HvlwmtVNQAhOuCjW7xxvovg8wbNq7LwfXh/k7wXUl58=
golang.org/x/tools v0.21.1-0.20240508182429-e35e4ccd0d2d/go.mod h1:aiJjzUbINMkxbQROHiO6hDPo2LHcIPhhQsa9DLh0yGk=
golang.org/x/tools v0.35.0 h1:mBffYraMEf7aa0sB+NuKnuCy8qI/9Bughn8dC2Gu5r0=
golang.org/x/tools v0.35.0/go.mod h1:NKdj5HkL/73byiZSJjqJgKn3ep7KjFkBOkR/Hps3VPw=
golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM=
google.golang.org/appengine v1.6.8 h1:IhEN5q69dyKagZPYMSdIjS2HqprW324FRQZJcGqPAsM=
google.golang.org/appengine v1.6.8/go.mod h1:1jJ3jBArFh5pcgW8gCtRJnepW8FzD1V44FJffLiz/Ds=
google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw=
google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc=
google.golang.org/protobuf v1.31.0 h1:g0LDEJHgrBl9N9r17Ru3sqWhkIx2NB67okBHPwC7hs8=
google.golang.org/protobuf v1.31.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I=
google.golang.org/genproto v0.0.0-20250519155744-55703ea1f237 h1:2zGWyk04EwQ3mmV4dd4M4U7P/igHi5p7CBJEg1rI6A8=
google.golang.org/genproto/googleapis/api v0.0.0-20250519155744-55703ea1f237 h1:Kog3KlB4xevJlAcbbbzPfRG0+X9fdoGM+UBRKVz6Wr0=
google.golang.org/genproto/googleapis/api v0.0.0-20250519155744-55703ea1f237/go.mod h1:ezi0AVyMKDWy5xAncvjLWH7UcLBB5n7y2fQ8MzjJcto=
google.golang.org/genproto/googleapis/rpc v0.0.0-20250519155744-55703ea1f237 h1:cJfm9zPbe1e873mHJzmQ1nwVEeRDU/T1wXDK2kUSU34=
google.golang.org/genproto/googleapis/rpc v0.0.0-20250519155744-55703ea1f237/go.mod h1:qQ0YXyHHx3XkvlzUtpXDkS29lDSafHMZBAZDc03LQ3A=
google.golang.org/grpc v1.72.1 h1:HR03wO6eyZ7lknl75XlxABNVLLFc2PAb6mHlYh756mA=
google.golang.org/grpc v1.72.1/go.mod h1:wH5Aktxcg25y1I3w7H69nHfXdOG3UiadoBtjh3izSDM=
google.golang.org/protobuf v1.36.6 h1:z1NpPI8ku2WgiWnf+t9wTPsn6eP1L7ksHUlkfLvd9xY=
google.golang.org/protobuf v1.36.6/go.mod h1:jduwjTPXsFjZGTmRluh+L6NjiWu7pchiJ2/5YcXBHnY=
gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw=
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
@ -516,13 +590,10 @@ gopkg.in/warnings.v0 v0.1.2 h1:wFXVbFY8DY5/xOe1ECiWdKCzZlxgshcYVNkBHstARME=
gopkg.in/warnings.v0 v0.1.2/go.mod h1:jksf8JmL6Qr/oQM2OXTHunEvvTAsrWBLb6OOjuVWRNI=
gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
gopkg.in/yaml.v2 v2.2.4/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY=
gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ=
gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
gopkg.in/yaml.v3 v3.0.0-20200605160147-a5ece683394c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
gotest.tools/v3 v3.4.0 h1:ZazjZUfuVeZGLAmlKKuyv3IKP5orXcwtOwDQH6YVr6o=
gotest.tools/v3 v3.4.0/go.mod h1:CtbdzLSsqVhDgMtKsx03ird5YTGB3ar27v0u/yKBW5g=
gotest.tools/v3 v3.5.2 h1:7koQfIKdy+I8UTetycgUqXWSDwpgv193Ka+qRsmBY8Q=
gotest.tools/v3 v3.5.2/go.mod h1:LtdLGcnqToBH83WByAAi/wiwSFCArdFIUV/xxN4pcjA=

View File

@ -1,15 +1,10 @@
run:
timeout: 6m
version: "2"
linters:
disable-all: true
default: none
enable:
- bodyclose
- exportloopref
- dogsled
- gocritic
- goimports
- gosimple
- govet
- ineffassign
- misspell
@ -17,16 +12,40 @@ linters:
- revive
- rowserrcheck
- staticcheck
- stylecheck
- typecheck
- unconvert
- unused
- whitespace
linters-settings:
goimports:
local-prefixes: github.com/buildpacks/pack
revive:
rules:
- name: error-strings
disabled: true
settings:
revive:
rules:
- name: error-strings
disabled: true
exclusions:
generated: lax
presets:
- comments
- common-false-positives
- legacy
- std-error-handling
paths:
- third_party$
- builtin$
- examples$
formatters:
enable:
- goimports
settings:
goimports:
local-prefixes:
- github.com/buildpacks/pack
exclusions:
generated: lax
paths:
- third_party$
- builtin$
- examples$
issues:
default: info
rules:
- linters:
- staticcheck: info

View File

@ -10,12 +10,13 @@ import (
"github.com/BurntSushi/toml"
"github.com/buildpacks/lifecycle/platform/files"
"github.com/docker/docker/api/types"
dcontainer "github.com/docker/docker/api/types/container"
"github.com/docker/docker/errdefs"
darchive "github.com/docker/docker/pkg/archive"
darchive "github.com/moby/go-archive"
"github.com/pkg/errors"
cerrdefs "github.com/containerd/errdefs"
"github.com/buildpacks/pack/internal/builder"
"github.com/buildpacks/pack/internal/container"
"github.com/buildpacks/pack/internal/paths"
@ -51,7 +52,7 @@ func CopyOutMaybe(handler func(closer io.ReadCloser) error, srcs ...string) Cont
for _, src := range srcs {
reader, _, err := ctrClient.CopyFromContainer(ctx, containerID, src)
if err != nil {
if errdefs.IsNotFound(err) {
if cerrdefs.IsNotFound(err) {
continue
}
return err
@ -119,7 +120,7 @@ func copyDir(ctx context.Context, ctrClient DockerClient, containerID string, ap
doneChan := make(chan interface{})
pr, pw := io.Pipe()
go func() {
clientErr = ctrClient.CopyToContainer(ctx, containerID, "/", pr, types.CopyToContainerOptions{})
clientErr = ctrClient.CopyToContainer(ctx, containerID, "/", pr, dcontainer.CopyToContainerOptions{})
close(doneChan)
}()
func() {
@ -180,9 +181,9 @@ func copyDirWindows(ctx context.Context, ctrClient DockerClient, containerID str
if err != nil {
return errors.Wrapf(err, "creating prep container")
}
defer ctrClient.ContainerRemove(context.Background(), ctr.ID, types.ContainerRemoveOptions{Force: true})
defer ctrClient.ContainerRemove(context.Background(), ctr.ID, dcontainer.RemoveOptions{Force: true})
err = ctrClient.CopyToContainer(ctx, ctr.ID, "/windows", reader, types.CopyToContainerOptions{})
err = ctrClient.CopyToContainer(ctx, ctr.ID, "/windows", reader, dcontainer.CopyToContainerOptions{})
if err != nil {
return errors.Wrap(err, "copy app to container")
}
@ -198,13 +199,13 @@ func copyDirWindows(ctx context.Context, ctrClient DockerClient, containerID str
)
}
func findMount(info types.ContainerJSON, dst string) (types.MountPoint, error) {
func findMount(info dcontainer.InspectResponse, dst string) (dcontainer.MountPoint, error) {
for _, m := range info.Mounts {
if m.Destination == dst {
return m, nil
}
}
return types.MountPoint{}, fmt.Errorf("no matching mount found for %s", dst)
return dcontainer.MountPoint{}, fmt.Errorf("no matching mount found for %s", dst)
}
func writeToml(ctrClient DockerClient, ctx context.Context, data interface{}, dstPath string, containerID string, os string, stdout, stderr io.Writer) error {
@ -230,7 +231,7 @@ func writeToml(ctrClient DockerClient, ctx context.Context, data interface{}, ds
return copyDirWindows(ctx, ctrClient, containerID, reader, dirName, stdout, stderr)
}
return ctrClient.CopyToContainer(ctx, containerID, "/", reader, types.CopyToContainerOptions{})
return ctrClient.CopyToContainer(ctx, containerID, "/", reader, dcontainer.CopyToContainerOptions{})
}
// WriteProjectMetadata writes a `project-metadata.toml` based on the ProjectMetadata provided to the destination path.
@ -327,7 +328,7 @@ func EnsureVolumeAccess(uid, gid int, os string, volumeNames ...string) Containe
if err != nil {
return err
}
defer ctrClient.ContainerRemove(context.Background(), ctr.ID, types.ContainerRemoveOptions{Force: true})
defer ctrClient.ContainerRemove(context.Background(), ctr.ID, dcontainer.RemoveOptions{Force: true})
return container.RunWithHandler(
ctx,

View File

@ -13,7 +13,6 @@ import (
"testing"
"github.com/buildpacks/lifecycle/platform/files"
"github.com/docker/docker/api/types"
dcontainer "github.com/docker/docker/api/types/container"
"github.com/docker/docker/api/types/mount"
"github.com/docker/docker/client"
@ -709,7 +708,7 @@ func cleanupContainer(ctx context.Context, ctrID string) {
}
// remove container
err = ctrClient.ContainerRemove(ctx, ctrID, types.ContainerRemoveOptions{})
err = ctrClient.ContainerRemove(ctx, ctrID, dcontainer.RemoveOptions{})
if err != nil {
return
}

View File

@ -6,19 +6,25 @@ import (
"github.com/docker/docker/api/types"
containertypes "github.com/docker/docker/api/types/container"
"github.com/docker/docker/api/types/image"
networktypes "github.com/docker/docker/api/types/network"
dockerClient "github.com/docker/docker/client"
specs "github.com/opencontainers/image-spec/specs-go/v1"
)
type DockerClient interface {
ImageRemove(ctx context.Context, image string, options types.ImageRemoveOptions) ([]types.ImageDeleteResponseItem, error)
ImageRemove(ctx context.Context, image string, options image.RemoveOptions) ([]image.DeleteResponse, error)
VolumeRemove(ctx context.Context, volumeID string, force bool) error
ContainerWait(ctx context.Context, container string, condition containertypes.WaitCondition) (<-chan containertypes.WaitResponse, <-chan error)
ContainerAttach(ctx context.Context, container string, options types.ContainerAttachOptions) (types.HijackedResponse, error)
ContainerStart(ctx context.Context, container string, options types.ContainerStartOptions) error
ContainerAttach(ctx context.Context, container string, options containertypes.AttachOptions) (types.HijackedResponse, error)
ContainerStart(ctx context.Context, container string, options containertypes.StartOptions) error
ContainerCreate(ctx context.Context, config *containertypes.Config, hostConfig *containertypes.HostConfig, networkingConfig *networktypes.NetworkingConfig, platform *specs.Platform, containerName string) (containertypes.CreateResponse, error)
CopyFromContainer(ctx context.Context, container, srcPath string) (io.ReadCloser, types.ContainerPathStat, error)
ContainerInspect(ctx context.Context, container string) (types.ContainerJSON, error)
ContainerRemove(ctx context.Context, container string, options types.ContainerRemoveOptions) error
CopyToContainer(ctx context.Context, container, path string, content io.Reader, options types.CopyToContainerOptions) error
CopyFromContainer(ctx context.Context, container, srcPath string) (io.ReadCloser, containertypes.PathStat, error)
ContainerInspect(ctx context.Context, container string) (containertypes.InspectResponse, error)
ContainerRemove(ctx context.Context, container string, options containertypes.RemoveOptions) error
CopyToContainer(ctx context.Context, container, path string, content io.Reader, options containertypes.CopyToContainerOptions) error
NetworkCreate(ctx context.Context, name string, options networktypes.CreateOptions) (networktypes.CreateResponse, error)
NetworkRemove(ctx context.Context, network string) error
}
var _ DockerClient = dockerClient.APIClient(nil)

View File

@ -117,8 +117,17 @@ func (b *FakeBuilder) RunImages() []builder.RunImageMetadata {
return b.ReturnForRunImages
}
func (b *FakeBuilder) System() dist.System { return dist.System{} }
func WithBuilder(builder *FakeBuilder) func(*build.LifecycleOptions) {
return func(opts *build.LifecycleOptions) {
opts.Builder = builder
}
}
// WithEnableUsernsHost creates a LifecycleOptions option that enables userns=host
func WithEnableUsernsHost() func(*build.LifecycleOptions) {
return func(opts *build.LifecycleOptions) {
opts.EnableUsernsHost = true
}
}

View File

@ -7,11 +7,13 @@ import (
"os"
"path/filepath"
"strconv"
"time"
"github.com/BurntSushi/toml"
"github.com/buildpacks/lifecycle/api"
"github.com/buildpacks/lifecycle/auth"
"github.com/buildpacks/lifecycle/platform/files"
"github.com/docker/docker/api/types/network"
"github.com/google/go-containerregistry/pkg/name"
"github.com/pkg/errors"
"golang.org/x/sync/errgroup"
@ -163,8 +165,11 @@ func (l *LifecycleExecution) PrevImageName() string {
return l.opts.PreviousImage
}
const maxNetworkRemoveRetries = 2
func (l *LifecycleExecution) Run(ctx context.Context, phaseFactoryCreator PhaseFactoryCreator) error {
phaseFactory := phaseFactoryCreator(l)
var buildCache Cache
if l.opts.CacheImage != "" || (l.opts.Cache.Build.Format == cache.CacheImage) {
cacheImageName := l.opts.CacheImage
@ -179,7 +184,11 @@ func (l *LifecycleExecution) Run(ctx context.Context, phaseFactoryCreator PhaseF
} else {
switch l.opts.Cache.Build.Format {
case cache.CacheVolume:
buildCache = cache.NewVolumeCache(l.opts.Image, l.opts.Cache.Build, "build", l.docker)
var err error
buildCache, err = cache.NewVolumeCache(l.opts.Image, l.opts.Cache.Build, "build", l.docker, l.logger)
if err != nil {
return err
}
l.logger.Debugf("Using build cache volume %s", style.Symbol(buildCache.Name()))
case cache.CacheBind:
buildCache = cache.NewBindCache(l.opts.Cache.Build, l.docker)
@ -194,7 +203,39 @@ func (l *LifecycleExecution) Run(ctx context.Context, phaseFactoryCreator PhaseF
l.logger.Debugf("Build cache %s cleared", style.Symbol(buildCache.Name()))
}
launchCache := cache.NewVolumeCache(l.opts.Image, l.opts.Cache.Launch, "launch", l.docker)
launchCache, err := cache.NewVolumeCache(l.opts.Image, l.opts.Cache.Launch, "launch", l.docker, l.logger)
if err != nil {
return err
}
if l.opts.Network == "" {
// start an ephemeral bridge network
driver := "bridge"
if l.os == "windows" {
driver = "nat"
}
networkName := fmt.Sprintf("pack.local-network-%x", randString(10))
resp, err := l.docker.NetworkCreate(ctx, networkName, network.CreateOptions{
Driver: driver,
})
if err != nil {
return fmt.Errorf("failed to create ephemeral %s network: %w", driver, err)
}
defer func() {
for i := 0; i <= maxNetworkRemoveRetries; i++ {
time.Sleep(100 * time.Duration(i) * time.Millisecond) // wait if retrying
if err = l.docker.NetworkRemove(ctx, networkName); err != nil {
continue
}
break
}
}()
l.logger.Debugf("Created ephemeral bridge network %s with ID %s", networkName, resp.ID)
if resp.Warning != "" {
l.logger.Warn(resp.Warning)
}
l.opts.Network = networkName
}
if !l.opts.UseCreator {
if l.platformAPI.LessThan("0.7") {
@ -224,7 +265,10 @@ func (l *LifecycleExecution) Run(ctx context.Context, phaseFactoryCreator PhaseF
// lifecycle 0.17.0 (introduces support for Platform API 0.12) and above will ensure that
// this volume is owned by the CNB user,
// and hence the restorer (after dropping privileges) will be able to write to it.
kanikoCache = cache.NewVolumeCache(l.opts.Image, l.opts.Cache.Kaniko, "kaniko", l.docker)
kanikoCache, err = cache.NewVolumeCache(l.opts.Image, l.opts.Cache.Kaniko, "kaniko", l.docker, l.logger)
if err != nil {
return err
}
} else {
switch {
case buildCache.Type() == cache.Volume:
@ -236,7 +280,10 @@ func (l *LifecycleExecution) Run(ctx context.Context, phaseFactoryCreator PhaseF
return fmt.Errorf("build cache must be volume cache when building with extensions")
default:
// The kaniko cache is unused, so it doesn't matter that it's not usable.
kanikoCache = cache.NewVolumeCache(l.opts.Image, l.opts.Cache.Kaniko, "kaniko", l.docker)
kanikoCache, err = cache.NewVolumeCache(l.opts.Image, l.opts.Cache.Kaniko, "kaniko", l.docker, l.logger)
if err != nil {
return err
}
}
}
@ -244,12 +291,9 @@ func (l *LifecycleExecution) Run(ctx context.Context, phaseFactoryCreator PhaseF
ephemeralRunImage string
err error
)
currentRunImage := l.runImageAfterExtensions()
if l.runImageChanged() || l.hasExtensionsForRun() {
if currentRunImage == "" { // sanity check
return nil
}
if ephemeralRunImage, err = l.opts.FetchRunImageWithLifecycleLayer(currentRunImage); err != nil {
// Pull the run image by name in case we fail to pull it by identifier later.
if ephemeralRunImage, err = l.opts.FetchRunImageWithLifecycleLayer(l.runImageNameAfterExtensions()); err != nil {
return err
}
}
@ -261,11 +305,21 @@ func (l *LifecycleExecution) Run(ctx context.Context, phaseFactoryCreator PhaseF
return err
}
if l.runImageChanged() || l.hasExtensionsForRun() {
if newEphemeralRunImage, err := l.opts.FetchRunImageWithLifecycleLayer(l.runImageIdentifierAfterExtensions()); err == nil {
// If the run image was switched by extensions, the run image reference as written by the __restorer__ will be a digest reference
// that is pullable from a registry.
// However, if the run image is only extended (not switched), the run image reference as written by the __analyzer__ may be an image identifier
// (in the daemon case), and will not be pullable.
ephemeralRunImage = newEphemeralRunImage
}
}
group, _ := errgroup.WithContext(context.TODO())
if l.platformAPI.AtLeast("0.10") && l.hasExtensionsForBuild() {
group.Go(func() error {
l.logger.Info(style.Step("EXTENDING (BUILD)"))
return l.ExtendBuild(ctx, kanikoCache, phaseFactory)
return l.ExtendBuild(ctx, kanikoCache, phaseFactory, l.extensionsAreExperimental())
})
} else {
group.Go(func() error {
@ -277,7 +331,7 @@ func (l *LifecycleExecution) Run(ctx context.Context, phaseFactoryCreator PhaseF
if l.platformAPI.AtLeast("0.12") && l.hasExtensionsForRun() {
group.Go(func() error {
l.logger.Info(style.Step("EXTENDING (RUN)"))
return l.ExtendRun(ctx, kanikoCache, phaseFactory, ephemeralRunImage)
return l.ExtendRun(ctx, kanikoCache, phaseFactory, ephemeralRunImage, l.extensionsAreExperimental())
})
}
@ -328,6 +382,12 @@ func (l *LifecycleExecution) Create(ctx context.Context, buildCache, launchCache
flags = append(flags, "-uid", strconv.Itoa(l.opts.UID))
}
if l.platformAPI.AtLeast("0.13") {
for _, reg := range l.opts.InsecureRegistries {
flags = append(flags, "-insecure-registry", reg)
}
}
if l.opts.PreviousImage != "" {
if l.opts.Image == nil {
return errors.New("image can't be nil")
@ -424,7 +484,7 @@ func (l *LifecycleExecution) Detect(ctx context.Context, phaseFactory PhaseFacto
envOp := NullOp()
if l.platformAPI.AtLeast("0.10") && l.hasExtensions() {
envOp = WithEnv("CNB_EXPERIMENTAL_MODE=warn")
envOp = If(l.extensionsAreExperimental(), WithEnv("CNB_EXPERIMENTAL_MODE=warn"))
}
configProvider := NewPhaseConfigProvider(
@ -444,7 +504,7 @@ func (l *LifecycleExecution) Detect(ctx context.Context, phaseFactory PhaseFacto
If(l.hasExtensions(), WithPostContainerRunOperations(
CopyOutToMaybe(filepath.Join(l.mountPaths.layersDir(), "analyzed.toml"), l.tmpDir))),
If(l.hasExtensions(), WithPostContainerRunOperations(
CopyOutToMaybe(filepath.Join(l.mountPaths.layersDir(), "generated", "build"), l.tmpDir))),
CopyOutToMaybe(filepath.Join(l.mountPaths.layersDir(), "generated"), l.tmpDir))),
envOp,
)
@ -453,6 +513,10 @@ func (l *LifecycleExecution) Detect(ctx context.Context, phaseFactory PhaseFacto
return detect.Run(ctx)
}
func (l *LifecycleExecution) extensionsAreExperimental() bool {
return l.PlatformAPI().AtLeast("0.10") && l.platformAPI.LessThan("0.13")
}
func (l *LifecycleExecution) Restore(ctx context.Context, buildCache Cache, kanikoCache Cache, phaseFactory PhaseFactory) error {
// build up flags and ops
var flags []string
@ -481,6 +545,12 @@ func (l *LifecycleExecution) Restore(ctx context.Context, buildCache Cache, kani
flags = append(flags, "-uid", strconv.Itoa(l.opts.UID))
}
if l.platformAPI.AtLeast("0.13") {
for _, reg := range l.opts.InsecureRegistries {
flags = append(flags, "-insecure-registry", reg)
}
}
// for kaniko
kanikoCacheBindOp := NullOp()
if (l.platformAPI.AtLeast("0.10") && l.hasExtensionsForBuild()) ||
@ -490,7 +560,7 @@ func (l *LifecycleExecution) Restore(ctx context.Context, buildCache Cache, kani
registryImages = append(registryImages, l.opts.BuilderImage)
}
if l.runImageChanged() || l.hasExtensionsForRun() {
registryImages = append(registryImages, l.runImageAfterExtensions())
registryImages = append(registryImages, l.runImageNameAfterExtensions())
}
if l.hasExtensionsForBuild() || l.hasExtensionsForRun() {
kanikoCacheBindOp = WithBinds(fmt.Sprintf("%s:%s", kanikoCache.Name(), l.mountPaths.kanikoCacheDir()))
@ -541,6 +611,8 @@ func (l *LifecycleExecution) Restore(ctx context.Context, buildCache Cache, kani
registryOp,
layoutOp,
layoutBindOp,
If(l.hasExtensions(), WithPostContainerRunOperations(
CopyOutToMaybe(filepath.Join(l.mountPaths.layersDir(), "analyzed.toml"), l.tmpDir))),
)
restore := phaseFactory.New(configProvider)
@ -586,6 +658,12 @@ func (l *LifecycleExecution) Analyze(ctx context.Context, buildCache, launchCach
flags = append(flags, "-uid", strconv.Itoa(l.opts.UID))
}
if l.platformAPI.AtLeast("0.13") {
for _, reg := range l.opts.InsecureRegistries {
flags = append(flags, "-insecure-registry", reg)
}
}
if l.opts.PreviousImage != "" {
if l.opts.Image == nil {
return errors.New("image can't be nil")
@ -709,7 +787,7 @@ func (l *LifecycleExecution) Build(ctx context.Context, phaseFactory PhaseFactor
return build.Run(ctx)
}
func (l *LifecycleExecution) ExtendBuild(ctx context.Context, kanikoCache Cache, phaseFactory PhaseFactory) error {
func (l *LifecycleExecution) ExtendBuild(ctx context.Context, kanikoCache Cache, phaseFactory PhaseFactory, experimental bool) error {
flags := []string{"-app", l.mountPaths.appDir()}
configProvider := NewPhaseConfigProvider(
@ -718,7 +796,7 @@ func (l *LifecycleExecution) ExtendBuild(ctx context.Context, kanikoCache Cache,
WithLogPrefix("extender (build)"),
WithArgs(l.withLogLevel()...),
WithBinds(l.opts.Volumes...),
WithEnv("CNB_EXPERIMENTAL_MODE=warn"),
If(experimental, WithEnv("CNB_EXPERIMENTAL_MODE=warn")),
WithFlags(flags...),
WithNetwork(l.opts.Network),
WithRoot(),
@ -730,7 +808,7 @@ func (l *LifecycleExecution) ExtendBuild(ctx context.Context, kanikoCache Cache,
return extend.Run(ctx)
}
func (l *LifecycleExecution) ExtendRun(ctx context.Context, kanikoCache Cache, phaseFactory PhaseFactory, runImageName string) error {
func (l *LifecycleExecution) ExtendRun(ctx context.Context, kanikoCache Cache, phaseFactory PhaseFactory, runImageName string, experimental bool) error {
flags := []string{"-app", l.mountPaths.appDir(), "-kind", "run"}
configProvider := NewPhaseConfigProvider(
@ -739,7 +817,7 @@ func (l *LifecycleExecution) ExtendRun(ctx context.Context, kanikoCache Cache, p
WithLogPrefix("extender (run)"),
WithArgs(l.withLogLevel()...),
WithBinds(l.opts.Volumes...),
WithEnv("CNB_EXPERIMENTAL_MODE=warn"),
If(experimental, WithEnv("CNB_EXPERIMENTAL_MODE=warn")),
WithFlags(flags...),
WithNetwork(l.opts.Network),
WithRoot(),
@ -775,7 +853,7 @@ func (l *LifecycleExecution) Export(ctx context.Context, buildCache, launchCache
} else {
flags = append(flags, "-run", l.mountPaths.runPath())
if l.hasExtensionsForRun() {
expEnv = WithEnv("CNB_EXPERIMENTAL_MODE=warn")
expEnv = If(l.extensionsAreExperimental(), WithEnv("CNB_EXPERIMENTAL_MODE=warn"))
kanikoCacheBindOp = WithBinds(fmt.Sprintf("%s:%s", kanikoCache.Name(), l.mountPaths.kanikoCacheDir()))
}
}
@ -795,6 +873,12 @@ func (l *LifecycleExecution) Export(ctx context.Context, buildCache, launchCache
flags = append(flags, "-uid", strconv.Itoa(l.opts.UID))
}
if l.platformAPI.AtLeast("0.13") {
for _, reg := range l.opts.InsecureRegistries {
flags = append(flags, "-insecure-registry", reg)
}
}
cacheBindOp := NullOp()
switch buildCache.Type() {
case cache.Image:
@ -890,12 +974,25 @@ func (l *LifecycleExecution) hasExtensionsForBuild() bool {
if !l.hasExtensions() {
return false
}
// the directory is <layers>/generated/build inside the build container, but `CopyOutTo` only copies the directory
fis, err := os.ReadDir(filepath.Join(l.tmpDir, "build"))
generatedDir := filepath.Join(l.tmpDir, "generated")
fis, err := os.ReadDir(filepath.Join(generatedDir, "build"))
if err == nil && len(fis) > 0 {
// on older platforms, we need to find a file such as <layers>/generated/build/<buildpack-id>/Dockerfile
// on newer platforms, <layers>/generated/build doesn't exist
return true
}
// on newer platforms, we need to find a file such as <layers>/generated/<buildpack-id>/build.Dockerfile
fis, err = os.ReadDir(generatedDir)
if err != nil {
l.logger.Warnf("failed to read generated directory, assuming no build image extensions: %s", err)
return false
}
return len(fis) > 0
for _, fi := range fis {
if _, err := os.Stat(filepath.Join(generatedDir, fi.Name(), "build.Dockerfile")); err == nil {
return true
}
}
return false
}
func (l *LifecycleExecution) hasExtensionsForRun() bool {
@ -915,25 +1012,42 @@ func (l *LifecycleExecution) hasExtensionsForRun() bool {
return amd.RunImage.Extend
}
func (l *LifecycleExecution) runImageAfterExtensions() string {
func (l *LifecycleExecution) runImageIdentifierAfterExtensions() string {
if !l.hasExtensions() {
return l.opts.RunImage
}
var amd files.Analyzed
if _, err := toml.DecodeFile(filepath.Join(l.tmpDir, "analyzed.toml"), &amd); err != nil {
l.logger.Warnf("failed to parse analyzed.toml file, assuming run image did not change: %s", err)
l.logger.Warnf("failed to parse analyzed.toml file, assuming run image identifier did not change: %s", err)
return l.opts.RunImage
}
if amd.RunImage == nil || amd.RunImage.Reference == "" {
// this shouldn't be reachable
l.logger.Warnf("found no run image in analyzed.toml file, assuming run image identifier did not change...")
return l.opts.RunImage
}
return amd.RunImage.Reference
}
func (l *LifecycleExecution) runImageNameAfterExtensions() string {
if !l.hasExtensions() {
return l.opts.RunImage
}
var amd files.Analyzed
if _, err := toml.DecodeFile(filepath.Join(l.tmpDir, "analyzed.toml"), &amd); err != nil {
l.logger.Warnf("failed to parse analyzed.toml file, assuming run image name did not change: %s", err)
return l.opts.RunImage
}
if amd.RunImage == nil || amd.RunImage.Image == "" {
// this shouldn't be reachable
l.logger.Warnf("found no run image in analyzed.toml file, assuming run image did not change...")
l.logger.Warnf("found no run image in analyzed.toml file, assuming run image name did not change...")
return l.opts.RunImage
}
return amd.RunImage.Image
}
func (l *LifecycleExecution) runImageChanged() bool {
currentRunImage := l.runImageAfterExtensions()
currentRunImage := l.runImageNameAfterExtensions()
return currentRunImage != "" && currentRunImage != l.opts.RunImage
}

View File

@ -17,6 +17,7 @@ import (
"github.com/buildpacks/lifecycle/api"
"github.com/buildpacks/lifecycle/platform/files"
"github.com/docker/docker/api/types/container"
"github.com/docker/docker/api/types/network"
"github.com/docker/docker/client"
"github.com/google/go-containerregistry/pkg/authn"
"github.com/google/go-containerregistry/pkg/name"
@ -76,7 +77,8 @@ func testLifecycleExecution(t *testing.T, when spec.G, it spec.S) {
configProvider *build.PhaseConfigProvider
extensionsForBuild, extensionsForRun bool
extensionsRunImage string
extensionsRunImageName string
extensionsRunImageIdentifier string
useCreatorWithExtensions bool
)
@ -136,11 +138,15 @@ func testLifecycleExecution(t *testing.T, when spec.G, it spec.S) {
// construct fixtures for extensions
if extensionsForBuild {
// the directory is <layers>/generated/build inside the build container, but `CopyOutTo` only copies the directory
err = os.MkdirAll(filepath.Join(tmpDir, "build"), 0755)
h.AssertNil(t, err)
_, err = os.Create(filepath.Join(tmpDir, "build", "some-dockerfile"))
h.AssertNil(t, err)
if platformAPI.LessThan("0.13") {
err = os.MkdirAll(filepath.Join(tmpDir, "generated", "build", "some-buildpack-id"), 0755)
h.AssertNil(t, err)
} else {
err = os.MkdirAll(filepath.Join(tmpDir, "generated", "some-buildpack-id"), 0755)
h.AssertNil(t, err)
_, err = os.Create(filepath.Join(tmpDir, "generated", "some-buildpack-id", "build.Dockerfile"))
h.AssertNil(t, err)
}
}
amd := files.Analyzed{RunImage: &files.RunImage{
Extend: false,
@ -149,8 +155,11 @@ func testLifecycleExecution(t *testing.T, when spec.G, it spec.S) {
if extensionsForRun {
amd.RunImage.Extend = true
}
if extensionsRunImage != "" {
amd.RunImage.Image = extensionsRunImage
if extensionsRunImageName != "" {
amd.RunImage.Image = extensionsRunImageName
}
if extensionsRunImageIdentifier != "" {
amd.RunImage.Reference = extensionsRunImageIdentifier
}
f, err := os.Create(filepath.Join(tmpDir, "analyzed.toml"))
h.AssertNil(t, err)
@ -267,7 +276,7 @@ func testLifecycleExecution(t *testing.T, when spec.G, it spec.S) {
fakeBuilder *fakes.FakeBuilder
outBuf bytes.Buffer
logger *logging.LogWithWriters
docker *client.Client
docker *fakeDockerClient
fakeTermui *fakes.FakeTermui
)
@ -281,7 +290,7 @@ func testLifecycleExecution(t *testing.T, when spec.G, it spec.S) {
fakeBuilder, err = fakes.NewFakeBuilder(fakes.WithSupportedPlatformAPIs([]*api.Version{api.MustParse("0.3")}))
h.AssertNil(t, err)
logger = logging.NewLogWithWriters(&outBuf, &outBuf)
docker, err = client.NewClientWithOpts(client.FromEnv, client.WithVersion("1.38"))
docker = &fakeDockerClient{}
h.AssertNil(t, err)
fakePhaseFactory = fakes.NewFakePhaseFactory()
})
@ -579,7 +588,32 @@ func testLifecycleExecution(t *testing.T, when spec.G, it spec.S) {
providedOrderExt = dist.Order{dist.OrderEntry{Group: []dist.ModuleRef{ /* don't care */ }}}
when("for build", func() {
when("present <layers>/generated/build", func() {
when("present in <layers>/generated/<buildpack-id>", func() {
extensionsForBuild = true
when("platform >= 0.13", func() {
platformAPI = api.MustParse("0.13")
it("runs the extender (build)", func() {
err := lifecycle.Run(context.Background(), func(execution *build.LifecycleExecution) build.PhaseFactory {
return fakePhaseFactory
})
h.AssertNil(t, err)
h.AssertEq(t, len(fakePhaseFactory.NewCalledWithProvider), 5)
var found bool
for _, entry := range fakePhaseFactory.NewCalledWithProvider {
if entry.Name() == "extender" {
found = true
}
}
h.AssertEq(t, found, true)
})
})
})
when("present in <layers>/generated/build", func() {
extensionsForBuild = true
when("platform < 0.10", func() {
@ -603,7 +637,7 @@ func testLifecycleExecution(t *testing.T, when spec.G, it spec.S) {
})
})
when("platform >= 0.10", func() {
when("platform 0.10 to 0.12", func() {
platformAPI = api.MustParse("0.10")
it("runs the extender (build)", func() {
@ -660,15 +694,17 @@ func testLifecycleExecution(t *testing.T, when spec.G, it spec.S) {
})
when("does not match provided run image", func() {
extensionsRunImage = "some-new-run-image"
extensionsRunImageName = "some-new-run-image"
extensionsRunImageIdentifier = "some-new-run-image-identifier"
it("pulls the new run image", func() {
err := lifecycle.Run(context.Background(), func(execution *build.LifecycleExecution) build.PhaseFactory {
return fakePhaseFactory
})
h.AssertNil(t, err)
h.AssertEq(t, fakeFetcher.callCount, 2)
h.AssertEq(t, fakeFetcher.calledWithArgAtCall[0], "some-new-run-image")
h.AssertEq(t, fakeFetcher.callCount, 1)
h.AssertEq(t, fakeFetcher.calledWithArgAtCall[1], "some-new-run-image-identifier")
})
})
})
@ -745,6 +781,46 @@ func testLifecycleExecution(t *testing.T, when spec.G, it spec.S) {
})
})
when("network is not provided", func() {
it("creates an ephemeral bridge network", func() {
beforeNetworks := func() int {
networks, err := docker.NetworkList(context.Background(), network.CreateOptions{})
h.AssertNil(t, err)
return len(networks)
}()
opts := build.LifecycleOptions{
Image: imageName,
Builder: fakeBuilder,
Termui: fakeTermui,
}
lifecycle, err := build.NewLifecycleExecution(logger, docker, "some-temp-dir", opts)
h.AssertNil(t, err)
err = lifecycle.Run(context.Background(), func(execution *build.LifecycleExecution) build.PhaseFactory {
return fakePhaseFactory
})
h.AssertNil(t, err)
for _, entry := range fakePhaseFactory.NewCalledWithProvider {
h.AssertContains(t, string(entry.HostConfig().NetworkMode), "pack.local-network-")
h.AssertEq(t, entry.HostConfig().NetworkMode.IsDefault(), false)
h.AssertEq(t, entry.HostConfig().NetworkMode.IsHost(), false)
h.AssertEq(t, entry.HostConfig().NetworkMode.IsNone(), false)
h.AssertEq(t, entry.HostConfig().NetworkMode.IsPrivate(), true)
h.AssertEq(t, entry.HostConfig().NetworkMode.IsUserDefined(), true)
}
afterNetworks := func() int {
networks, err := docker.NetworkList(context.Background(), network.CreateOptions{})
h.AssertNil(t, err)
return len(networks)
}()
h.AssertEq(t, beforeNetworks, afterNetworks)
})
})
when("Error cases", func() {
when("passed invalid", func() {
it("fails for cache-image", func() {
@ -2024,8 +2100,10 @@ func testLifecycleExecution(t *testing.T, when spec.G, it spec.S) {
})
when("#ExtendBuild", func() {
var experimental bool
it.Before(func() {
err := lifecycle.ExtendBuild(context.Background(), fakeKanikoCache, fakePhaseFactory)
experimental = true
err := lifecycle.ExtendBuild(context.Background(), fakeKanikoCache, fakePhaseFactory, experimental)
h.AssertNil(t, err)
lastCallIndex := len(fakePhaseFactory.NewCalledWithProvider) - 1
@ -2063,11 +2141,31 @@ func testLifecycleExecution(t *testing.T, when spec.G, it spec.S) {
it("configures the phase with root", func() {
h.AssertEq(t, configProvider.ContainerConfig().User, "root")
})
when("experimental is false", func() {
it.Before(func() {
experimental = false
err := lifecycle.ExtendBuild(context.Background(), fakeKanikoCache, fakePhaseFactory, experimental)
h.AssertNil(t, err)
lastCallIndex := len(fakePhaseFactory.NewCalledWithProvider) - 1
h.AssertNotEq(t, lastCallIndex, -1)
configProvider = fakePhaseFactory.NewCalledWithProvider[lastCallIndex]
h.AssertEq(t, configProvider.Name(), "extender")
})
it("CNB_EXPERIMENTAL_MODE=warn is not enable in the environment", func() {
h.AssertSliceNotContains(t, configProvider.ContainerConfig().Env, "CNB_EXPERIMENTAL_MODE=warn")
})
})
})
when("#ExtendRun", func() {
var experimental bool
it.Before(func() {
err := lifecycle.ExtendRun(context.Background(), fakeKanikoCache, fakePhaseFactory, "some-run-image")
experimental = true
err := lifecycle.ExtendRun(context.Background(), fakeKanikoCache, fakePhaseFactory, "some-run-image", experimental)
h.AssertNil(t, err)
lastCallIndex := len(fakePhaseFactory.NewCalledWithProvider) - 1
@ -2111,6 +2209,24 @@ func testLifecycleExecution(t *testing.T, when spec.G, it spec.S) {
it("configures the phase with root", func() {
h.AssertEq(t, configProvider.ContainerConfig().User, "root")
})
when("experimental is false", func() {
it.Before(func() {
experimental = false
err := lifecycle.ExtendRun(context.Background(), fakeKanikoCache, fakePhaseFactory, "some-run-image", experimental)
h.AssertNil(t, err)
lastCallIndex := len(fakePhaseFactory.NewCalledWithProvider) - 1
h.AssertNotEq(t, lastCallIndex, -1)
configProvider = fakePhaseFactory.NewCalledWithProvider[lastCallIndex]
h.AssertEq(t, configProvider.Name(), "extender")
})
it("CNB_EXPERIMENTAL_MODE=warn is not enable in the environment", func() {
h.AssertSliceNotContains(t, configProvider.ContainerConfig().Env, "CNB_EXPERIMENTAL_MODE=warn")
})
})
})
when("#Export", func() {
@ -2582,6 +2698,26 @@ func (f *fakeImageFetcher) fetchRunImage(name string) error {
return nil
}
type fakeDockerClient struct {
nNetworks int
build.DockerClient
}
func (f *fakeDockerClient) NetworkList(ctx context.Context, opts network.CreateOptions) ([]network.Inspect, error) {
ret := make([]network.Inspect, f.nNetworks)
return ret, nil
}
func (f *fakeDockerClient) NetworkCreate(ctx context.Context, name string, options network.CreateOptions) (network.CreateResponse, error) {
f.nNetworks++
return network.CreateResponse{}, nil
}
func (f *fakeDockerClient) NetworkRemove(ctx context.Context, network string) error {
f.nNetworks--
return nil
}
func newTestLifecycleExecErr(t *testing.T, logVerbose bool, tmpDir string, ops ...func(*build.LifecycleOptions)) (*build.LifecycleExecution, error) {
docker, err := client.NewClientWithOpts(client.FromEnv, client.WithVersion("1.38"))
h.AssertNil(t, err)

View File

@ -32,6 +32,7 @@ var (
api.MustParse("0.10"),
api.MustParse("0.11"),
api.MustParse("0.12"),
api.MustParse("0.13"),
}
)
@ -44,6 +45,7 @@ type Builder interface {
RunImages() []builder.RunImageMetadata
Image() imgutil.Image
OrderExtensions() dist.Order
System() dist.System
}
type LifecycleExecutor struct {
@ -71,7 +73,7 @@ type LifecycleOptions struct {
Builder Builder
BuilderImage string // differs from Builder.Name() and Builder.Image().Name() in that it includes the registry context
LifecycleImage string
LifecycleApis []string // optional - populated only if custom lifecycle image is downloaded, from that lifecycle's container's Labels.
LifecycleApis []string // optional - populated only if custom lifecycle image is downloaded, from that lifecycle image's labels.
RunImage string
FetchRunImageWithLifecycleLayer func(name string) (string, error)
ProjectMetadata files.ProjectMetadata
@ -92,6 +94,7 @@ type LifecycleOptions struct {
Network string
AdditionalTags []string
Volumes []string
InsecureRegistries []string
DefaultProcessType string
FileFilter func(string) bool
Workspace string
@ -102,6 +105,7 @@ type LifecycleOptions struct {
SBOMDestinationDir string
CreationTime *time.Time
Keychain authn.Keychain
EnableUsernsHost bool
}
func NewLifecycleExecutor(logger logging.Logger, docker DockerClient) *LifecycleExecutor {

View File

@ -4,7 +4,6 @@ import (
"context"
"io"
"github.com/docker/docker/api/types"
dcontainer "github.com/docker/docker/api/types/container"
"github.com/pkg/errors"
@ -64,5 +63,5 @@ func (p *Phase) Run(ctx context.Context) error {
}
func (p *Phase) Cleanup() error {
return p.docker.ContainerRemove(context.Background(), p.ctr.ID, types.ContainerRemoveOptions{Force: true})
return p.docker.ContainerRemove(context.Background(), p.ctr.ID, dcontainer.RemoveOptions{Force: true})
}

View File

@ -34,9 +34,16 @@ type PhaseConfigProvider struct {
}
func NewPhaseConfigProvider(name string, lifecycleExec *LifecycleExecution, ops ...PhaseConfigProviderOperation) *PhaseConfigProvider {
hostConf := new(container.HostConfig)
if lifecycleExec.opts.EnableUsernsHost {
hostConf.UsernsMode = "host"
}
if lifecycleExec.os != "windows" {
hostConf.SecurityOpt = []string{"no-new-privileges=true"}
}
provider := &PhaseConfigProvider{
ctrConf: new(container.Config),
hostConf: new(container.HostConfig),
hostConf: hostConf,
name: name,
os: lifecycleExec.os,
infoWriter: logging.GetWriterForLevel(lifecycleExec.logger, logging.InfoLevel),

View File

@ -59,6 +59,22 @@ func testPhaseConfigProvider(t *testing.T, when spec.G, it spec.S) {
h.AssertSliceContainsMatch(t, phaseConfigProvider.HostConfig().Binds, "pack-app-.*:/workspace")
h.AssertEq(t, phaseConfigProvider.HostConfig().Isolation, container.IsolationEmpty)
h.AssertEq(t, phaseConfigProvider.HostConfig().UsernsMode, container.UsernsMode(""))
h.AssertSliceContains(t, phaseConfigProvider.HostConfig().SecurityOpt, "no-new-privileges=true")
})
when("userns-host is enabled", func() {
it("sets user namespace mode to host", func() {
expectedBuilderImage := ifakes.NewImage("some-builder-name", "", nil)
fakeBuilder, err := fakes.NewFakeBuilder(fakes.WithImage(expectedBuilderImage))
h.AssertNil(t, err)
lifecycle := newTestLifecycleExec(t, false, "some-temp-dir", fakes.WithBuilder(fakeBuilder), fakes.WithEnableUsernsHost())
expectedPhaseName := "some-name"
phaseConfigProvider := build.NewPhaseConfigProvider(expectedPhaseName, lifecycle)
h.AssertEq(t, phaseConfigProvider.HostConfig().UsernsMode, container.UsernsMode("host"))
})
})
when("building for Windows", func() {
@ -72,6 +88,7 @@ func testPhaseConfigProvider(t *testing.T, when spec.G, it spec.S) {
phaseConfigProvider := build.NewPhaseConfigProvider("some-name", lifecycle)
h.AssertEq(t, phaseConfigProvider.HostConfig().Isolation, container.IsolationProcess)
h.AssertSliceNotContains(t, phaseConfigProvider.HostConfig().SecurityOpt, "no-new-privileges=true")
})
})

View File

@ -38,7 +38,7 @@ const phaseName = "phase"
var (
repoName string
ctrClient client.CommonAPIClient
ctrClient client.APIClient
)
// TestPhase is a integration test suite to ensure that the phase options are propagated to the container.
@ -70,7 +70,7 @@ func testPhase(t *testing.T, when spec.G, it spec.S) {
lifecycleExec *build.LifecycleExecution
phaseFactory build.PhaseFactory
outBuf, errBuf bytes.Buffer
docker client.CommonAPIClient
docker client.APIClient
logger logging.Logger
osType string
)
@ -508,7 +508,7 @@ func assertRunSucceeds(t *testing.T, phase build.RunnerCleaner, outBuf *bytes.Bu
h.AssertNilE(t, phase.Cleanup())
}
func CreateFakeLifecycleExecution(logger logging.Logger, docker client.CommonAPIClient, appDir string, repoName string, handler ...container.Handler) (*build.LifecycleExecution, error) {
func CreateFakeLifecycleExecution(logger logging.Logger, docker client.APIClient, appDir string, repoName string, handler ...container.Handler) (*build.LifecycleExecution, error) {
builderImage, err := local.NewImage(repoName, docker, local.FromBaseImage(repoName))
if err != nil {
return nil, err

View File

@ -42,6 +42,7 @@ const (
orderPath = "/cnb/order.toml"
stackPath = "/cnb/stack.toml"
systemPath = "/cnb/system.toml"
runPath = "/cnb/run.toml"
platformDir = "/platform"
lifecycleDir = "/cnb/lifecycle"
@ -84,7 +85,9 @@ type Builder struct {
replaceOrder bool
order dist.Order
orderExtensions dist.Order
system dist.System
validateMixins bool
saveProhibited bool
}
type orderTOML struct {
@ -92,6 +95,10 @@ type orderTOML struct {
OrderExt dist.Order `toml:"order-extensions,omitempty"`
}
type systemTOML struct {
System dist.System `toml:"system"`
}
// moduleWithDiffID is a Build Module which content was written on disk in a tar file and the content hash was calculated
type moduleWithDiffID struct {
tarPath string
@ -102,8 +109,24 @@ type moduleWithDiffID struct {
type BuilderOption func(*options) error
type options struct {
toFlatten buildpack.FlattenModuleInfos
labels map[string]string
toFlatten buildpack.FlattenModuleInfos
labels map[string]string
runImage string
saveProhibited bool
}
func WithRunImage(name string) BuilderOption {
return func(o *options) error {
o.runImage = name
return nil
}
}
func WithoutSave() BuilderOption {
return func(o *options) error {
o.saveProhibited = true
return nil
}
}
// FromImage constructs a builder from a builder image
@ -124,6 +147,11 @@ func constructBuilder(img imgutil.Image, newName string, errOnMissingLabel bool,
return nil, fmt.Errorf("builder %s missing label %s -- try recreating builder", style.Symbol(img.Name()), style.Symbol(metadataLabel))
}
system := dist.System{}
if _, err := dist.GetLabel(img, SystemLabel, &system); err != nil {
return nil, errors.Wrapf(err, "getting label %s", SystemLabel)
}
opts := &options{}
for _, op := range ops {
if err := op(opts); err != nil {
@ -140,6 +168,12 @@ func constructBuilder(img imgutil.Image, newName string, errOnMissingLabel bool,
return nil, err
}
if opts.runImage != "" {
// FIXME: for now the mirrors are gone if you override the run-image (open an issue if preserving the mirrors is desired)
metadata.RunImages = []RunImageMetadata{{Image: opts.runImage}}
metadata.Stack.RunImage = RunImageMetadata{Image: opts.runImage}
}
for labelKey, labelValue := range opts.labels {
err = img.SetLabel(labelKey, labelValue)
if err != nil {
@ -158,6 +192,8 @@ func constructBuilder(img imgutil.Image, newName string, errOnMissingLabel bool,
validateMixins: true,
additionalBuildpacks: buildpack.NewManagedCollectionV2(opts.toFlatten),
additionalExtensions: buildpack.NewManagedCollectionV2(opts.toFlatten),
saveProhibited: opts.saveProhibited,
system: system,
}
if err := addImgLabelsToBuildr(bldr); err != nil {
@ -279,6 +315,9 @@ func (b *Builder) Stack() StackMetadata {
return b.metadata.Stack
}
// System returns the system buildpacks configuration
func (b *Builder) System() dist.System { return b.system }
// RunImages returns all run image metadata
func (b *Builder) RunImages() []RunImageMetadata {
return append(b.metadata.RunImages, b.Stack().RunImage)
@ -401,6 +440,11 @@ func (b *Builder) SetStack(stackConfig builder.StackConfig) {
}
}
// SetSystem sets the system buildpacks of the builder
func (b *Builder) SetSystem(system dist.System) {
b.system = system
}
// SetRunImage sets the run image of the builder
func (b *Builder) SetRunImage(runConfig builder.RunConfig) {
var runImages []RunImageMetadata
@ -419,7 +463,11 @@ func (b *Builder) SetValidateMixins(to bool) {
}
// Save saves the builder
func (b *Builder) Save(logger logging.Logger, creatorMetadata CreatorMetadata) error {
func (b *Builder) Save(logger logging.Logger, creatorMetadata CreatorMetadata, additionalTags ...string) error {
if b.saveProhibited {
return fmt.Errorf("failed to save builder %s as saving is not allowed", b.Name())
}
logger.Debugf("Creating builder with the following buildpacks:")
for _, bpInfo := range b.metadata.Buildpacks {
logger.Debugf("-> %s", style.Symbol(bpInfo.FullName()))
@ -527,6 +575,24 @@ func (b *Builder) Save(logger logging.Logger, creatorMetadata CreatorMetadata) e
}
}
if len(b.system.Pre.Buildpacks) > 0 || len(b.system.Post.Buildpacks) > 0 {
resolvedSystemBp, err := processSystem(b.metadata.Buildpacks, b.system, buildpack.KindBuildpack)
if err != nil {
return errors.Wrap(err, "processing system buildpacks")
}
systemTar, err := b.systemLayer(resolvedSystemBp, tmpDir)
if err != nil {
return err
}
if err := b.image.AddLayer(systemTar); err != nil {
return errors.Wrap(err, "adding system.tar layer")
}
if err := dist.SetLabel(b.image, SystemLabel, b.system); err != nil {
return err
}
}
stackTar, err := b.stackLayer(tmpDir)
if err != nil {
return err
@ -586,7 +652,10 @@ func (b *Builder) Save(logger logging.Logger, creatorMetadata CreatorMetadata) e
return errors.Wrap(err, "failed to set working dir")
}
return b.image.Save()
logger.Debugf("Builder creation completed, starting image save")
err = b.image.Save(additionalTags...)
logger.Debugf("Image save completed")
return err
}
// Helpers
@ -738,6 +807,36 @@ func processOrder(modulesOnBuilder []dist.ModuleInfo, order dist.Order, kind str
return resolved, nil
}
func processSystem(modulesOnBuilder []dist.ModuleInfo, system dist.System, kind string) (dist.System, error) {
resolved := dist.System{}
// Pre buildpacks
for _, bp := range system.Pre.Buildpacks {
var (
ref dist.ModuleRef
err error
)
if ref, err = resolveRef(modulesOnBuilder, bp, kind); err != nil {
return dist.System{}, err
}
resolved.Pre.Buildpacks = append(resolved.Pre.Buildpacks, ref)
}
// Post buildpacks
for _, bp := range system.Post.Buildpacks {
var (
ref dist.ModuleRef
err error
)
if ref, err = resolveRef(modulesOnBuilder, bp, kind); err != nil {
return dist.System{}, err
}
resolved.Post.Buildpacks = append(resolved.Post.Buildpacks, ref)
}
return resolved, nil
}
func resolveRef(moduleList []dist.ModuleInfo, ref dist.ModuleRef, kind string) (dist.ModuleRef, error) {
var matching []dist.ModuleInfo
for _, bp := range moduleList {
@ -1065,6 +1164,29 @@ func orderFileContents(order dist.Order, orderExt dist.Order) (string, error) {
return buf.String(), nil
}
func (b *Builder) systemLayer(system dist.System, dest string) (string, error) {
contents, err := systemFileContents(system)
if err != nil {
return "", err
}
layerTar := filepath.Join(dest, "system.tar")
err = layer.CreateSingleFileTar(layerTar, systemPath, contents, b.layerWriterFactory)
if err != nil {
return "", errors.Wrapf(err, "failed to create system.toml layer tar")
}
return layerTar, nil
}
func systemFileContents(system dist.System) (string, error) {
buf := &bytes.Buffer{}
tomlData := systemTOML{System: system}
if err := toml.NewEncoder(buf).Encode(tomlData); err != nil {
return "", errors.Wrapf(err, "failed to marshal system.toml")
}
return buf.String(), nil
}
func (b *Builder) stackLayer(dest string) (string, error) {
buf := &bytes.Buffer{}
var err error

View File

@ -10,6 +10,7 @@ import (
"path"
"path/filepath"
"runtime"
"slices"
"strings"
"testing"
@ -460,6 +461,18 @@ func testBuilder(t *testing.T, when spec.G, it spec.S) {
h.AssertOnTarEntry(t, layerTar, "/cnb/order.toml", h.ContentEquals("some content"))
})
it("adds additional tags as requested", func() {
h.AssertNil(t, subject.Save(logger, builder.CreatorMetadata{}, "additional-tag-one", "additional-tag-two"))
h.AssertEq(t, baseImage.IsSaved(), true)
h.AssertEq(t, baseImage.Name(), "some/builder")
savedNames := baseImage.SavedNames()
slices.Sort(savedNames)
h.AssertEq(t, 3, len(savedNames))
h.AssertEq(t, "additional-tag-one", savedNames[0])
h.AssertEq(t, "additional-tag-two", savedNames[1])
h.AssertEq(t, "some/builder", savedNames[2])
})
when("validating order", func() {
it.Before(func() {
subject.SetLifecycle(mockLifecycle)
@ -920,8 +933,35 @@ func testBuilder(t *testing.T, when spec.G, it spec.S) {
h.AssertTrue(t, strings.Contains(layers[2], h.LayerFileName(ext2v1)))
})
})
})
when("system buildpacks", func() {
it.Before(func() {
subject.SetLifecycle(mockLifecycle)
subject.AddBuildpack(bp1v1)
subject.SetSystem(dist.System{
Pre: dist.SystemBuildpacks{
Buildpacks: []dist.ModuleRef{
{ModuleInfo: dist.ModuleInfo{ID: bp1v1.Descriptor().Info().ID}}},
},
})
})
it("should write system buildpacks to system.toml)", func() {
err := subject.Save(logger, builder.CreatorMetadata{})
h.AssertNil(t, err)
layerTar, err := baseImage.FindLayerWithPath("/cnb/system.toml")
h.AssertNil(t, err)
h.AssertOnTarEntry(t, layerTar, "/cnb/system.toml", h.ContentEquals(`[system]
[system.pre]
[[system.pre.buildpacks]]
id = "buildpack-1-id"
version = "buildpack-1-version-1"
`))
})
})
})
when("#SetLifecycle", func() {
it.Before(func() {
h.AssertNil(t, subject.Save(logger, builder.CreatorMetadata{}))
@ -1846,6 +1886,32 @@ func testBuilder(t *testing.T, when spec.G, it spec.S) {
})
})
})
when("#New", func() {
when("#WithRunImage", func() {
// Current runImage information in builder image:
// "stack": {"runImage": {"image": "prev/run", "mirrors": ["prev/mirror"]}}
var newBuilder *builder.Builder
newRunImage := "another/run"
it.Before(func() {
var err error
newBuilder, err = builder.New(builderImage, "newBuilder/image", builder.WithRunImage(newRunImage))
h.AssertNil(t, err)
})
it("overrides the run image metadata (which becomes run.toml)", func() {
// RunImages() returns Stacks + RunImages metadata.
metadata := newBuilder.RunImages()
h.AssertTrue(t, len(metadata) == 2)
for _, m := range metadata {
// Both images must be equal to the expected run-image
h.AssertEq(t, m.Image, newRunImage)
h.AssertEq(t, len(m.Mirrors), 0)
}
})
})
})
})
when("flatten", func() {

View File

@ -13,6 +13,14 @@ type ImageFetcher interface {
// If daemon is true, it will look return a `local.Image`. Pull, applicable only when daemon is true, will
// attempt to pull a remote image first.
Fetch(ctx context.Context, name string, options image.FetchOptions) (imgutil.Image, error)
// CheckReadAccess verifies if an image is accessible with read permissions
// When FetchOptions.Daemon is true and the image doesn't exist in the daemon,
// the behavior is dictated by the pull policy, which can have the following behavior
// - PullNever: returns false
// - PullAlways Or PullIfNotPresent: it will check read access for the remote image.
// When FetchOptions.Daemon is false it will check read access for the remote image.
CheckReadAccess(repo string, options image.FetchOptions) bool
}
type ImageFetcherWrapper struct {
@ -32,3 +40,7 @@ func (w *ImageFetcherWrapper) Fetch(
) (Inspectable, error) {
return w.fetcher.Fetch(ctx, name, options)
}
func (w *ImageFetcherWrapper) CheckReadAccessValidator(repo string, options image.FetchOptions) bool {
return w.fetcher.CheckReadAccess(repo, options)
}

View File

@ -12,10 +12,9 @@ import (
"github.com/buildpacks/pack/pkg/archive"
)
// A snapshot of the latest tested lifecycle version values
// DefaultLifecycleVersion A snapshot of the latest tested lifecycle version values
const (
DefaultLifecycleVersion = "0.18.4"
DefaultBuildpackAPIVersion = "0.2"
DefaultLifecycleVersion = "0.20.11"
)
// Blob is an interface to wrap opening blobs
@ -120,3 +119,8 @@ func (l *lifecycle) binaries() []string {
}
return binaries
}
// SupportedLinuxArchitecture returns true for each binary architecture available at https://github.com/buildpacks/lifecycle/releases/
func SupportedLinuxArchitecture(arch string) bool {
return arch == "arm64" || arch == "ppc64le" || arch == "s390x"
}

View File

@ -5,6 +5,7 @@ import "github.com/buildpacks/pack/pkg/dist"
const (
OrderLabel = "io.buildpacks.buildpack.order"
OrderExtensionsLabel = "io.buildpacks.buildpack.order-extensions"
SystemLabel = "io.buildpacks.buildpack.system"
)
type Metadata struct {

View File

@ -1,45 +0,0 @@
package builder
type SuggestedBuilder struct {
Vendor string
Image string
DefaultDescription string
}
var SuggestedBuilders = []SuggestedBuilder{
{
Vendor: "Google",
Image: "gcr.io/buildpacks/builder:v1",
DefaultDescription: "GCP Builder for all runtimes",
},
{
Vendor: "Heroku",
Image: "heroku/builder:22",
DefaultDescription: "Heroku-22 (Ubuntu 22.04) base image with buildpacks for Go, Java, Node.js, PHP, Python, Ruby & Scala",
},
{
Vendor: "Heroku",
Image: "heroku/builder:20",
DefaultDescription: "Heroku-20 (Ubuntu 20.04) base image with buildpacks for Go, Java, Node.js, PHP, Python, Ruby & Scala",
},
{
Vendor: "Paketo Buildpacks",
Image: "paketobuildpacks/builder-jammy-base",
DefaultDescription: "Small base image with buildpacks for Java, Node.js, Golang, .NET Core, Python & Ruby",
},
{
Vendor: "Paketo Buildpacks",
Image: "paketobuildpacks/builder-jammy-full",
DefaultDescription: "Larger base image with buildpacks for Java, Node.js, Golang, .NET Core, Python, Ruby, & PHP",
},
{
Vendor: "Paketo Buildpacks",
Image: "paketobuildpacks/builder-jammy-tiny",
DefaultDescription: "Tiny base image (jammy build image, distroless run image) with buildpacks for Golang & Java",
},
{
Vendor: "Paketo Buildpacks",
Image: "paketobuildpacks/builder-jammy-buildpackless-static",
DefaultDescription: "Static base image (jammy build image, distroless run image) suitable for static binaries like Go or Rust",
},
}

View File

@ -0,0 +1,113 @@
package builder
import (
"github.com/google/go-containerregistry/pkg/name"
"github.com/buildpacks/pack/internal/config"
)
type KnownBuilder struct {
Vendor string
Image string
DefaultDescription string
Suggested bool
Trusted bool
}
var KnownBuilders = []KnownBuilder{
{
Vendor: "Google",
Image: "gcr.io/buildpacks/builder:google-22",
DefaultDescription: "Ubuntu 22.04 base image with buildpacks for .NET, Dart, Go, Java, Node.js, PHP, Python, and Ruby",
Suggested: true,
Trusted: true,
},
{
Vendor: "Heroku",
Image: "heroku/builder:24",
DefaultDescription: "Ubuntu 24.04 AMD64+ARM64 base image with buildpacks for Go, Java, Node.js, PHP, Python, Ruby & Scala.",
Suggested: true,
Trusted: true,
},
{
Vendor: "Heroku",
Image: "heroku/builder:22",
DefaultDescription: "Ubuntu 22.04 AMD64 base image with buildpacks for Go, Java, Node.js, PHP, Python, Ruby & Scala.",
Suggested: false,
Trusted: true,
},
{
Vendor: "Heroku",
Image: "heroku/builder:20",
DefaultDescription: "Ubuntu 20.04 AMD64 base image with buildpacks for Go, Java, Node.js, PHP, Python, Ruby & Scala.",
Suggested: false,
Trusted: true,
},
{
Vendor: "Paketo Buildpacks",
Image: "paketobuildpacks/builder-jammy-base",
DefaultDescription: "Small base image with buildpacks for Java, Node.js, Golang, .NET Core, Python & Ruby",
Suggested: true,
Trusted: true,
},
{
Vendor: "Paketo Buildpacks",
Image: "paketobuildpacks/builder-jammy-full",
DefaultDescription: "Larger base image with buildpacks for Java, Node.js, Golang, .NET Core, Python, Ruby, & PHP",
Suggested: true,
Trusted: true,
},
{
Vendor: "Paketo Buildpacks",
Image: "paketobuildpacks/builder-jammy-tiny",
DefaultDescription: "Tiny base image (jammy build image, distroless run image) with buildpacks for Golang & Java",
Suggested: true,
Trusted: true,
},
{
Vendor: "Paketo Buildpacks",
Image: "paketobuildpacks/builder-jammy-buildpackless-static",
DefaultDescription: "Static base image (jammy build image, distroless run image) suitable for static binaries like Go or Rust",
Suggested: true,
Trusted: true,
},
{
Vendor: "Paketo Buildpacks",
Image: "paketobuildpacks/builder-ubi8-base",
DefaultDescription: "Universal Base Image (RHEL8) with buildpacks to build Node.js or Java runtimes. Support also the new extension feature (aka apply Dockerfile)",
Suggested: true,
Trusted: true,
},
}
func IsKnownTrustedBuilder(builderName string) bool {
for _, knownBuilder := range KnownBuilders {
if builderName == knownBuilder.Image && knownBuilder.Trusted {
return true
}
}
return false
}
func IsTrustedBuilder(cfg config.Config, builderName string) (bool, error) {
builderReference, err := name.ParseReference(builderName, name.WithDefaultTag(""))
if err != nil {
return false, err
}
for _, trustedBuilder := range cfg.TrustedBuilders {
trustedBuilderReference, err := name.ParseReference(trustedBuilder.Name, name.WithDefaultTag(""))
if err != nil {
return false, err
}
if trustedBuilderReference.Identifier() != "" {
if builderReference.Name() == trustedBuilderReference.Name() {
return true, nil
}
} else {
if builderReference.Context().RepositoryStr() == trustedBuilderReference.Context().RepositoryStr() {
return true, nil
}
}
}
return false, nil
}

View File

@ -0,0 +1,102 @@
package builder_test
import (
"testing"
"github.com/heroku/color"
"github.com/sclevine/spec"
"github.com/sclevine/spec/report"
bldr "github.com/buildpacks/pack/internal/builder"
"github.com/buildpacks/pack/internal/config"
h "github.com/buildpacks/pack/testhelpers"
)
func TestTrustedBuilder(t *testing.T) {
color.Disable(true)
defer color.Disable(false)
spec.Run(t, "Trusted Builder", trustedBuilder, spec.Parallel(), spec.Report(report.Terminal{}))
}
func trustedBuilder(t *testing.T, when spec.G, it spec.S) {
when("IsKnownTrustedBuilder", func() {
it("matches exactly", func() {
h.AssertTrue(t, bldr.IsKnownTrustedBuilder("paketobuildpacks/builder-jammy-base"))
h.AssertFalse(t, bldr.IsKnownTrustedBuilder("paketobuildpacks/builder-jammy-base:latest"))
h.AssertFalse(t, bldr.IsKnownTrustedBuilder("paketobuildpacks/builder-jammy-base:1.2.3"))
h.AssertFalse(t, bldr.IsKnownTrustedBuilder("my/private/builder"))
})
})
when("IsTrustedBuilder", func() {
it("trust image without tag", func() {
cfg := config.Config{
TrustedBuilders: []config.TrustedBuilder{
{
Name: "my/trusted/builder-jammy",
},
},
}
trustedBuilders := []string{
"my/trusted/builder-jammy",
"my/trusted/builder-jammy:latest",
"my/trusted/builder-jammy:1.2.3",
}
untrustedBuilders := []string{
"my/private/builder", // random builder
"my/trusted/builder-jammy-base", // shared prefix
}
for _, builder := range trustedBuilders {
isTrusted, err := bldr.IsTrustedBuilder(cfg, builder)
h.AssertNil(t, err)
h.AssertTrue(t, isTrusted)
}
for _, builder := range untrustedBuilders {
isTrusted, err := bldr.IsTrustedBuilder(cfg, builder)
h.AssertNil(t, err)
h.AssertFalse(t, isTrusted)
}
})
it("trust image with tag", func() {
cfg := config.Config{
TrustedBuilders: []config.TrustedBuilder{
{
Name: "my/trusted/builder-jammy:1.2.3",
},
{
Name: "my/trusted/builder-jammy:latest",
},
},
}
trustedBuilders := []string{
"my/trusted/builder-jammy:1.2.3",
"my/trusted/builder-jammy:latest",
}
untrustedBuilders := []string{
"my/private/builder",
"my/trusted/builder-jammy",
"my/trusted/builder-jammy:2.0.0",
"my/trusted/builder-jammy-base",
}
for _, builder := range trustedBuilders {
isTrusted, err := bldr.IsTrustedBuilder(cfg, builder)
h.AssertNil(t, err)
h.AssertTrue(t, isTrusted)
}
for _, builder := range untrustedBuilders {
isTrusted, err := bldr.IsTrustedBuilder(cfg, builder)
h.AssertNil(t, err)
h.AssertFalse(t, isTrusted)
}
})
})
}

View File

@ -31,7 +31,7 @@ func (v *Version) Equal(other *Version) bool {
// MarshalText makes Version satisfy the encoding.TextMarshaler interface.
func (v *Version) MarshalText() ([]byte, error) {
return []byte(v.Version.Original()), nil
return []byte(v.Original()), nil
}
// UnmarshalText makes Version satisfy the encoding.TextUnmarshaler interface.

View File

@ -1,20 +1,22 @@
package commands
import (
"fmt"
"os"
"path/filepath"
"strconv"
"strings"
"time"
"github.com/buildpacks/pack/pkg/cache"
"github.com/google/go-containerregistry/pkg/name"
"github.com/pkg/errors"
"github.com/spf13/cobra"
bldr "github.com/buildpacks/pack/internal/builder"
"github.com/buildpacks/pack/internal/config"
"github.com/buildpacks/pack/internal/style"
"github.com/buildpacks/pack/pkg/cache"
"github.com/buildpacks/pack/pkg/client"
"github.com/buildpacks/pack/pkg/image"
"github.com/buildpacks/pack/pkg/logging"
@ -23,38 +25,43 @@ import (
)
type BuildFlags struct {
Publish bool
ClearCache bool
TrustBuilder bool
Interactive bool
Sparse bool
DockerHost string
CacheImage string
Cache cache.CacheOpts
AppPath string
Builder string
Registry string
RunImage string
Policy string
Network string
DescriptorPath string
DefaultProcessType string
LifecycleImage string
Env []string
EnvFiles []string
Buildpacks []string
Extensions []string
Volumes []string
AdditionalTags []string
Workspace string
GID int
UID int
PreviousImage string
SBOMDestinationDir string
ReportDestinationDir string
DateTime string
PreBuildpacks []string
PostBuildpacks []string
Publish bool
ClearCache bool
DisableSystemBuilpacks bool
TrustBuilder bool
TrustExtraBuildpacks bool
Interactive bool
Sparse bool
EnableUsernsHost bool
DockerHost string
CacheImage string
Cache cache.CacheOpts
AppPath string
Builder string
Registry string
RunImage string
Platform string
Policy string
Network string
DescriptorPath string
DefaultProcessType string
LifecycleImage string
Env []string
EnvFiles []string
Buildpacks []string
Extensions []string
Volumes []string
AdditionalTags []string
Workspace string
GID int
UID int
PreviousImage string
SBOMDestinationDir string
ReportDestinationDir string
DateTime string
PreBuildpacks []string
PostBuildpacks []string
InsecureRegistries []string
}
// Build an image from source code
@ -79,7 +86,7 @@ func Build(logger logging.Logger, cfg config.Config, packClient PackClient) *cob
inputPreviousImage := client.ParseInputImageReference(flags.PreviousImage)
descriptor, actualDescriptorPath, err := parseProjectToml(flags.AppPath, flags.DescriptorPath)
descriptor, actualDescriptorPath, err := parseProjectToml(flags.AppPath, flags.DescriptorPath, logger)
if err != nil {
return err
}
@ -108,7 +115,11 @@ func Build(logger logging.Logger, cfg config.Config, packClient PackClient) *cob
return err
}
trustBuilder := isTrustedBuilder(cfg, builder) || flags.TrustBuilder
isTrusted, err := bldr.IsTrustedBuilder(cfg, builder)
if err != nil {
return err
}
trustBuilder := isTrusted || bldr.IsKnownTrustedBuilder(builder) || flags.TrustBuilder
if trustBuilder {
logger.Debugf("Builder %s is trusted", style.Symbol(builder))
if flags.LifecycleImage != "" {
@ -132,6 +143,7 @@ func Build(logger logging.Logger, cfg config.Config, packClient PackClient) *cob
if err != nil {
return errors.Wrapf(err, "parsing pull policy %s", flags.Policy)
}
var lifecycleImage string
if flags.LifecycleImage != "" {
ref, err := name.ParseReference(flags.LifecycleImage)
@ -140,6 +152,12 @@ func Build(logger logging.Logger, cfg config.Config, packClient PackClient) *cob
}
lifecycleImage = ref.Name()
}
err = isForbiddenTag(cfg, inputImageName.Name(), lifecycleImage, builder)
if err != nil {
return errors.Wrapf(err, "forbidden image name")
}
var gid = -1
if cmd.Flags().Changed("gid") {
gid = flags.GID
@ -165,13 +183,15 @@ func Build(logger logging.Logger, cfg config.Config, packClient PackClient) *cob
Image: inputImageName.Name(),
Publish: flags.Publish,
DockerHost: flags.DockerHost,
Platform: flags.Platform,
PullPolicy: pullPolicy,
ClearCache: flags.ClearCache,
TrustBuilder: func(string) bool {
return trustBuilder
},
Buildpacks: buildpacks,
Extensions: extensions,
TrustExtraBuildpacks: flags.TrustExtraBuildpacks,
Buildpacks: buildpacks,
Extensions: extensions,
ContainerConfig: client.ContainerConfig{
Network: flags.Network,
Volumes: flags.Volumes,
@ -192,12 +212,15 @@ func Build(logger logging.Logger, cfg config.Config, packClient PackClient) *cob
CreationTime: dateTime,
PreBuildpacks: flags.PreBuildpacks,
PostBuildpacks: flags.PostBuildpacks,
DisableSystemBuildpacks: flags.DisableSystemBuilpacks,
EnableUsernsHost: flags.EnableUsernsHost,
LayoutConfig: &client.LayoutConfig{
Sparse: flags.Sparse,
InputImage: inputImageName,
PreviousInputImage: inputPreviousImage,
LayoutRepoDir: cfg.LayoutRepositoryDir,
},
InsecureRegistries: flags.InsecureRegistries,
}); err != nil {
return errors.Wrap(err, "failed to build")
}
@ -231,6 +254,7 @@ func buildCommandFlags(cmd *cobra.Command, buildFlags *BuildFlags, cfg config.Co
cmd.Flags().StringVarP(&buildFlags.AppPath, "path", "p", "", "Path to app dir or zip-formatted file (defaults to current working directory)")
cmd.Flags().StringSliceVarP(&buildFlags.Buildpacks, "buildpack", "b", nil, "Buildpack to use. One of:\n a buildpack by id and version in the form of '<buildpack>@<version>',\n path to a buildpack directory (not supported on Windows),\n path/URL to a buildpack .tar or .tgz file, or\n a packaged buildpack image name in the form of '<hostname>/<repo>[:<tag>]'"+stringSliceHelp("buildpack"))
cmd.Flags().StringSliceVarP(&buildFlags.Extensions, "extension", "", nil, "Extension to use. One of:\n an extension by id and version in the form of '<extension>@<version>',\n path to an extension directory (not supported on Windows),\n path/URL to an extension .tar or .tgz file, or\n a packaged extension image name in the form of '<hostname>/<repo>[:<tag>]'"+stringSliceHelp("extension"))
cmd.Flags().StringArrayVar(&buildFlags.InsecureRegistries, "insecure-registry", []string{}, "List of insecure registries (only available for API >= 0.13)")
cmd.Flags().StringVarP(&buildFlags.Builder, "builder", "B", cfg.DefaultBuilder, "Builder image")
cmd.Flags().Var(&buildFlags.Cache, "cache",
`Cache options used to define cache techniques for build process.
@ -244,6 +268,7 @@ func buildCommandFlags(cmd *cobra.Command, buildFlags *BuildFlags, cfg config.Co
cmd.Flags().StringVar(&buildFlags.DateTime, "creation-time", "", "Desired create time in the output image config. Accepted values are Unix timestamps (e.g., '1641013200'), or 'now'. Platform API version must be at least 0.9 to use this feature.")
cmd.Flags().StringVarP(&buildFlags.DescriptorPath, "descriptor", "d", "", "Path to the project descriptor file")
cmd.Flags().StringVarP(&buildFlags.DefaultProcessType, "default-process", "D", "", `Set the default process type. (default "web")`)
cmd.Flags().BoolVar(&buildFlags.DisableSystemBuilpacks, "disable-system-buildpacks", false, "Disable System Buildpacks")
cmd.Flags().StringArrayVarP(&buildFlags.Env, "env", "e", []string{}, "Build-time environment variable, in the form 'VAR=VALUE' or 'VAR'.\nWhen using latter value-less form, value will be taken from current\n environment at the time this command is executed.\nThis flag may be specified multiple times and will override\n individual values defined by --env-file."+stringArrayHelp("env")+"\nNOTE: These are NOT available at image runtime.")
cmd.Flags().StringArrayVar(&buildFlags.EnvFiles, "env-file", []string{}, "Build-time environment variables file\nOne variable per line, of the form 'VAR=VALUE' or 'VAR'\nWhen using latter value-less form, value will be taken from current\n environment at the time this command is executed\nNOTE: These are NOT available at image runtime.\"")
cmd.Flags().StringVar(&buildFlags.Network, "network", "", "Connect detect and build containers to network")
@ -257,11 +282,13 @@ Special value 'inherit' may be used in which case DOCKER_HOST environment variab
This option may set DOCKER_HOST environment variable for the build container if needed.
`)
cmd.Flags().StringVar(&buildFlags.LifecycleImage, "lifecycle-image", cfg.LifecycleImage, `Custom lifecycle image to use for analysis, restore, and export when builder is untrusted.`)
cmd.Flags().StringVar(&buildFlags.Platform, "platform", "", `Platform to build on (e.g., "linux/amd64").`)
cmd.Flags().StringVar(&buildFlags.Policy, "pull-policy", "", `Pull policy to use. Accepted values are always, never, and if-not-present. (default "always")`)
cmd.Flags().StringVarP(&buildFlags.Registry, "buildpack-registry", "r", cfg.DefaultRegistryName, "Buildpack Registry by name")
cmd.Flags().StringVar(&buildFlags.RunImage, "run-image", "", "Run image (defaults to default stack's run image)")
cmd.Flags().StringSliceVarP(&buildFlags.AdditionalTags, "tag", "t", nil, "Additional tags to push the output image to.\nTags should be in the format 'image:tag' or 'repository/image:tag'."+stringSliceHelp("tag"))
cmd.Flags().BoolVar(&buildFlags.TrustBuilder, "trust-builder", false, "Trust the provided builder.\nAll lifecycle phases will be run in a single container.\nFor more on trusted builders, and when to trust or untrust a builder, check out our docs here: https://buildpacks.io/docs/tools/pack/concepts/trusted_builders")
cmd.Flags().BoolVar(&buildFlags.TrustExtraBuildpacks, "trust-extra-buildpacks", false, "Trust buildpacks that are provided in addition to the buildpacks on the builder")
cmd.Flags().StringArrayVar(&buildFlags.Volumes, "volume", nil, "Mount host volume into the build container, in the form '<host path>:<target path>[:<options>]'.\n- 'host path': Name of the volume or absolute directory path to mount.\n- 'target path': The path where the file or directory is available in the container.\n- 'options' (default \"ro\"): An optional comma separated list of mount options.\n - \"ro\", volume contents are read-only.\n - \"rw\", volume contents are readable and writeable.\n - \"volume-opt=<key>=<value>\", can be specified more than once, takes a key-value pair consisting of the option name and its value."+stringArrayHelp("volume"))
cmd.Flags().StringVar(&buildFlags.Workspace, "workspace", "", "Location at which to mount the app dir in the build image")
cmd.Flags().IntVar(&buildFlags.GID, "gid", 0, `Override GID of user's group in the stack's build and run images. The provided value must be a positive number`)
@ -271,6 +298,7 @@ This option may set DOCKER_HOST environment variable for the build container if
cmd.Flags().StringVar(&buildFlags.ReportDestinationDir, "report-output-dir", "", "Path to export build report.toml.\nOmitting the flag yield no report file.")
cmd.Flags().BoolVar(&buildFlags.Interactive, "interactive", false, "Launch a terminal UI to depict the build process")
cmd.Flags().BoolVar(&buildFlags.Sparse, "sparse", false, "Use this flag to avoid saving on disk the run-image layers when the application image is exported to OCI layout format")
cmd.Flags().BoolVar(&buildFlags.EnableUsernsHost, "userns-host", false, "Enable user namespace isolation for the build containers")
if !cfg.Experimental {
cmd.Flags().MarkHidden("interactive")
cmd.Flags().MarkHidden("sparse")
@ -314,6 +342,11 @@ func validateBuildFlags(flags *BuildFlags, cfg config.Config, inputImageRef clie
return client.NewExperimentError("Exporting to OCI layout is currently experimental.")
}
if _, err := os.Stat(inputImageRef.Name()); err == nil && flags.AppPath == "" {
logger.Warnf("You are building an image named '%s'. If you mean it as an app directory path, run 'pack build <args> --path %s'",
inputImageRef.Name(), inputImageRef.Name())
}
return nil
}
@ -362,7 +395,7 @@ func addEnvVar(env map[string]string, item string) map[string]string {
return env
}
func parseProjectToml(appPath, descriptorPath string) (projectTypes.Descriptor, string, error) {
func parseProjectToml(appPath, descriptorPath string, logger logging.Logger) (projectTypes.Descriptor, string, error) {
actualPath := descriptorPath
computePath := descriptorPath == ""
@ -377,6 +410,65 @@ func parseProjectToml(appPath, descriptorPath string) (projectTypes.Descriptor,
return projectTypes.Descriptor{}, "", errors.Wrap(err, "stat project descriptor")
}
descriptor, err := project.ReadProjectDescriptor(actualPath)
descriptor, err := project.ReadProjectDescriptor(actualPath, logger)
return descriptor, actualPath, err
}
func isForbiddenTag(cfg config.Config, input, lifecycle, builder string) error {
inputImage, err := name.ParseReference(input)
if err != nil {
return errors.Wrapf(err, "invalid image name %s", input)
}
if builder != "" {
builderImage, err := name.ParseReference(builder)
if err != nil {
return errors.Wrapf(err, "parsing builder image %s", builder)
}
if inputImage.Context().RepositoryStr() == builderImage.Context().RepositoryStr() {
return fmt.Errorf("name must not match builder image name")
}
}
if lifecycle != "" {
lifecycleImage, err := name.ParseReference(lifecycle)
if err != nil {
return errors.Wrapf(err, "parsing lifecycle image %s", lifecycle)
}
if inputImage.Context().RepositoryStr() == lifecycleImage.Context().RepositoryStr() {
return fmt.Errorf("name must not match lifecycle image name")
}
}
trustedBuilders := getTrustedBuilders(cfg)
for _, trustedBuilder := range trustedBuilders {
builder, err := name.ParseReference(trustedBuilder)
if err != nil {
return err
}
if inputImage.Context().RepositoryStr() == builder.Context().RepositoryStr() {
return fmt.Errorf("name must not match trusted builder name")
}
}
defaultLifecycleImageRef, err := name.ParseReference(config.DefaultLifecycleImageRepo)
if err != nil {
return errors.Wrapf(err, "parsing default lifecycle image %s", config.DefaultLifecycleImageRepo)
}
if inputImage.Context().RepositoryStr() == defaultLifecycleImageRef.Context().RepositoryStr() {
return fmt.Errorf("name must not match default lifecycle image name")
}
if cfg.DefaultBuilder != "" {
defaultBuilderImage, err := name.ParseReference(cfg.DefaultBuilder)
if err != nil {
return errors.Wrapf(err, "parsing default builder %s", cfg.DefaultBuilder)
}
if inputImage.Context().RepositoryStr() == defaultBuilderImage.Context().RegistryStr() {
return fmt.Errorf("name must not match default builder image name")
}
}
return nil
}

View File

@ -17,11 +17,10 @@ import (
"github.com/sclevine/spec/report"
"github.com/spf13/cobra"
"github.com/buildpacks/pack/internal/paths"
"github.com/buildpacks/pack/internal/commands"
"github.com/buildpacks/pack/internal/commands/testmocks"
"github.com/buildpacks/pack/internal/config"
"github.com/buildpacks/pack/internal/paths"
"github.com/buildpacks/pack/pkg/client"
"github.com/buildpacks/pack/pkg/image"
"github.com/buildpacks/pack/pkg/logging"
@ -114,7 +113,20 @@ func testBuildCommand(t *testing.T, when spec.G, it spec.S) {
})
})
when("the builder is suggested", func() {
when("the builder is known to be trusted and suggested", func() {
it("sets the trust builder option", func() {
mockClient.EXPECT().
Build(gomock.Any(), EqBuildOptionsWithTrustedBuilder(true)).
Return(nil)
logger.WantVerbose(true)
command.SetArgs([]string{"image", "--builder", "heroku/builder:24"})
h.AssertNil(t, command.Execute())
h.AssertContains(t, outBuf.String(), "Builder 'heroku/builder:24' is trusted")
})
})
when("the builder is known to be trusted but not suggested", func() {
it("sets the trust builder option", func() {
mockClient.EXPECT().
Build(gomock.Any(), EqBuildOptionsWithTrustedBuilder(true)).
@ -126,6 +138,53 @@ func testBuildCommand(t *testing.T, when spec.G, it spec.S) {
h.AssertContains(t, outBuf.String(), "Builder 'heroku/builder:22' is trusted")
})
})
when("the image name matches a builder name", func() {
it("refuses to build", func() {
logger.WantVerbose(true)
command.SetArgs([]string{"heroku/builder:test", "--builder", "heroku/builder:24"})
h.AssertNotNil(t, command.Execute())
h.AssertContains(t, outBuf.String(), "name must not match builder image name")
})
})
when("the image name matches a trusted-builder name", func() {
it("refuses to build", func() {
logger.WantVerbose(true)
command.SetArgs([]string{"heroku/builder:test", "--builder", "test", "--trust-builder"})
h.AssertNotNil(t, command.Execute())
h.AssertContains(t, outBuf.String(), "name must not match trusted builder name")
})
})
when("the image name matches a lifecycle image name", func() {
it("refuses to build", func() {
logger.WantVerbose(true)
command.SetArgs([]string{"buildpacksio/lifecycle:test", "--builder", "test", "--trust-builder"})
h.AssertNotNil(t, command.Execute())
h.AssertContains(t, outBuf.String(), "name must not match default lifecycle image name")
})
it("refuses to build when using fully qualified name", func() {
logger.WantVerbose(true)
command.SetArgs([]string{"docker.io/buildpacksio/lifecycle:test", "--builder", "test", "--trust-builder"})
h.AssertNotNil(t, command.Execute())
h.AssertContains(t, outBuf.String(), "name must not match default lifecycle image name")
})
})
when("the builder is not trusted", func() {
it("warns the user that the builder is untrusted", func() {
mockClient.EXPECT().
Build(gomock.Any(), EqBuildOptionsWithTrustedBuilder(false)).
Return(nil)
logger.WantVerbose(true)
command.SetArgs([]string{"image", "--builder", "org/builder:unknown"})
h.AssertNil(t, command.Execute())
h.AssertContains(t, outBuf.String(), "Builder 'org/builder:unknown' is untrusted")
})
})
})
when("--buildpack-registry flag is specified but experimental isn't set in the config", func() {
@ -148,6 +207,17 @@ func testBuildCommand(t *testing.T, when spec.G, it spec.S) {
})
})
when("--platform", func() {
it("sets platform", func() {
mockClient.EXPECT().
Build(gomock.Any(), EqBuildOptionsWithPlatform("linux/amd64")).
Return(nil)
command.SetArgs([]string{"image", "--builder", "my-builder", "--platform", "linux/amd64"})
h.AssertNil(t, command.Execute())
})
})
when("--pull-policy", func() {
it("sets pull-policy=never", func() {
mockClient.EXPECT().
@ -766,13 +836,9 @@ builder = "my-builder"
when("previous-image flag is provided", func() {
when("image is invalid", func() {
it("error must be thrown", func() {
mockClient.EXPECT().
Build(gomock.Any(), EqBuildOptionsWithPreviousImage("previous-image")).
Return(errors.New(""))
command.SetArgs([]string{"--builder", "my-builder", "/x@/y/?!z", "--previous-image", "previous-image"})
err := command.Execute()
h.AssertError(t, err, "failed to build")
h.AssertError(t, err, "forbidden image name")
})
})
@ -871,6 +937,43 @@ builder = "my-builder"
})
})
when("path to app dir or zip-formatted file is provided", func() {
it("builds with the specified path", func() {
mockClient.EXPECT().
Build(gomock.Any(), EqBuildOptionsWithPath("my-source")).
Return(nil)
command.SetArgs([]string{"image", "--builder", "my-builder", "--path", "my-source"})
h.AssertNil(t, command.Execute())
})
})
when("a local path with the same string as the specified image name exists", func() {
when("an app path is specified", func() {
it("doesn't warn that the positional argument will not be treated as the source path", func() {
mockClient.EXPECT().
Build(gomock.Any(), EqBuildOptionsWithImage("my-builder", "testdata")).
Return(nil)
command.SetArgs([]string{"testdata", "--builder", "my-builder", "--path", "my-source"})
h.AssertNil(t, command.Execute())
h.AssertNotContainsMatch(t, outBuf.String(), `Warning: You are building an image named '([^']+)'\. If you mean it as an app directory path, run 'pack build <args> --path ([^']+)'`)
})
})
when("no app path is specified", func() {
it("warns that the positional argument will not be treated as the source path", func() {
mockClient.EXPECT().
Build(gomock.Any(), EqBuildOptionsWithImage("my-builder", "testdata")).
Return(nil)
command.SetArgs([]string{"testdata", "--builder", "my-builder"})
h.AssertNil(t, command.Execute())
h.AssertContains(t, outBuf.String(), "Warning: You are building an image named 'testdata'. If you mean it as an app directory path, run 'pack build <args> --path testdata'")
})
})
})
when("export to OCI layout is expected but experimental isn't set in the config", func() {
it("errors with a descriptive message", func() {
command.SetArgs([]string{"oci:image", "--builder", "my-builder"})
@ -879,6 +982,31 @@ builder = "my-builder"
h.AssertError(t, err, "Exporting to OCI layout is currently experimental.")
})
})
when("--insecure-registry is provided", func() {
it("sets one insecure registry", func() {
mockClient.EXPECT().
Build(gomock.Any(), EqBuildOptionsWithInsecureRegistries([]string{
"foo.bar",
})).
Return(nil)
command.SetArgs([]string{"image", "--builder", "my-builder", "--insecure-registry", "foo.bar"})
h.AssertNil(t, command.Execute())
})
it("sets more than one insecure registry", func() {
mockClient.EXPECT().
Build(gomock.Any(), EqBuildOptionsWithInsecureRegistries([]string{
"foo.bar",
"foo.com",
})).
Return(nil)
command.SetArgs([]string{"image", "--builder", "my-builder", "--insecure-registry", "foo.bar", "--insecure-registry", "foo.com"})
h.AssertNil(t, command.Execute())
})
})
})
when("export to OCI layout is expected", func() {
@ -958,6 +1086,15 @@ func EqBuildOptionsDefaultProcess(defaultProc string) gomock.Matcher {
}
}
func EqBuildOptionsWithPlatform(platform string) gomock.Matcher {
return buildOptionsMatcher{
description: fmt.Sprintf("Platform=%s", platform),
equals: func(o client.BuildOptions) bool {
return o.Platform == platform
},
}
}
func EqBuildOptionsWithPullPolicy(policy image.PullPolicy) gomock.Matcher {
return buildOptionsMatcher{
description: fmt.Sprintf("PullPolicy=%s", policy),
@ -1016,7 +1153,7 @@ func EqBuildOptionsWithTrustedBuilder(trustBuilder bool) gomock.Matcher {
return buildOptionsMatcher{
description: fmt.Sprintf("Trust Builder=%t", trustBuilder),
equals: func(o client.BuildOptions) bool {
return o.TrustBuilder(o.Builder)
return o.TrustBuilder(o.Builder) == trustBuilder
},
}
}
@ -1106,6 +1243,15 @@ func EqBuildOptionsWithDateTime(t *time.Time) interface{} {
}
}
func EqBuildOptionsWithPath(path string) interface{} {
return buildOptionsMatcher{
description: fmt.Sprintf("AppPath=%s", path),
equals: func(o client.BuildOptions) bool {
return o.AppPath == path
},
}
}
func EqBuildOptionsWithLayoutConfig(image, previousImage string, sparse bool, layoutDir string) interface{} {
return buildOptionsMatcher{
description: fmt.Sprintf("image=%s, previous-image=%s, sparse=%t, layout-dir=%s", image, previousImage, sparse, layoutDir),
@ -1122,6 +1268,18 @@ func EqBuildOptionsWithLayoutConfig(image, previousImage string, sparse bool, la
}
}
func EqBuildOptionsWithInsecureRegistries(insecureRegistries []string) gomock.Matcher {
return buildOptionsMatcher{
description: fmt.Sprintf("Insercure Registries=%s", insecureRegistries),
equals: func(o client.BuildOptions) bool {
if len(o.InsecureRegistries) != len(insecureRegistries) {
return false
}
return reflect.DeepEqual(o.InsecureRegistries, insecureRegistries)
},
}
}
type buildOptionsMatcher struct {
equals func(client.BuildOptions) bool
description string

View File

@ -2,6 +2,7 @@ package commands
import (
"fmt"
"os"
"path/filepath"
"github.com/pkg/errors"
@ -18,12 +19,15 @@ import (
// BuilderCreateFlags define flags provided to the CreateBuilder command
type BuilderCreateFlags struct {
Publish bool
BuilderTomlPath string
Registry string
Policy string
Flatten []string
Label map[string]string
Publish bool
AppendImageNameSuffix bool
BuilderTomlPath string
Registry string
Policy string
Flatten []string
Targets []string
Label map[string]string
AdditionalTags []string
}
// CreateBuilder creates a builder image, based on a builder config
@ -87,17 +91,48 @@ Creating a custom builder allows you to control what buildpacks are used and wha
return err
}
multiArchCfg, err := processMultiArchitectureConfig(logger, flags.Targets, builderConfig.Targets, !flags.Publish)
if err != nil {
return err
}
if len(multiArchCfg.Targets()) == 0 {
logger.Infof("Pro tip: use --targets flag OR [[targets]] in builder.toml to specify the desired platform")
}
if !flags.Publish && flags.AppendImageNameSuffix {
logger.Warnf("--append-image-name-suffix will be ignored, use combined with --publish")
}
// Create temporary directory for lifecycle downloads when using Docker images
var tempDir string
if hasDockerLifecycle(builderConfig) {
tempDir, err = os.MkdirTemp("", "pack-builder-*")
if err != nil {
return errors.Wrap(err, "creating temporary directory")
}
defer func() {
if cleanupErr := os.RemoveAll(tempDir); cleanupErr != nil {
logger.Debugf("Failed to clean up temporary directory %s: %v", tempDir, cleanupErr)
}
}()
}
imageName := args[0]
if err := pack.CreateBuilder(cmd.Context(), client.CreateBuilderOptions{
RelativeBaseDir: relativeBaseDir,
BuildConfigEnv: envMap,
BuilderName: imageName,
Config: builderConfig,
Publish: flags.Publish,
Registry: flags.Registry,
PullPolicy: pullPolicy,
Flatten: toFlatten,
Labels: flags.Label,
RelativeBaseDir: relativeBaseDir,
BuildConfigEnv: envMap,
BuilderName: imageName,
Config: builderConfig,
Publish: flags.Publish,
AppendImageNameSuffix: flags.AppendImageNameSuffix && flags.Publish,
Registry: flags.Registry,
PullPolicy: pullPolicy,
Flatten: toFlatten,
Labels: flags.Label,
Targets: multiArchCfg.Targets(),
TempDirectory: tempDir,
AdditionalTags: flags.AdditionalTags,
}); err != nil {
return err
}
@ -113,9 +148,17 @@ Creating a custom builder allows you to control what buildpacks are used and wha
}
cmd.Flags().StringVarP(&flags.BuilderTomlPath, "config", "c", "", "Path to builder TOML file (required)")
cmd.Flags().BoolVar(&flags.Publish, "publish", false, "Publish the builder directly to the container registry specified in <image-name>, instead of the daemon.")
cmd.Flags().BoolVar(&flags.AppendImageNameSuffix, "append-image-name-suffix", false, "Append an [os]-[arch] suffix to intermediate image tags when creating a multi-arch image; useful when publishing to a registry that doesn't allow overwriting existing tags")
cmd.Flags().StringVar(&flags.Policy, "pull-policy", "", "Pull policy to use. Accepted values are always, never, and if-not-present. The default is always")
cmd.Flags().StringArrayVar(&flags.Flatten, "flatten", nil, "List of buildpacks to flatten together into a single layer (format: '<buildpack-id>@<buildpack-version>,<buildpack-id>@<buildpack-version>'")
cmd.Flags().StringToStringVarP(&flags.Label, "label", "l", nil, "Labels to add to the builder image, in the form of '<name>=<value>'")
cmd.Flags().StringSliceVarP(&flags.Targets, "target", "t", nil,
`Target platforms to build for.\nTargets should be in the format '[os][/arch][/variant]:[distroname@osversion@anotherversion];[distroname@osversion]'.
- To specify two different architectures: '--target "linux/amd64" --target "linux/arm64"'
- To specify the distribution version: '--target "linux/arm/v6:ubuntu@14.04"'
- To specify multiple distribution versions: '--target "linux/arm/v6:ubuntu@14.04" --target "linux/arm/v6:ubuntu@16.04"'
`)
cmd.Flags().StringSliceVarP(&flags.AdditionalTags, "tag", "", nil, "Additional tags to push the output image to.\nTags should be in the format 'image:tag' or 'repository/image:tag'."+stringSliceHelp("tag"))
AddHelpFlag(cmd, "create")
return cmd
@ -125,6 +168,10 @@ func hasExtensions(builderConfig builder.Config) bool {
return len(builderConfig.Extensions) > 0 || len(builderConfig.OrderExtensions) > 0
}
func hasDockerLifecycle(builderConfig builder.Config) bool {
return buildpack.HasDockerLocator(builderConfig.Lifecycle.URI)
}
func validateCreateFlags(flags *BuilderCreateFlags, cfg config.Config) error {
if flags.Publish && flags.Policy == image.PullNever.String() {
return errors.Errorf("--publish and --pull-policy never cannot be used together. The --publish flag requires the use of remote images.")

View File

@ -5,6 +5,7 @@ import (
"fmt"
"os"
"path/filepath"
"reflect"
"testing"
"github.com/golang/mock/gomock"
@ -17,6 +18,8 @@ import (
"github.com/buildpacks/pack/internal/commands"
"github.com/buildpacks/pack/internal/commands/testmocks"
"github.com/buildpacks/pack/internal/config"
"github.com/buildpacks/pack/pkg/client"
"github.com/buildpacks/pack/pkg/dist"
"github.com/buildpacks/pack/pkg/logging"
h "github.com/buildpacks/pack/testhelpers"
)
@ -31,6 +34,23 @@ const validConfig = `
`
const validConfigWithTargets = `
[[buildpacks]]
id = "some.buildpack"
[[order]]
[[order.group]]
id = "some.buildpack"
[[targets]]
os = "linux"
arch = "amd64"
[[targets]]
os = "linux"
arch = "arm64"
`
const validConfigWithExtensions = `
[[buildpacks]]
id = "some.buildpack"
@ -441,5 +461,127 @@ func testCreateCommand(t *testing.T, when spec.G, it spec.S) {
})
})
})
when("multi-platform builder is expected to be created", func() {
when("builder config has no targets defined", func() {
it.Before(func() {
h.AssertNil(t, os.WriteFile(builderConfigPath, []byte(validConfig), 0666))
})
when("daemon", func() {
it("errors when exporting to daemon", func() {
command.SetArgs([]string{
"some/builder",
"--config", builderConfigPath,
"--target", "linux/amd64",
"--target", "windows/amd64",
})
err := command.Execute()
h.AssertNotNil(t, err)
h.AssertError(t, err, "when exporting to daemon only one target is allowed")
})
})
when("--publish", func() {
it.Before(func() {
mockClient.EXPECT().CreateBuilder(gomock.Any(), EqCreateBuilderOptionsTargets([]dist.Target{
{OS: "linux", Arch: "amd64"},
{OS: "windows", Arch: "amd64"},
})).Return(nil)
})
it("creates a builder with the given targets", func() {
command.SetArgs([]string{
"some/builder",
"--config", builderConfigPath,
"--target", "linux/amd64",
"--target", "windows/amd64",
"--publish",
})
h.AssertNil(t, command.Execute())
})
})
})
when("builder config has targets defined", func() {
it.Before(func() {
h.AssertNil(t, os.WriteFile(builderConfigPath, []byte(validConfigWithTargets), 0666))
})
when("--publish", func() {
it.Before(func() {
mockClient.EXPECT().CreateBuilder(gomock.Any(), EqCreateBuilderOptionsTargets([]dist.Target{
{OS: "linux", Arch: "amd64"},
{OS: "linux", Arch: "arm64"},
})).Return(nil)
})
it("creates a builder with the given targets", func() {
command.SetArgs([]string{
"some/builder",
"--config", builderConfigPath,
"--publish",
})
h.AssertNil(t, command.Execute())
})
})
when("invalid target flag is used", func() {
it("errors with a message when invalid target flag is used", func() {
command.SetArgs([]string{
"some/builder",
"--config", builderConfigPath,
"--target", "something/wrong",
"--publish",
})
h.AssertNotNil(t, command.Execute())
})
})
when("--targets", func() {
it.Before(func() {
mockClient.EXPECT().CreateBuilder(gomock.Any(), EqCreateBuilderOptionsTargets([]dist.Target{
{OS: "linux", Arch: "amd64"},
})).Return(nil)
})
it("creates a builder with the given targets", func() {
command.SetArgs([]string{
"some/builder",
"--target", "linux/amd64",
"--config", builderConfigPath,
})
h.AssertNil(t, command.Execute())
})
})
})
})
})
}
func EqCreateBuilderOptionsTargets(targets []dist.Target) gomock.Matcher {
return createbuilderOptionsMatcher{
description: fmt.Sprintf("Target=%v", targets),
equals: func(o client.CreateBuilderOptions) bool {
if len(o.Targets) != len(targets) {
return false
}
return reflect.DeepEqual(o.Targets, targets)
},
}
}
type createbuilderOptionsMatcher struct {
equals func(options client.CreateBuilderOptions) bool
description string
}
func (m createbuilderOptionsMatcher) Matches(x interface{}) bool {
if b, ok := x.(client.CreateBuilderOptions); ok {
return m.equals(b)
}
return false
}
func (m createbuilderOptionsMatcher) String() string {
return "is a CreateBuilderOption with " + m.description
}

View File

@ -8,6 +8,8 @@ import (
"github.com/buildpacks/pack/internal/config"
"github.com/buildpacks/pack/pkg/client"
"github.com/buildpacks/pack/pkg/logging"
bldr "github.com/buildpacks/pack/internal/builder"
)
type BuilderInspector interface {
@ -61,10 +63,15 @@ func inspectBuilder(
inspector BuilderInspector,
writerFactory writer.BuilderWriterFactory,
) error {
isTrusted, err := bldr.IsTrustedBuilder(cfg, imageName)
if err != nil {
return err
}
builderInfo := writer.SharedBuilderInfo{
Name: imageName,
IsDefault: imageName == cfg.DefaultBuilder,
Trusted: isTrustedBuilder(cfg, imageName),
Trusted: isTrusted,
}
localInfo, localErr := inspector.InspectBuilder(imageName, true, client.WithDetectionOrderDepth(flags.Depth))

View File

@ -254,8 +254,7 @@ func testBuilderInspectCommand(t *testing.T, when spec.G, it spec.S) {
assert.Matches(outBuf.String(), regexp.MustCompile(`Paketo Buildpacks:\s+'paketobuildpacks/builder-jammy-base'`))
assert.Matches(outBuf.String(), regexp.MustCompile(`Paketo Buildpacks:\s+'paketobuildpacks/builder-jammy-full'`))
assert.Matches(outBuf.String(), regexp.MustCompile(`Heroku:\s+'heroku/builder:20'`))
assert.Matches(outBuf.String(), regexp.MustCompile(`Heroku:\s+'heroku/builder:22'`))
assert.Matches(outBuf.String(), regexp.MustCompile(`Heroku:\s+'heroku/builder:24'`))
})
})

View File

@ -47,7 +47,7 @@ func testSuggestCommand(t *testing.T, when spec.G, it spec.S) {
})
it("displays descriptions from metadata", func() {
commands.WriteSuggestedBuilder(logger, mockClient, []bldr.SuggestedBuilder{{
commands.WriteSuggestedBuilder(logger, mockClient, []bldr.KnownBuilder{{
Vendor: "Builder",
Image: "gcr.io/some/builder:latest",
DefaultDescription: "Default description",
@ -65,7 +65,7 @@ func testSuggestCommand(t *testing.T, when spec.G, it spec.S) {
})
it("displays default descriptions", func() {
commands.WriteSuggestedBuilder(logger, mockClient, []bldr.SuggestedBuilder{{
commands.WriteSuggestedBuilder(logger, mockClient, []bldr.KnownBuilder{{
Vendor: "Builder",
Image: "gcr.io/some/builder:latest",
DefaultDescription: "Default description",
@ -81,7 +81,7 @@ func testSuggestCommand(t *testing.T, when spec.G, it spec.S) {
})
it("displays default descriptions", func() {
commands.WriteSuggestedBuilder(logger, mockClient, []bldr.SuggestedBuilder{{
commands.WriteSuggestedBuilder(logger, mockClient, []bldr.KnownBuilder{{
Vendor: "Builder",
Image: "gcr.io/some/builder:latest",
DefaultDescription: "Default description",

View File

@ -42,7 +42,7 @@ func BuildpackInspect(logger logging.Logger, cfg config.Config, client PackClien
return cmd
}
func buildpackInspect(logger logging.Logger, buildpackName, registryName string, flags BuildpackInspectFlags, cfg config.Config, pack PackClient) error {
func buildpackInspect(logger logging.Logger, buildpackName, registryName string, flags BuildpackInspectFlags, _ config.Config, pack PackClient) error {
logger.Infof("Inspecting buildpack: %s\n", style.Symbol(buildpackName))
inspectedBuildpacksOutput, err := inspectAllBuildpacks(

Some files were not shown because too many files have changed in this diff Show More