aboutsummaryrefslogtreecommitdiff
path: root/Makefile
diff options
context:
space:
mode:
Diffstat (limited to 'Makefile')
-rw-r--r--Makefile85
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