github oras-project/oras v1.2.0-beta.1

pre-release3 months ago

New Features

  • Introduce brand-new default terminal experience
    • Show live progress for the following commands:
      • oras copy
      • oras pull
      • oras push
      • oras attach
      • oras blob fetch
      • oras blob push
    • The new terminal experience can be turned off via the flag --no-tty
  • Support deletion of manifests and blobs in OCI image layout

Experimental Features

  • BREAKING CHANGE oras is compliant with OCI image-spec v1.1.0-rc6 and distribution-spec v1.1.0-rc4
    • Registries supporting Referrers API of older version of distribution-spec will fall back to Referrers tag schema, causing unexpected results of oras attach and oras discover commands
    • Known registries supporting the distribution-spec v1.1.0-rc4:
  • Re-purpose the flag --recursive of oras cp from extended copy to copy an artifact or a multi-arch image and their referrer artifacts
  • Introduce oras resolve to get the digest of an artifact
  • Introduce output control by specifying --format to oras push and oras attach
    • Examples:
      • --format json to print operation result as a JSON object
      • --format "{{ .Digest }}" to print the digest of the newly pushed manifest using Go template
    • Known issue: pushing with multiple tags output unexcepted results and will be fixed in future versions

Bug Fixes

  • Fix #1096: Mixed request number in the debug mode
  • Fix #1106: Flag --plain-http=false does not work for local registries
  • Fix #1129: oras cp -r fails if index has a child manifest as subject

Other Changes

  • Enhance troubleshooting experience with improved error messages
  • Improve performance
    • Reduce authentication request count fororas copy, oras manifest delete, and oras blob delete
    • Support blob mounting across repositories in the same registry for oras copy
  • Update dependencies
  • Update to Golang 1.21.6
  • Minor security enhancements

Detailed Commits

  • bump: tag and release ORAS CLI v1.1.0 by @qweeah in #1103
  • fix: allow HTTPS for localhost by @qweeah in #1107
  • perf: optimize request count for manifest and blob deletion by @qweeah in #1109
  • revert: "perf: optimize request count for manifest and blob deletion" by @qweeah in #1115
  • perf: optimize request count for manifest and blob deletion by @qweeah in #1116
  • chore: fix typo by @testwill in #1121
  • feat: support copying referrers for multi-arch images by @qweeah in #1122
  • build(deps): bump golang.org/x/term from 0.11.0 to 0.12.0 by @dependabot in #1123
  • build(deps): bump github.com/onsi/ginkgo/v2 from 2.12.0 to 2.12.1 in /test/e2e by @dependabot in #1126
  • fix: remove root from virtual referrers by @shizhMSFT in #1130
  • build: release ppc64le/riscv64 and improve reproducibility by @katexochen in #1118
  • build(deps): bump golang.org/x/sync from 0.3.0 to 0.4.0 by @dependabot in #1137
  • build(deps): bump golang.org/x/term from 0.12.0 to 0.13.0 by @dependabot in #1136
  • build(deps): bump github.com/onsi/gomega from 1.27.10 to 1.28.0 in /test/e2e by @dependabot in #1132
  • build(deps): bump github.com/onsi/ginkgo/v2 from 2.12.1 to 2.13.0 in /test/e2e by @dependabot in #1140
  • build(deps): bump golang.org/x/net from 0.14.0 to 0.17.0 in /test/e2e by @dependabot in #1141
  • feat: support progressed output in blob push and blob get by @qweeah in #1113
  • perf: reduce auth request count for oras cp by @qweeah in #1142
  • fix: resolve duplicated debug log for oras cp by @qweeah in #1139
  • build(deps): bump golang.org/x/net from 0.14.0 to 0.17.0 in /test/e2e by @dependabot in #1144
  • build(deps): bump github.com/oras-project/oras-credentials-go from 0.2.0 to 0.3.1 by @dependabot in #1145
  • build(deps): bump github.com/onsi/gomega from 1.28.0 to 1.28.1 in /test/e2e by @dependabot in #1147
  • feat: support progress output for attach, push and copy commands by @qweeah in #1138
  • build(deps): bump github.com/onsi/gomega from 1.28.1 to 1.29.0 in /test/e2e by @dependabot in #1153
  • build(deps): upgrade image-spec to 1.1.0-rc5 and oras-go to the latest by @shizhMSFT in #1154
  • chore: add reference details to registry errors by @sajayantony in #1152
  • feat: support progress output in pull by @qweeah in #1148
  • feat: remove empty artifact CLI message and show hints for pulling OCI image layout by @sajayantony in #1157
  • fix: should not print copy hint for manifest in verbose mode by @qweeah in #1165
  • feat: make --debug imply --no-tty by @qweeah in #1162
  • fix: avoid copy suggestion when only config is skipped by @sajayantony in #1164
  • fix: resolve regression made in #1164 by @qweeah in #1170
  • fix: atomic bool for layer skipped during pulling by @qweeah in #1168
  • build(deps): bump golang.org/x/sync from 0.4.0 to 0.5.0 by @dependabot in #1172
  • fix: update error message for repo ls by @sajayantony in #1169
  • test(e2e): add specs to hint for pulling unnamed layers by @qweeah in #1174
  • build(deps): bump github.com/spf13/cobra from 1.7.0 to 1.8.0 by @dependabot in #1171
  • fix: avoid overflow in progress bar percentage by @qweeah in #1178
  • chore(ux): add newline to make TTY output copy friendly by @qweeah in #1180
  • build(deps): bump golang.org/x/term from 0.13.0 to 0.14.0 by @dependabot in #1181
  • build(deps): bump github.com/onsi/gomega from 1.29.0 to 1.30.0 in /test/e2e by @dependabot in #1182
  • test(e2e): fix a false positive test for blob get by @qweeah in #1184
  • chore: make error of non-existed source OCI layout more readable by @qweeah in #1176
  • build(deps): bump github.com/onsi/ginkgo/v2 from 2.13.0 to 2.13.1 in /test/e2e by @dependabot in #1185
  • feat: add resolve command by @sajayantony in #1187
  • test(e2e): add test for resolve command by @qweeah in #1188
  • build(deps): bump golang.org/x/term from 0.14.0 to 0.15.0 by @dependabot in #1194
  • doc: add example for attach with custom layer media type by @qweeah in #1195
  • build(deps): bump github.com/onsi/ginkgo/v2 from 2.13.1 to 2.13.2 in /test/e2e by @dependabot in #1196
  • feat: scrub Set-Cookie header in debug logs by @qweeah in #1190
  • feat: support manifest and blob deletion for OCI layout by @qweeah in #1197
  • build(ci): add workflow for releasing main image by @kranurag7 in #1191
  • build(ci): merge tag and main ghcr build release file by @qweeah in #1205
  • test(e2e): add spec to cover legacy docker config file by @qweeah in #1206
  • feat: improve returned error for invalid arguments by @qweeah in #1201
  • fix: bug in pushing with multiple tags by @qweeah in #1209
  • chore(ux): improve error message for oras tag list by @qweeah in #1219
  • build(ci): enforce coverage check by @qweeah in #1220
  • chore(ux): improve error output for unknown spec flag by @qweeah in #1221
  • build(deps): bump oras-go/v2 to main branch by @qweeah in #1223
  • fix: resolve error in help doc of distribution spec flag by @qweeah in #1229
  • build(ci): make coverage upload and calculation mandatory by @qweeah in #1230
  • build(deps): bump golang.org/x/sync from 0.5.0 to 0.6.0 by @dependabot in #1231
  • build(deps): bump golang.org/x/term from 0.15.0 to 0.16.0 by @dependabot in #1232
  • build(deps): bump github.com/onsi/ginkgo/v2 from 2.13.2 to 2.14.0 in /test/e2e by @dependabot in #1240
  • chore(ux): show registry error and hint for dockehub by @qweeah in #1222
  • chore(ux): improve error message for oras manifest fetch by @wangxiaoxuan273 in #1234
  • build(deps): bump github.com/onsi/gomega from 1.30.0 to 1.31.0 in /test/e2e by @dependabot in #1244
  • build(deps): bump github.com/onsi/ginkgo/v2 from 2.14.0 to 2.15.0 in /test/e2e by @dependabot in #1245
  • chore(ux): improve error message for oras manifest push by @wangxiaoxuan273 in #1241
  • chore(ux): improve error message for bad annotation format by @wangxiaoxuan273 in #1243
  • chore(ux): give recommendation when empty creds found during basic auth by @qweeah in #1235
  • build(deps): bump github.com/onsi/gomega from 1.31.0 to 1.31.1 in /test/e2e by @dependabot in #1250
  • feat: support mounting blobs during copy by @qweeah in #1242
  • build(ci): release artifacts for freebsd by @kranurag7 in #1192
  • chore: improve error message when attaching with no file or annotation by @wangxiaoxuan273 in #1253
  • chore: improve error message if the provided annotation file is invalid by @wangxiaoxuan273 in #1255
  • build(deps): bump oras.land/oras-go/v2 from 2.3.1-0.20231026053328-062ed0e058f8 to 2.4.0 in /test/e2e by @dependabot in #1259
  • build(deps): bump oras.land/oras-go/v2 from 2.3.1-0.20240117093352-d8783fe25d71 to 2.4.0 by @dependabot in #1260
  • chore(gpg): update qweeah's key by @qweeah in #1261
  • chore(ux): improve error message for invalid registry and file reference by @qweeah in #1258
  • chore(gpg): remove expired GPG key by @qweeah in #1262
  • bump: update golang to 1.21.6 by @qweeah in #1263
  • fix: remove unwanted newline in attach error by @qweeah in #1265
  • chore(ci): update patch coverage check to 80% by @qweeah in #1264
  • feat: support formatted output in oras attach and push by @qweeah in #1237

New Contributors

Full Changelog: v1.1.0...v1.2.0-beta.1

Notes

This release was signed with 46D3 369B 393F 6F82 71FD 1CE8 F86E C70D 2B0C 404F(@qweeah's GPG key) which can be found here.

Don't miss a new oras release

NewReleases is sending notifications on new releases.