summaryrefslogtreecommitdiffstats
path: root/Makefile
diff options
context:
space:
mode:
authorsilverwind <me@silverwind.io>2020-02-22 10:15:11 +0100
committerGitHub <noreply@github.com>2020-02-22 17:15:11 +0800
commit2ed9ead6dea29f9e006fa1831892c9c239f4bd70 (patch)
treec267fc66212a0ebce2a6f0b38ce8537c43903b14 /Makefile
parentc8d1c3812980573eae0a1ecd5e84c8b44457c3e4 (diff)
downloadgitea-2ed9ead6dea29f9e006fa1831892c9c239f4bd70.tar.gz
gitea-2ed9ead6dea29f9e006fa1831892c9c239f4bd70.zip
Add frontend/backend make targets, fix source release (#10325)
* Add frontend/backend make targets, fix source release - Add 'make backend' and 'make frontend' make targets which are used to build go and js/css/svg files respectively. - The 'backend' target can be invoked without requiring Node.js to be present on the system if pre-built frontend assets are present like in the release source tarballs. - Fix source releases missing 'dist' folders inside 'node_modules' which were erronously excluded from tar. - Store VERSION in file VERSION for the release tarballs and prefer that file over git-derived version. * fix release task * fix typo * fix another typo
Diffstat (limited to 'Makefile')
-rw-r--r--Makefile54
1 files changed, 36 insertions, 18 deletions
diff --git a/Makefile b/Makefile
index e95e9ccec8..da6acd8dc2 100644
--- a/Makefile
+++ b/Makefile
@@ -40,6 +40,8 @@ ifneq ($(RACE_ENABLED),)
GOTESTFLAGS ?= -race
endif
+STORED_VERSION_FILE := VERSION
+
ifneq ($(DRONE_TAG),)
VERSION ?= $(subst v,,$(DRONE_TAG))
GITEA_VERSION ?= $(VERSION)
@@ -49,7 +51,13 @@ else
else
VERSION ?= master
endif
- GITEA_VERSION ?= $(shell git describe --tags --always | sed 's/-/+/' | sed 's/^v//')
+
+ STORED_VERSION=$(shell cat $(STORED_VERSION_FILE) 2>/dev/null)
+ ifneq ($(STORED_VERSION),)
+ GITEA_VERSION ?= $(STORED_VERSION)
+ else
+ GITEA_VERSION ?= $(shell git describe --tags --always | sed 's/-/+/' | sed 's/^v//')
+ endif
endif
LDFLAGS := $(LDFLAGS) -X "main.MakeVersion=$(MAKE_VERSION)" -X "main.Version=$(GITEA_VERSION)" -X "main.Tags=$(TAGS)"
@@ -109,13 +117,15 @@ include docker/Makefile
help:
@echo "Make Routines:"
@echo " - \"\" equivalent to \"build\""
- @echo " - build creates the entire project"
- @echo " - clean delete integration files and build files but not css and js files"
- @echo " - clean-all delete all generated files (integration test, build, css and js files)"
- @echo " - webpack rebuild only js and css files"
- @echo " - fomantic rebuild fomantic-ui files"
- @echo " - generate run \"make fomantic webpack\" and \"go generate\""
- @echo " - fmt format the code"
+ @echo " - build build everything"
+ @echo " - frontend build frontend files"
+ @echo " - backend build backend files"
+ @echo " - clean delete backend and integration files"
+ @echo " - clean-all delete backend, frontend and integration files"
+ @echo " - webpack build webpack files"
+ @echo " - fomantic build fomantic files"
+ @echo " - generate run \"go generate\""
+ @echo " - fmt format the Go code"
@echo " - generate-swagger generate the swagger spec from code comments"
@echo " - swagger-validate check if the swagger spec is valid"
@echo " - revive run code linter revive"
@@ -179,10 +189,6 @@ ifneq "$(TAGS)" "$(shell cat $(TAGS_EVIDENCE) 2>/dev/null)"
TAGS_PREREQ := $(TAGS_EVIDENCE)
endif
-.PHONY: generate
-generate: fomantic webpack $(TAGS_PREREQ)
- GO111MODULE=on $(GO) generate -mod=vendor -tags '$(TAGS)' $(PACKAGES)
-
.PHONY: generate-swagger
generate-swagger:
$(SWAGGER) generate spec -o './$(SWAGGER_SPEC)'
@@ -441,13 +447,23 @@ install: $(wildcard *.go)
$(GO) install -v -tags '$(TAGS)' -ldflags '-s -w $(LDFLAGS)'
.PHONY: build
-build: go-check generate $(EXECUTABLE)
+build: frontend backend
+
+.PHONY: frontend
+frontend: node-check $(FOMANTIC_EVIDENCE) $(WEBPACK_DEST)
+
+.PHONY: backend
+backend: go-check generate $(EXECUTABLE)
+
+.PHONY: generate
+generate: $(TAGS_PREREQ)
+ GO111MODULE=on $(GO) generate -mod=vendor -tags '$(TAGS)' $(PACKAGES)
$(EXECUTABLE): $(GO_SOURCES) $(TAGS_PREREQ)
GO111MODULE=on $(GO) build -mod=vendor $(GOFLAGS) $(EXTRA_GOFLAGS) -tags '$(TAGS)' -ldflags '-s -w $(LDFLAGS)' -o $@
.PHONY: release
-release: generate release-windows release-linux release-darwin release-copy release-compress release-sources release-check
+release: frontend generate release-windows release-linux release-darwin release-copy release-compress release-sources release-check
$(DIST_DIRS):
mkdir -p $(DIST_DIRS)
@@ -498,8 +514,10 @@ release-compress: | $(DIST_DIRS)
cd $(DIST)/release/; for file in `find . -type f -name "*"`; do echo "compressing $${file}" && gxz -k -9 $${file}; done;
.PHONY: release-sources
-release-sources: | $(DIST_DIRS)
- tar cvzf $(DIST)/release/gitea-src-$(VERSION).tar.gz --exclude $(DIST) --exclude .git --exclude $(MAKE_EVIDENCE_DIR) .
+release-sources: | $(DIST_DIRS) node_modules
+ echo $(VERSION) > $(STORED_VERSION_FILE)
+ tar --exclude=./$(DIST) --exclude=./.git --exclude=./$(MAKE_EVIDENCE_DIR) --exclude=./node_modules/.cache -czf $(DIST)/release/gitea-src-$(VERSION).tar.gz .
+ rm -f $(STORED_VERSION_FILE)
node_modules: package-lock.json
npm install --no-save
@@ -522,7 +540,7 @@ css:
$(MAKE) webpack
.PHONY: fomantic
-fomantic: node-check $(FOMANTIC_EVIDENCE)
+fomantic: $(FOMANTIC_EVIDENCE)
$(FOMANTIC_EVIDENCE): semantic.json $(FOMANTIC_SOURCES) | node_modules
cp web_src/fomantic/theme.config.less node_modules/fomantic-ui/src/theme.config
@@ -531,7 +549,7 @@ $(FOMANTIC_EVIDENCE): semantic.json $(FOMANTIC_SOURCES) | node_modules
@mkdir -p $(MAKE_EVIDENCE_DIR) && touch $(FOMANTIC_EVIDENCE)
.PHONY: webpack
-webpack: node-check $(WEBPACK_DEST)
+webpack: $(WEBPACK_DEST)
$(WEBPACK_DEST): $(WEBPACK_SOURCES) $(WEBPACK_CONFIGS) | node_modules
npx eslint web_src/js webpack.config.js