diff --git a/.github/workflows/cluster.yaml b/.github/workflows/cluster.yaml
index ee92a4f0..334404ba 100644
--- a/.github/workflows/cluster.yaml
+++ b/.github/workflows/cluster.yaml
@@ -114,7 +114,7 @@ jobs:
echo "{\"name\":\"foo\",\"value\":\"bar\"}" > config.json
echo "hello world" > artifact.txt
oras push --plain-http localhost:8080/hello-artifact:v2 \
- --manifest-config config.json:application/vnd.acme.rocket.config.v1+json \
+ --config config.json:application/vnd.acme.rocket.config.v1+json \
artifact.txt:text/plain -d -v
rm -f artifact.txt # first delete the file
oras pull --plain-http localhost:8080/hello-artifact:v2 -d -v
diff --git a/.github/workflows/codeql-analysis.yml b/.github/workflows/codeql-analysis.yml
index c6ffadfa..3c2aa3f0 100644
--- a/.github/workflows/codeql-analysis.yml
+++ b/.github/workflows/codeql-analysis.yml
@@ -71,11 +71,11 @@ jobs:
curl -Lo notation.tar.gz https://github.com/notaryproject/notation/releases/download/v0.7.1-alpha.1/notation_0.7.1-alpha.1_linux_amd64.tar.gz
sudo tar xvzf notation.tar.gz -C /usr/bin notation
# install oras
- curl -LO https://github.com/oras-project/oras/releases/download/v0.12.0/oras_0.12.0_linux_amd64.tar.gz
+ curl -LO https://github.com/oras-project/oras/releases/download/v0.14.0/oras_0.14.0_linux_amd64.tar.gz
mkdir -p oras-install/
- tar -zxf oras_0.12.0_*.tar.gz -C oras-install/
+ tar -zxf oras_0.14.0_*.tar.gz -C oras-install/
sudo mv oras-install/oras /usr/bin/
- rm -rf oras_0.12.0_*.tar.gz oras-install/
+ rm -rf oras_0.14.0_*.tar.gz oras-install/
# Initializes the CodeQL tools for scanning.
- name: Initialize CodeQL
diff --git a/Makefile b/Makefile
index 572d3069..26cd2646 100644
--- a/Makefile
+++ b/Makefile
@@ -71,7 +71,7 @@ exporter-minimal: modcheck build-metadata
env CGO_ENABLED=0 GOOS=$(OS) GOARCH=$(ARCH) go build -o bin/zxp-$(OS)-$(ARCH) -buildmode=pie -tags containers_image_openpgp -v -trimpath ./cmd/zxp
.PHONY: test
-test: check-skopeo $(TESTDATA) $(NOTATION)
+test: check-skopeo $(TESTDATA) $(NOTATION) $(ORAS)
go test -failfast -tags $(EXTENSIONS),containers_image_openpgp -v -trimpath -race -timeout 15m -cover -coverpkg ./... -coverprofile=coverage-extended.txt -covermode=atomic ./...
go test -failfast -tags containers_image_openpgp -v -trimpath -race -cover -coverpkg ./... -coverprofile=coverage-minimal.txt -covermode=atomic ./...
# development-mode unit tests possibly using failure injection
@@ -106,7 +106,7 @@ $(NOTATION):
$(ORAS):
mkdir -p $(TOOLSDIR)/bin
- curl -Lo oras.tar.gz https://github.com/oras-project/oras/releases/download/v0.13.0/oras_0.13.0_linux_amd64.tar.gz
+ curl -Lo oras.tar.gz https://github.com/oras-project/oras/releases/download/v0.14.0/oras_0.14.0_linux_amd64.tar.gz
tar xvzf oras.tar.gz -C $(TOOLSDIR)/bin oras
rm oras.tar.gz
diff --git a/demos/oras-push-pull.svg b/demos/oras-push-pull.svg
index b7fc54b0..46f0b2f8 100644
--- a/demos/oras-push-pull.svg
+++ b/demos/oras-push-pull.svg
@@ -1 +1 @@
-
\ No newline at end of file
+$0 podman launching zot$1 bash$podmanrun-p5000:5000ghcr.io/project-zot/zot-linux-amd64:latest{"level":"info","params":{"Version":"1.0.0-dev","GoVersion":"go1.17.5","Commit":"v1.3.8-rc3-38a110314ba3af67f970ed0ac909102edf7208d3","BinaryType":"extended","AccessControl":null,"Storage":{"Dedupe":true,"GC":true,"Commit":false,"GCDelay":3600000000000,"RootDirectory":"/var/lib/registry","StorageDriver":null,"SubPaths":null},"HTTP":{"Address":"0.0.0.0","Port":"5000","TLS":null,"Auth":null,"RawAccessControl":null,"Realm":"","AllowReadAccess":false,"ReadOnly":false,"Ratelimit":null},"Log":{"Level":"debug","Output":"","Audit":""},"Extensions":null},"goroutine":1,"caller":"zotregistry.io/zot/pkg/api/controller.go:103","time":"2022-04-11T07:37:48.892014192Z","message":"configurationsettings"}{"level":"info","cpus":8,"max.openfiles":1048576,"max.inotifywatches":"2147483647","goroutine":1,"caller":"zotregistry.io/zot/pkg/api/controller.go:91","time":"2022-04-11T07:37:48.892094614Z","message":"runtimeparams"}$echo"{\"name\":\"foo\",\"value\":\"bar\"}">config.json$echo"helloworld">artifact.txt$oraspushlocalhost:5000/hello-artifact:v2--configconfig.json:application/vnd.acme.rocket.config.v1+jsonartifact.txt:text/plain-vPreparingartifact.txtUploadinga948904f2f0fartifact.txtWARN[0000]referenceforunknowntype:text/plaindigest="sha256:a948904f2f0f479b8f8197694b30184b0d2ed1c1cd2a1ec0fb85d299a192a447"mediatype=text/plainsize=12WARN[0000]referenceforunknowntype:application/vnd.acme.rocket.config.v1+jsondigest="sha256:98df5c495df63132fb26e1066eb3bee4e4d72973da11b4e4e513ab11c15145b7"mediatype=application/vnd.acme.rocket.config.v1+jsonsize=29{"level":"error","error":"stat/var/lib/registry/hello-artifact/blobs/sha256/98df5c495df63132fb26e1066eb3bee4e4d72973da11b4e4e513ab11c15145b7:nosuchfileordirectory","blob":"/var/lib/registry/hello-artifact/blobs/sha256/98df5c495df63132fb26e1066eb3bee4e4d72973da11b4e4e513ab11c15145b7","goroutine":10,"caller":"zotregistry.io/zot/pkg/storage/storage_fs.go:1272","time":"2022-04-11T07:38:04.766663892Z","caller":"zotregistry.io/zot/pkg/storage/storage_fs.go:1272","message":"failedtostatblob"}r-Agent":["containerd/1.5.2+unknown"]},"goroutine":10,"caller":"zotregistry.io/zot/pkg/api/session.go:132","time":"2022-04-11T07:38:04.768438808Z","message":"HTTPAPI"}{"level":"info","module":"http","clientIP":"10.0.2.100:34730","method":"POST","path":"/v2/hello-artifact/blobs/uploads/","statusCode":202,"latency":"356.61µs","bodySize":0,"headers":{"Accept-Encoding":["gzip"],"Content-Length":["0"],"User-Agent":["containerd/1.5.2+unknown"]},"goroutine":9,"caller":"zotregistry.io/zot/pkg/api/session.go:132","time":"2022-04-11T07:38:04.768499823Z","message":"HTTPAPI"}{"level":"info","r.ContentLength":29,"goroutine":10,"caller":"zotregistry.io/zot/pkg/api/routes.go:1040","time":"2022-04-11T07:38:04.769321086Z","message":"DEBUG"}{"level":"debug","src":"/var/lib/registry/hello-artifact/.uploads/d3db30e7-11f5-4cc5-a751-69fcabf7a94d","dstDigest":"sha256:98df5c495df63132fb26e1066eb3bee4e4d72973da11b4e4e513ab11c15145b7","dst":"/var/lib/registry/hello-artifact/blobs/sha256/98df5c495df63132fb26e1066eb3bee4e4d72973da11b4e4e513ab11c15145b7","goroutine":10,"caller":"zotregistry.io/zot/pkg/storage/storage_fs.go:1146","time":"2022-04-11T07:38:04.769750654Z","caller":"zotregistry.io/zot/pkg/storage/storage_fs.go:1146","message":"dedupe:enter"}-11T07:38:04.769952794Z","message":"DEBUG"}statusCode":201,"latency":"2.907414ms","bodySize":0,"headers":{"Accept-Encoding":["gzip"],"Content-Length":["29"],"Content-Type":["application/octet-stream"],"User-Agent":["containerd/1.5.2+unknown"]},"goroutine":10,"caller":"zotregistry.io/zot/pkg/api/session.go:132","time":"2022-04-11T07:38:04.772190039Z","message":"HTTPAPI"}{"level":"debug","src":"/var/lib/registry/hello-artifact/.uploads/78052cee-439a-41b7-bfb9-2d3e5d1d939c","dstDigest":"sha256:a948904f2f0f479b8f8197694b30184b0d2ed1c1cd2a1ec0fb85d299a192a447","dst":"/var/lib/registry/hello-artifact/blobs/sha256/a948904f2f0f479b8f8197694b30184b0d2ed1c1cd2a1ec0fb85d299a192a447","goroutine":9,"caller":"zotregistry.io/zot/pkg/storage/storage_fs.go:1146","time":"2022-04-11T07:38:04.772430891Z","caller":"zotregistry.io/zot/pkg/storage/storage_fs.go:1146","message":"dedupe:enter"}/registry/hello-artifact/blobs/sha256/a948904f2f0f479b8f8197694b30184b0d2ed1c1cd2a1ec0fb85d299a192a447","goroutine":9,"caller":"zotregistry.io/zot/pkg/storage/storage_fs.go:1171","time":"2022-04-11T07:38:04.774915291Z","caller":"zotregistry.io/zot/pkg/storage/storage_fs.go:1171","message":"dedupe:rename"}{"level":"info","module":"http","clientIP":"10.0.2.100:34730","method":"PUT","path":"/v2/hello-artifact/blobs/uploads/78052cee-439a-41b7-bfb9-2d3e5d1d939c?digest=sha256%3Aa948904f2f0f479b8f8197694b30184b0d2ed1c1cd2a1ec0fb85d299a192a447","statusCode":201,"latency":"5.059851ms","bodySize":0,"headers":{"Accept-Encoding":["gzip"],"Content-Length":["12"],"Content-Type":["application/octet-stream"],"User-Agent":["containerd/1.5.2+unknown"]},"goroutine":9,"caller":"zotregistry.io/zot/pkg/api/session.go:132","time":"2022-04-11T07:38:04.774996974Z","message":"HTTPAPI"}*/*"],"User-Agent":["containerd/1.5.2+unknown"]},"goroutine":9,"caller":"zotregistry.io/zot/pkg/api/session.go:132","time":"2022-04-11T07:38:04.775775087Z","message":"HTTPAPI"}{"level":"debug","digest":"sha256:390a1274c8a3a088ae3bf425e5c0f2ce4f4c5d0d82f683b0d22bfe94d6a0dcdc","goroutine":9,"caller":"zotregistry.io/zot/pkg/storage/storage_fs.go:143","time":"2022-04-11T07:38:04.776313189Z","message":"GC:gotreference"}{"level":"debug","digest":"sha256:390a1274c8a3a088ae3bf425e5c0f2ce4f4c5d0d82f683b0d22bfe94d6a0dcdc","goroutier":"zotregistry.io/zot/pkg/storage/storage_fs.go:143","time":"2022-04-11T07:38:04.776346541Z","message":"GC:markingfromroot"}"}{"level":"debug","digest":"sha256:98df5c495df63132fb26e1066eb3bee4e4d72973da11b4e4e513ab11c15145b7","goroutine":9,"caller":"zotregistry.io/zot/pkg/storage/storage_fs.go:143","time":"2022-04-11T07:38:04.776488508Z","message":"->ws.recurse{"level":"debug","goroutine":9,"caller":"zotregistry.io/zot/pkg/storage/storage_fs.go:143","time":"2022-04-11T07:38:04.776527832Z","message":"skippingwalkintonon-parseablemedia-typeapplication/vnd.acme.rocket.config.v1+jsonofblobsha256:98df5c495df63132fb26e1066eb3bee4e4d72973da11b4e4e513ab11c15145b7"}er":"zotregistry.io/zot/pkg/storage/storage_fs.go:143","time":"2022-04-11T07:38:04.776556616Z","message":"<-ws.recurse{"level":"debug","digest":"sha256:a948904f2f0f479b8f8197694b30184b0d2ed1c1cd2a1ec0fb85d299a192a447","goroutine":9,"caller":"zotregistry.io/zot/pkg/storage/storage_fs.go:143","time":"2022-04-11T07:38:04.776586813Z","message":"->ws.recurse776646555Z","message":"skippingwalkintonon-parseablemedia-typetext/plainofblobsha256:a948904f2f0f479b8f8197694b30184b0d2ed1c1cd2a1ec0fb85d299a192a447"}er":"zotregistry.io/zot/pkg/storage/storage_fs.go:143","time":"2022-04-11T07:38:04.776689245Z","message":"<-ws.recurseer":"zotregistry.io/zot/pkg/storage/storage_fs.go:143","time":"2022-04-11T07:38:04.776731585Z","message":"<-ws.recurse776828377Z","message":"garbagecollected0blobs"}{"level":"info","module":"http","clientIP":"10.0.2.100:34730","method":"PUT","path":"/v2/hello-artifact/manifests/v2","statusCode":201,"latency":"827.346µs","bodySize":0,"headers":{"Accept-Encoding":["gzip"],"Content-Length":["375"],"Content-Type":["application/vnd.oci.image.manifest.v1+json"],"User-Agent":["containerd/1.5.2+unknown"]},"goroutine":9,"caller":"zotregistry.io/zot/pkg/api/session.go:132","time":"2022-04-11T07:38:04.77688299Z","message":"HTTPAPI"}Pushedlocalhost:5000/hello-artifact:v2Digest:sha256:390a1274c8a3a088ae3bf425e5c0f2ce4f4c5d0d82f683b0d22bfe94d6a0dcdc$rm-fartifact.txt$rm-fconfig.json$oraspulllocalhost:5000/hello-artifact:v2-v-av2+json,application/vnd.docker.distribution.manifest.list.v2+json,application/vnd.oci.image.manifest.v1+json,application/vnd.oci.image.index.v1+json,*/*"],"User-Agent":["containerd/1.5.2+unknown"]},"goroutine":81,"caller":"zotregistry.io/zot/pkg/api/session.go:132","time":"2022-04-11T07:38:20.748590044Z","message":"HTTPAPI"}{"level":"info","module":"http","clientIP":"10.0.2.100:34734","method":"GET","path":"/v2/hello-artifact/manifests/sha256:390a1274c8a3a088ae3bf425e5c0f2ce4f4c5d0d82f683b0d22bfe94d6a0dcdc","statusCode":200,"latency":"161.844µs","bodySize":375,"headers":{"Accept":["application/vnd.oci.image.manifest.v1+json,*/*"],"Accept-Encoding":["gzip"],"User-Agent":["containerd/1.5.2+unknown"]},"goroutine":81,"caller":"zotregistry.io/zot/pkg/api/session.go:132","time":"2022-04-11T07:38:20.7512057Z","message":"HTTPAPI"}WARN[0000]blobnoname:sha256:98df5c495df63132fb26e1066eb3bee4e4d72973da11b4e4e513ab11c15145b7{"level":"info","module":"http","clientIP":"10.0.2.100:34734","method":"GET","path":"/v2/hello-artifact/blobs/sha256:a948904f2f0f479b8f8197694b30184b0d2ed1c1cd2a1ec0fb85d299a192a447","statusCode":200,"latency":"136.075µs","bodySize":12,"headers":{"Accept":["text/plain,*/*"],"Accept-Encoding":["gzip"],"User-Agent":["containerd/1.5.2+unknown"]},"goroutine":81,"caller":"zotregistry.io/zot/pkg/api/session.go:132","time":"2022-04-11T07:38:20.752852425Z","message":"HTTPAPI"}Downloadeda948904f2f0fartifact.txtPulledlocalhost:5000/hello-artifact:v2$cat$catartifact.txthelloworldWARN[0000]referenceforunknowntype:text/plaindiges1066eb3bee4e4d72973da11b4e4e513ab{"level":"error","error":"stat/var/lib/registry/hello-artifact/blobs/sha256/a948904f2f0f479b8f8197694b30184b0d2ed1c1cd2a1ec0fb85d299a192a447:nosuchfileordirectory","blob":"/var/lib/registry/hello-artifact/blobs/sha256/a948904f2f0f479b8f8197694b30184b0d2ed1c1cd2a1ec0fb85d299a192a447","goroutine":9,"caller":"zotregistry.io/zot/pkg/storage/storage_fs.go:1272","time":"2022-04-11T07:38:04.766384808Z","caller":"zotregistry.io/zot/pkg/storage/storage_fs.go:1272{"level":"error","error":"cache:miss","7","goroutine":9,"caller":"zotregistry.io/zot/pkg/storage/storage_fs.go:1277","time":"2022-04-11T07:38:04.766479395Z","caller":"zotregistry.io/zot/pkg/storage/storage_fs.go:1277","message":"cache:notfound"}{"level":"error","error":"cache:miss","digest":"sha256:98df5c495df63132fb26e1066eb3bee4e4d72973da11b4e4e513ab11c15145b7","goroutine":10,"caller":"zotregistry.io/zot/pkg/storage/storage_fs.go:1277","time":"2022-04-11T07:38:04.766756957Z","caller":"zotregistry.io/zot/pkg/storage/storage_fs.go:1277","message":"cache:notfound"}8df5c495df63132fb26e1066eb3bee4e4d72973da11b4e4e513ab11c15145b7","statusCode":404,"latency":"1.248567ms","bodySize":407,"headers":{"Accept":["application/vnd.acme.rocket.config.v1+json,*/*"],"User-Agent":["containerd/1.5.2+unknown"]},"goroutine":10,"caller":"zotregistry.io/zot/pkg/api/session.go:132","time":"2022-04-11T07:38:04.767177127Z","message":"HTTPAPI"}{"level":"info","module":"http","clientIP":"10.0.2.100:34730","method":"HEAD","path":"/v2/hello-artifact/blobs/sha256:a948904f2f0f479b8f8197694b30184b0d2ed1c1cd2a1ec0fb85d299a192a447","statusCode":404,"latency":"1.072906ms","bodySize":407,"headers":{"Accept":["text/plain,*/*"],"User-Agent":["containerd/1.5.2+unknown"]},"goroutine":9,"caller":"zotregistry.io/zot/pkg/api/session.go:132","time":"2022-04-11T07:38:04.767214016Z","message":"HTTPAPI"}{"level":"info","module":"http","clientIP":"10.0.2.100:34732","method":"POST","path":"/v2/hello-artifact/blobs/uploads/","statusCode":202,"latency":"376.568µs","bodySize":0,"headers":{"Accept-Encoding":["gzip"],"Content-Length":["0"],"Usestorage/storage_fs.go:1146","time":"2022-04-11T07:38:04.76{"level":"info","r.ContentLength":12,"goroutine":9,"caller":"zotregistry.io/zot/pkg/api/routes.go:1040","time":"2022-04a256/a948904f2f0f479b8f8197694b30184b0d2ed1c1cd2a1ec0fb85d299a192a447","goroutine":9,"caller":"zotregistry.io/zot/pkg{"level":"debug","src":"/var/lib/registry/hello-artifact/.uploads/78052cee-439a-41b7-bfb9-2d3e5d1d939c","dst":"/var/libcaller":"zotregistry.io/zot/pkg/storage/storage_fs.go:117s{"level":"info","module":"http","clientIP":"10.0.2.100:34730","method":"HEAD","path":"/v2/hello-artifact/manifests/v2","statusCode":404,"latency":"115.918µs","bodySize":221,"headers":{"Accept":["application/vnd.oci.image.manifest.v1+json,{"level":"debug","digest":"sha25er":"zotregistry.io/zot/pkg/storage/storage_fs.go:143","time":"2022-04-11T07:38:04.776375205Z","message":"->ws.recurse{"level":"debug","name":"github.com/opencontainers/image-spec/specs-go::Versioned","v1path":"github.com/opencontainers/image-spec/spimage-spec/specs-go/v1","goroutine":9,"caller":"zotregistry.io/zot/pkg/storage/storage_fs.go:143","time":"2022-04-11T07:38:04.776448593Z","message":"detectedjumpoutsidepermittedpackages"}ha256:98df5c495df63132fb26e1066eb3bee4e4d72973da11b4e4e513ab11c1514{"level":"debug","goroutine":9,"caller":"zotregistry.io/zot/pkg/storage/storage_{"level":"debug","digest":"sha256:a948904f2f0f479b8f8197694b30184b0d2ed1c1c{"level":"info","module":"http","clientIP":"10.0.2.100:34734","method":"HEAD","path":"/v2/hello-artifact/manifests/v2","statusCode":200,"latency":"647.648µs","bodySize":0,"headers":{"Accept":["application/vnd.docker.distribution.manifest.Uploadinga948904f2f0fartifaceaders":{"Accept":["text/plain,*/*"],"Accept-Encoding":WARN[0000]referenceforunknowntype:text/plaindigest="sha256:a948904f2f0f479b8f8197694b301Pulledloca$oraspulllocalhost:5000/hell$c$ca$cata$catar$oraspulllocalhost:5000/hello-artiWARN[0000]blWARN[0000]blobno[detachedfrom51944.devto]
\ No newline at end of file
diff --git a/pkg/extensions/sync/sync_test.go b/pkg/extensions/sync/sync_test.go
index 88f8f1d7..dfdd3c67 100644
--- a/pkg/extensions/sync/sync_test.go
+++ b/pkg/extensions/sync/sync_test.go
@@ -290,7 +290,7 @@ func TestORAS(t *testing.T) {
srcURL := strings.Join([]string{sctlr.Server.Addr, "/oras-artifact:v2"}, "")
- cmd = exec.Command("oras", "push", "--plain-http", srcURL, "--manifest-config",
+ cmd = exec.Command("oras", "push", "--plain-http", srcURL, "--config",
"config.json:application/vnd.acme.rocket.config.v1+json", "artifact.txt:text/plain", "-d", "-v")
cmd.Dir = fileDir
diff --git a/test/blackbox/pushpull.bats b/test/blackbox/pushpull.bats
index aaeaa807..76eee6b0 100644
--- a/test/blackbox/pushpull.bats
+++ b/test/blackbox/pushpull.bats
@@ -106,7 +106,7 @@ function teardown_file() {
echo "{\"name\":\"foo\",\"value\":\"bar\"}" > config.json
echo "hello world" > artifact.txt
run oras push --plain-http 127.0.0.1:8080/hello-artifact:v2 \
- --manifest-config config.json:application/vnd.acme.rocket.config.v1+json artifact.txt:text/plain -d -v
+ --config config.json:application/vnd.acme.rocket.config.v1+json artifact.txt:text/plain -d -v
[ "$status" -eq 0 ]
rm -f artifact.txt
rm -f config.json