-
Notifications
You must be signed in to change notification settings - Fork 105
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
build(ui): the ui is now included in the zot binary by default (#1202)
Update the default value of the EXTENSIONS variable in the makefile. Also cleanup binary-ui and other make targets assuming the UI was not included by default. Enable the ui by default in the zot container image Swith back to using the distroless images, as c3 only has amd64 images. Fix updating security events in github (permission issue) Add an integration test for the UI extension Rename ui extension files to use _ instead of - feat(ui): upgrade to zui v2.0.0-rc3 Signed-off-by: Andrei Aaron <aaaron@luxoft.com>
- Loading branch information
Showing
7 changed files
with
190 additions
and
11 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,62 @@ | ||
build: | ||
from: | ||
type: docker | ||
url: docker://ghcr.io/project-zot/golang:1.19 | ||
binds: | ||
- ../. -> /zotcopy | ||
run: | | ||
export GO111MODULE=on | ||
export GOPATH='/go' | ||
export HOME='/root' | ||
export PATH='/go/bin:/usr/local/go/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin' | ||
mkdir -p /go/src/github.com/project-zot | ||
cd /go/src/github.com/project-zot | ||
git clone /zotcopy zot | ||
cd /go/src/github.com/project-zot/zot | ||
make COMMIT=${{COMMIT}} OS=${{OS}} ARCH=${{ARCH}} RELEASE_TAG=${{RELEASE_TAG}} clean binary${{EXT:}} | ||
cat > config.json << EOF | ||
{ | ||
"storage":{ | ||
"rootDirectory":"/var/lib/registry" | ||
}, | ||
"http":{ | ||
"address":"0.0.0.0", | ||
"port":"5000" | ||
}, | ||
"log":{ | ||
"level":"debug" | ||
} | ||
} | ||
EOF | ||
cat config.json | ||
mkdir -p /zotcopy/.build/${{REPO_NAME}} | ||
cd /zotcopy/.build/${{REPO_NAME}} | ||
mkdir -p binary/ cert/ config/ | ||
cp /go/src/github.com/project-zot/zot/bin/zot-${{OS}}-${{ARCH}}${{EXT:}} binary/ | ||
cp /go/src/github.com/project-zot/zot/config.json config/ | ||
cp /etc/ssl/certs/ca-certificates.crt cert/ | ||
build_only: true | ||
|
||
"${{REPO_NAME:zot}}": | ||
os: ${{OS}} | ||
arch: ${{ARCH}} | ||
from: | ||
type: docker | ||
url: docker://gcr.io/distroless/base:latest-${{ARCH}} | ||
overlay_dirs: | ||
- source: ../.build/${{REPO_NAME}}/binary | ||
dest: /usr/local/bin | ||
- source: ../.build/${{REPO_NAME}}/cert | ||
dest: /etc/ssl/certs | ||
- source: ../.build/${{REPO_NAME}}/config | ||
dest: /etc/zot | ||
entrypoint: | ||
- /usr/local/bin/zot-${{OS}}-${{ARCH}}${{EXT:}} | ||
volumes: | ||
- /var/lib/registry | ||
cmd: | ||
- serve | ||
- /etc/zot/config.json |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
File renamed without changes.
File renamed without changes.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,106 @@ | ||
//go:build search && ui | ||
// +build search,ui | ||
|
||
package extensions_test | ||
|
||
import ( | ||
"io" | ||
"net/http" | ||
"os" | ||
"testing" | ||
"time" | ||
|
||
. "github.com/smartystreets/goconvey/convey" | ||
"gopkg.in/resty.v1" | ||
|
||
"zotregistry.io/zot/pkg/api" | ||
"zotregistry.io/zot/pkg/api/config" | ||
extconf "zotregistry.io/zot/pkg/extensions/config" | ||
"zotregistry.io/zot/pkg/test" | ||
) | ||
|
||
func TestUIExtension(t *testing.T) { | ||
Convey("Verify zot with UI extension starts successfully", t, func() { | ||
conf := config.New() | ||
port := test.GetFreePort() | ||
baseURL := test.GetBaseURL(port) | ||
conf.HTTP.Port = port | ||
|
||
// we won't use the logging config feature as we want logs in both | ||
// stdout and a file | ||
logFile, err := os.CreateTemp(t.TempDir(), "zot-log*.txt") | ||
So(err, ShouldBeNil) | ||
logPath := logFile.Name() | ||
defer os.Remove(logPath) | ||
|
||
writers := io.MultiWriter(os.Stdout, logFile) | ||
|
||
defaultValue := true | ||
|
||
conf.Extensions = &extconf.ExtensionConfig{} | ||
conf.Extensions.UI = &extconf.UIConfig{ | ||
BaseConfig: extconf.BaseConfig{Enable: &defaultValue}, | ||
} | ||
conf.Storage.RootDirectory = t.TempDir() | ||
|
||
ctlr := api.NewController(conf) | ||
ctlr.Log.Logger = ctlr.Log.Output(writers) | ||
|
||
ctlrManager := test.NewControllerManager(ctlr) | ||
ctlrManager.StartAndWait(port) | ||
|
||
found, err := test.ReadLogFileAndSearchString(logPath, "\"UI\":{\"Enable\":true}", 2*time.Minute) | ||
So(found, ShouldBeTrue) | ||
So(err, ShouldBeNil) | ||
|
||
found, err = test.ReadLogFileAndSearchString(logPath, "setting up ui routes", 2*time.Minute) | ||
So(found, ShouldBeTrue) | ||
So(err, ShouldBeNil) | ||
|
||
cfg, layers, manifest, err := test.GetImageComponents(1) | ||
So(err, ShouldBeNil) | ||
|
||
repoName := "test-repo" | ||
tagName := "test-tag" | ||
|
||
// Upload a test image | ||
err = test.UploadImage( | ||
test.Image{ | ||
Config: cfg, | ||
Layers: layers, | ||
Manifest: manifest, | ||
Tag: tagName, | ||
}, baseURL, repoName) | ||
So(err, ShouldBeNil) | ||
|
||
resp, err := resty.R().Get(baseURL + "/home") | ||
So(err, ShouldBeNil) | ||
So(resp, ShouldNotBeNil) | ||
So(resp.StatusCode(), ShouldEqual, http.StatusOK) | ||
|
||
resp, err = resty.R().Get(baseURL + "/image/") | ||
So(err, ShouldBeNil) | ||
So(resp, ShouldNotBeNil) | ||
So(resp.StatusCode(), ShouldEqual, http.StatusOK) | ||
|
||
resp, err = resty.R().Get(baseURL + "/image/" + repoName) | ||
So(err, ShouldBeNil) | ||
So(resp, ShouldNotBeNil) | ||
So(resp.StatusCode(), ShouldEqual, http.StatusOK) | ||
|
||
resp, err = resty.R().Get(baseURL + "/image/" + repoName + "/tag/") | ||
So(err, ShouldBeNil) | ||
So(resp, ShouldNotBeNil) | ||
So(resp.StatusCode(), ShouldEqual, http.StatusOK) | ||
|
||
resp, err = resty.R().Get(baseURL + "/image/" + repoName + "/tag/" + tagName) | ||
So(err, ShouldBeNil) | ||
So(resp, ShouldNotBeNil) | ||
So(resp.StatusCode(), ShouldEqual, http.StatusOK) | ||
|
||
resp, err = resty.R().Get(baseURL + "/badurl/") | ||
So(err, ShouldBeNil) | ||
So(resp, ShouldNotBeNil) | ||
So(resp.StatusCode(), ShouldEqual, http.StatusNotFound) | ||
}) | ||
} |