From c901ebaf8dd1273de415f8a32617d708c4256683 Mon Sep 17 00:00:00 2001 From: Julien Pivotto Date: Sun, 20 Mar 2022 15:08:32 +0100 Subject: [PATCH] ui/compress: Do not change git worktree (#10467) This change makes sure that the git worktree is not changed while compressing assets, making it better for local development. To achieve this, the compression script keeps the un-compressed assets and generates the go:embed directory when compressing the files. A .gitignore file has been added to ignore generated files. Signed-off-by: Julien Pivotto --- Makefile | 10 +--------- scripts/compress_assets.sh | 10 ++++++++-- web/ui/.gitignore | 2 ++ web/ui/assets_embed.go | 7 ++----- web/ui/embed.go.tmpl | 20 ++++++++++++++++++++ 5 files changed, 33 insertions(+), 16 deletions(-) create mode 100644 web/ui/.gitignore create mode 100644 web/ui/embed.go.tmpl diff --git a/Makefile b/Makefile index 2f2625fc88..1bf3fe35bf 100644 --- a/Makefile +++ b/Makefile @@ -57,11 +57,6 @@ assets-compress: @echo '>> compressing assets' scripts/compress_assets.sh -.PHONY: assets-decompress -assets-decompress: - @echo '>> decompressing assets' - scripts/compress_assets.sh -d - .PHONY: test # If we only want to only test go code we have to change the test target # which is called by all. @@ -84,7 +79,7 @@ tarball: npm_licenses common-tarball docker: npm_licenses common-docker .PHONY: build -build: assets assets-compress common-build assets-decompress +build: assets assets-compress common-build .PHONY: bench_tsdb bench_tsdb: $(PROMU) @@ -97,6 +92,3 @@ bench_tsdb: $(PROMU) @$(GO) tool pprof --alloc_space -svg $(PROMTOOL) $(TSDB_BENCHMARK_OUTPUT_DIR)/mem.prof > $(TSDB_BENCHMARK_OUTPUT_DIR)/memprof.alloc.svg @$(GO) tool pprof -svg $(PROMTOOL) $(TSDB_BENCHMARK_OUTPUT_DIR)/block.prof > $(TSDB_BENCHMARK_OUTPUT_DIR)/blockprof.svg @$(GO) tool pprof -svg $(PROMTOOL) $(TSDB_BENCHMARK_OUTPUT_DIR)/mutex.prof > $(TSDB_BENCHMARK_OUTPUT_DIR)/mutexprof.svg - -.PHONY: clean -clean: assets-decompress diff --git a/scripts/compress_assets.sh b/scripts/compress_assets.sh index 05d2540e3c..58486089e1 100755 --- a/scripts/compress_assets.sh +++ b/scripts/compress_assets.sh @@ -1,5 +1,11 @@ #!/usr/bin/env bash # -# [de]compress static assets +# compress static assets -find web/ui/static -type f -exec gzip "$@" {} \; +set -euo pipefail + +cd web/ui +cp embed.go.tmpl embed.go +find static -type f -name '*.gz' -delete +find static -type f -exec gzip -fk '{}' \; -print0 | xargs -0 -I % echo %.gz | xargs echo //go:embed >> embed.go +echo var EmbedFS embed.FS >> embed.go diff --git a/web/ui/.gitignore b/web/ui/.gitignore new file mode 100644 index 0000000000..4f04e905fb --- /dev/null +++ b/web/ui/.gitignore @@ -0,0 +1,2 @@ +*.gz +embed.go diff --git a/web/ui/assets_embed.go b/web/ui/assets_embed.go index 17186fd8f1..f10d5c0c23 100644 --- a/web/ui/assets_embed.go +++ b/web/ui/assets_embed.go @@ -17,12 +17,9 @@ package ui import ( - "embed" - "github.com/prometheus/common/assets" "net/http" + + "github.com/prometheus/common/assets" ) -//go:embed static -var EmbedFS embed.FS - var Assets = http.FS(assets.New(EmbedFS)) diff --git a/web/ui/embed.go.tmpl b/web/ui/embed.go.tmpl new file mode 100644 index 0000000000..1d7dbf5958 --- /dev/null +++ b/web/ui/embed.go.tmpl @@ -0,0 +1,20 @@ +// Copyright 2022 The Prometheus Authors +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +//go:build builtinassets +// +build builtinassets + +package ui + +import "embed" +