0
Fork 0
mirror of https://github.com/project-zot/zot.git synced 2024-12-23 22:27:35 -05:00
zot/pkg/extensions
Andrei Aaron c0aaca8ed1
feat(ui): package zui within zot binary (#1161)
(cherry picked from commit d557da0baba819b7cd7e6b5941528776e125ac6d)

build(ui): fix stacker builds


(cherry picked from commit ba25daf02b4a9bc7ee1cb6f84b7a6b096ca7d61f)

build(ui): various fixes

- Fix metrics endpoint
- Fix unit tests unit tests
- Make the ui build optional in the makefile
before the linter lint runs in the golangci-lint workflow
- Do not attempt to include UI routes if search is enabled
- Fix authorization for search endpoint



fix: use zot tag in ui make target


(cherry picked from commit 2a6882fa23f06b2d68c6c299773a6ff50bf90e78)

Signed-off-by: Ramkumar Chinchani <rchincha@cisco.com>
Signed-off-by: Catalin Hofnar <catalin.hofnar@gmail.com>
Signed-off-by: Andrei Aaron <aaaron@luxoft.com>
Co-authored-by: Ramkumar Chinchani <rchincha@cisco.com>
2023-02-10 14:52:54 -08:00
..
config feat(ui): package zui within zot binary (#1161) 2023-02-10 14:52:54 -08:00
lint refactor: Cleanup/simplify testcases in /pkg/extensions (#1116) 2023-01-19 08:54:05 -08:00
monitoring refactor: Cleanup/simplify testcases in /pkg/extensions (#1116) 2023-01-19 08:54:05 -08:00
scrub refactor: Cleanup/simplify testcases in /pkg/extensions (#1116) 2023-01-19 08:54:05 -08:00
search refactor(cve): improve CVE test time by mocking trivy (#1184) 2023-02-09 21:04:52 -08:00
sync refactor(cve): improve CVE test time by mocking trivy (#1184) 2023-02-09 21:04:52 -08:00
_zot.md use zot as an extension name, ext as a component and search as a module 2022-05-24 19:12:40 -07:00
extension-ui-disabled.go feat(ui): package zui within zot binary (#1161) 2023-02-10 14:52:54 -08:00
extension-ui.go feat(ui): package zui within zot binary (#1161) 2023-02-10 14:52:54 -08:00
extension_metrics.go feat(ui): package zui within zot binary (#1161) 2023-02-10 14:52:54 -08:00
extension_metrics_disabled.go feat(ui): package zui within zot binary (#1161) 2023-02-10 14:52:54 -08:00
extension_scrub.go add enable/disable option for scrub extension (#827) 2022-09-27 18:06:50 -07:00
extension_scrub_disabled.go initial design for task scheduler (#700) 2022-09-22 22:27:56 -07:00
extension_search.go feat(ui): package zui within zot binary (#1161) 2023-02-10 14:52:54 -08:00
extension_search_disabled.go refactor(cve): improve CVE test time by mocking trivy (#1184) 2023-02-09 21:04:52 -08:00
extension_sync.go feat(sync,s3): added s3 logic for ORAS and OCI artifacts (#985) 2022-11-14 22:21:49 -08:00
extension_sync_disabled.go feat(sync,s3): added s3 logic for ORAS and OCI artifacts (#985) 2022-11-14 22:21:49 -08:00
extensions_lint.go image level lint: enforce manifest mandatory annotations 2022-07-27 11:48:04 +03:00
extensions_lint_disabled.go image level lint: enforce manifest mandatory annotations 2022-07-27 11:48:04 +03:00
extensions_test.go refactor: Cleanup/simplify testcases in /pkg/extensions (#1116) 2023-01-19 08:54:05 -08:00
README.md build(tags): remove redundant build tag ui_base (#857) 2022-10-10 15:05:55 +03:00

Adding new extensions

As new requirements come and build time extensions need to be added, there are a few things that you have to make sure are present before commiting :

  • files that should be included in the binary only with a specific extension must contain the following syntax at the beginning of the file :

//go:build sync will be added automatically by the linter, so only the second line is mandatory .

NOTE: the third line in the example should be blank, otherwise the build tag would be just another comment.

//go:build sync
// +build sync

package extensions
...................
  • when adding a new tag, specify the new order in which multiple tags should be used (bottom of this page)

  • for each and every new file that contains functions (functionalities) specific to an extension, one should create a corresponding file that must contain the exact same functions, but no functionalities included. This file must begin with an "anti-tag" (e.g. // +build !sync) which will include this file in binaries that don't include this extension ( in this example, the file won't be used in binaries that include sync extension ). See extension-sync-disabled.go for an example.

  • when a new extension comes out, the developer should also write some blackbox tests, where a binary that contains the new extension should be tested in a real usage scenario. See test/blackbox folder for multiple extensions examples.

  • newly added blackbox tests should have targets in Makefile. You should also add them as Github Workflows, in .github/workflows/ecosystem-tools.yaml

  • with every new extension, you should modify the EXTENSIONS variable in Makefile by adding the new extension. The EXTENSIONS variable represents all extensions and is used in Make targets that require them all (e.g make test).

  • the available extensions that can be used at the moment are: sync, scrub, metrics, search . NOTE: When multiple extensions are used, they should be enlisted in the above presented order.