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