diff options
Diffstat (limited to 'Makefile')
| -rw-r--r-- | Makefile | 85 |
1 files changed, 85 insertions, 0 deletions
diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..0f25c77 --- /dev/null +++ b/Makefile @@ -0,0 +1,85 @@ +registry ?= localhost +app_name := canvas +environment := development +tag := $(shell git rev-parse --short HEAD) +image_name := $(registry)/$(app_name) +podman_socket := $(shell podman machine inspect --format '{{.ConnectionInfo.PodmanSocket.Path}}') + + +# Build + +default: dev + +prepare: + @pnpm install + +bundle: prepare + @pnpm exec vite build + +build: bundle + @podman build -t $(image_name):$(tag) . + @podman tag $(image_name):$(tag) $(image_name):latest +ifneq ($(strip $(BRANCH)),) + @podman tag $(image_name):$(tag) $(image_name):$(shell echo $(BRANCH) | sed 's/\//-/g') +endif + +upload: build login + @podman push $(image_name):$(tag) + @podman push $(image_name):latest +ifneq ($(strip $(BRANCH)),) + @podman push $(image_name):$(shell echo $(BRANCH) | sed 's/\//-/g') +endif + +release: upload + @: + +# Run + +start: + @: + +dev: + @podman-compose up --build + +# Code Quality + +lint: prepare + @pnpm exec eslint . --fix + +format: lint + @pnpm exec prettier . --write + +test: prepare + @pnpx tsx --experimental-test-coverage --test + +ci: bundle test + @pnpm exec eslint . + @pnpm exec prettier . --check + +# Auditing + +sbom: + @trivy fs -q --format cyclonedx --scanners vuln,license --output extension-sbom.json extensions/lenislab + @trivy image -q --format cyclonedx --scanners vuln,license --output image-sbom.json --podman-host="$(podman_socket)" --image-src podman $(image_name):$(tag) + +vulnerabilities: sbom + @echo "** Extension **" + @sbom-utility vulnerability list -q --input-file extension-sbom.json + @echo "** Image **" + @sbom-utility vulnerability list -q --input-file image-sbom.json + +licenses: sbom + @echo "** Extension **" + @sbom-utility license list -q --input-file extension-sbom.json + @echo "** Image **" + @sbom-utility license list -q --input-file image-sbom.json + +# Tools + +generate_secret: + @openssl rand -base64 64 | tr -d '\n' + +login: + @podman login "${registry}" -u nologin --password "${PASSWORD}" + +.PHONY: default prepare build upload release start dev lint test ci generate_secret login format bundle |