Stop packaging node_modules in release tarballs (#15273)
- Don't package node_modules in tarballs, they are not cross-platform anymore and npm cache should not be messed with directly. Instead, require an internet connection to rebuild the UI, which is not necessary in the general use case because prebuilt UI files are shipped in the public directory. - Simplify the fomantic build and make the target phony. We don't need anything more for something that is rarely ran. - Use regular tar again to build tarballs and add variable for excludes - Disable annoying npm update notifications Fixes: https://github.com/go-gitea/gitea/pull/14578 Fixes: https://github.com/go-gitea/gitea/pull/15256 Fixes: https://github.com/go-gitea/gitea/pull/15262 Co-authored-by: 6543 <6543@obermui.de>
This commit is contained in:
parent
7088bcf61b
commit
0991f9aa42
|
@ -501,7 +501,7 @@ steps:
|
||||||
pull: always
|
pull: always
|
||||||
image: techknowlogick/xgo:go-1.16.x
|
image: techknowlogick/xgo:go-1.16.x
|
||||||
commands:
|
commands:
|
||||||
- curl -sL https://deb.nodesource.com/setup_14.x | bash - && apt -y install nodejs bsdtar\|libarchive-tools
|
- curl -sL https://deb.nodesource.com/setup_14.x | bash - && apt-get install -y nodejs
|
||||||
- export PATH=$PATH:$GOPATH/bin
|
- export PATH=$PATH:$GOPATH/bin
|
||||||
- make release
|
- make release
|
||||||
environment:
|
environment:
|
||||||
|
@ -597,7 +597,7 @@ steps:
|
||||||
pull: always
|
pull: always
|
||||||
image: techknowlogick/xgo:go-1.16.x
|
image: techknowlogick/xgo:go-1.16.x
|
||||||
commands:
|
commands:
|
||||||
- curl -sL https://deb.nodesource.com/setup_14.x | bash - && apt-get install -y nodejs bsdtar\|libarchive-tools
|
- curl -sL https://deb.nodesource.com/setup_14.x | bash - && apt-get install -y nodejs
|
||||||
- export PATH=$PATH:$GOPATH/bin
|
- export PATH=$PATH:$GOPATH/bin
|
||||||
- make release
|
- make release
|
||||||
environment:
|
environment:
|
||||||
|
|
2
.gitignore
vendored
2
.gitignore
vendored
|
@ -81,7 +81,6 @@ coverage.all
|
||||||
/public/fonts
|
/public/fonts
|
||||||
/public/img/webpack
|
/public/img/webpack
|
||||||
/web_src/fomantic/node_modules
|
/web_src/fomantic/node_modules
|
||||||
/web_src/fomantic/semantic.json
|
|
||||||
/web_src/fomantic/build/*
|
/web_src/fomantic/build/*
|
||||||
!/web_src/fomantic/build/semantic.js
|
!/web_src/fomantic/build/semantic.js
|
||||||
!/web_src/fomantic/build/semantic.css
|
!/web_src/fomantic/build/semantic.css
|
||||||
|
@ -95,7 +94,6 @@ coverage.all
|
||||||
!/web_src/fomantic/build/themes/default/assets/fonts/outline-icons.woff2
|
!/web_src/fomantic/build/themes/default/assets/fonts/outline-icons.woff2
|
||||||
/VERSION
|
/VERSION
|
||||||
/.air
|
/.air
|
||||||
/.npm-cache
|
|
||||||
|
|
||||||
# Snapcraft
|
# Snapcraft
|
||||||
snap/.snapcraft/
|
snap/.snapcraft/
|
||||||
|
|
2
.npmrc
2
.npmrc
|
@ -1,5 +1,5 @@
|
||||||
audit=false
|
audit=false
|
||||||
fund=false
|
fund=false
|
||||||
|
update-notifier=false
|
||||||
package-lock=true
|
package-lock=true
|
||||||
save-exact=true
|
save-exact=true
|
||||||
cache=.npm-cache
|
|
||||||
|
|
63
Makefile
63
Makefile
|
@ -14,8 +14,6 @@ else
|
||||||
|
|
||||||
# This is the "normal" part of the Makefile
|
# This is the "normal" part of the Makefile
|
||||||
|
|
||||||
TAR := $(shell hash bsdtar > /dev/null 2>&1 && echo "bsdtar --no-xattrs" || echo "tar" )
|
|
||||||
|
|
||||||
DIST := dist
|
DIST := dist
|
||||||
DIST_DIRS := $(DIST)/binaries $(DIST)/release
|
DIST_DIRS := $(DIST)/binaries $(DIST)/release
|
||||||
IMPORT := code.gitea.io/gitea
|
IMPORT := code.gitea.io/gitea
|
||||||
|
@ -93,8 +91,6 @@ LINUX_ARCHS ?= linux/amd64,linux/386,linux/arm-5,linux/arm-6,linux/arm64
|
||||||
|
|
||||||
GO_PACKAGES ?= $(filter-out code.gitea.io/gitea/models/migrations code.gitea.io/gitea/integrations/migration-test code.gitea.io/gitea/integrations,$(shell $(GO) list -mod=vendor ./... | grep -v /vendor/))
|
GO_PACKAGES ?= $(filter-out code.gitea.io/gitea/models/migrations code.gitea.io/gitea/integrations/migration-test code.gitea.io/gitea/integrations,$(shell $(GO) list -mod=vendor ./... | grep -v /vendor/))
|
||||||
|
|
||||||
FOMANTIC_CONFIGS := semantic.json web_src/fomantic/theme.config.less web_src/fomantic/_site/globals/site.variables
|
|
||||||
FOMANTIC_DEST := web_src/fomantic/build/semantic.js web_src/fomantic/build/semantic.css
|
|
||||||
FOMANTIC_WORK_DIR := web_src/fomantic
|
FOMANTIC_WORK_DIR := web_src/fomantic
|
||||||
|
|
||||||
WEBPACK_SOURCES := $(shell find web_src/js web_src/less -type f)
|
WEBPACK_SOURCES := $(shell find web_src/js web_src/less -type f)
|
||||||
|
@ -115,6 +111,8 @@ TAGS_EVIDENCE := $(MAKE_EVIDENCE_DIR)/tags
|
||||||
|
|
||||||
TEST_TAGS ?= sqlite sqlite_unlock_notify
|
TEST_TAGS ?= sqlite sqlite_unlock_notify
|
||||||
|
|
||||||
|
TAR_EXCLUDES := .git data indexers queues log node_modules $(EXECUTABLE) $(FOMANTIC_WORK_DIR)/node_modules $(DIST) $(MAKE_EVIDENCE_DIR) $(AIR_TMP_DIR)
|
||||||
|
|
||||||
GO_DIRS := cmd integrations models modules routers build services vendor tools
|
GO_DIRS := cmd integrations models modules routers build services vendor tools
|
||||||
|
|
||||||
GO_SOURCES := $(wildcard *.go)
|
GO_SOURCES := $(wildcard *.go)
|
||||||
|
@ -589,7 +587,7 @@ install: $(wildcard *.go)
|
||||||
build: frontend backend
|
build: frontend backend
|
||||||
|
|
||||||
.PHONY: frontend
|
.PHONY: frontend
|
||||||
frontend: node-check $(WEBPACK_DEST)
|
frontend: $(WEBPACK_DEST)
|
||||||
|
|
||||||
.PHONY: backend
|
.PHONY: backend
|
||||||
backend: go-check generate $(EXECUTABLE)
|
backend: go-check generate $(EXECUTABLE)
|
||||||
|
@ -654,16 +652,16 @@ release-compress: | $(DIST_DIRS)
|
||||||
cd $(DIST)/release/; for file in `find . -type f -name "*"`; do echo "compressing $${file}" && gxz -k -9 $${file}; done;
|
cd $(DIST)/release/; for file in `find . -type f -name "*"`; do echo "compressing $${file}" && gxz -k -9 $${file}; done;
|
||||||
|
|
||||||
.PHONY: release-sources
|
.PHONY: release-sources
|
||||||
release-sources: | $(DIST_DIRS) npm-cache
|
release-sources: | $(DIST_DIRS)
|
||||||
echo $(VERSION) > $(STORED_VERSION_FILE)
|
echo $(VERSION) > $(STORED_VERSION_FILE)
|
||||||
$(eval EXCL := --exclude=$(shell [ ! "$(TAR)" = "tar" ] && echo "^" )./)
|
# bsdtar needs a ^ to prevent matching subdirectories
|
||||||
$(eval EXCL_RECURSIVE := --exclude=)
|
$(eval EXCL := --exclude=$(shell tar --help | grep -q bsdtar && echo "^")./)
|
||||||
$(TAR) $(EXCL)$(DIST) $(EXCL).git $(EXCL)$(MAKE_EVIDENCE_DIR) $(EXCL_RECURSIVE)node_modules $(EXCL)$(AIR_TMP_DIR) -czf $(DIST)/release/gitea-src-$(VERSION).tar.gz .
|
tar $(addprefix $(EXCL),$(TAR_EXCLUDES)) -czf $(DIST)/release/gitea-src-$(VERSION).tar.gz .
|
||||||
rm -f $(STORED_VERSION_FILE)
|
rm -f $(STORED_VERSION_FILE)
|
||||||
|
|
||||||
.PHONY: release-docs
|
.PHONY: release-docs
|
||||||
release-docs: | $(DIST_DIRS) docs
|
release-docs: | $(DIST_DIRS) docs
|
||||||
$(TAR) -czf $(DIST)/release/gitea-docs-$(VERSION).tar.gz -C ./docs/public .
|
tar -czf $(DIST)/release/gitea-docs-$(VERSION).tar.gz -C ./docs/public .
|
||||||
|
|
||||||
.PHONY: docs
|
.PHONY: docs
|
||||||
docs:
|
docs:
|
||||||
|
@ -676,25 +674,6 @@ node_modules: package-lock.json
|
||||||
npm install --no-save
|
npm install --no-save
|
||||||
@touch node_modules
|
@touch node_modules
|
||||||
|
|
||||||
.PHONY: npm-cache
|
|
||||||
npm-cache: .npm-cache $(FOMANTIC_WORK_DIR)/node_modules/fomantic-ui
|
|
||||||
|
|
||||||
.npm-cache: package-lock.json
|
|
||||||
rm -rf .npm-cache
|
|
||||||
$(eval ESBUILD_VERSION := $(shell node -p "require('./package-lock.json').dependencies.esbuild.version"))
|
|
||||||
npm config --userconfig=.npmrc set cache=.npm-cache
|
|
||||||
rm -rf node_modules && npm install --no-save
|
|
||||||
npm config --userconfig=$(FOMANTIC_WORK_DIR)/.npmrc set cache=../../.npm-cache
|
|
||||||
echo $(foreach build, darwin-64 $(foreach arch,arm arm64 32 64,linux-${arch}) $(foreach arch,32 64,windows-${arch}), esbuild-${build}@$(ESBUILD_VERSION)) | tr " " "\n" | xargs -n 1 -P 4 npm cache add
|
|
||||||
rm -rf $(FOMANTIC_WORK_DIR)/node_modules
|
|
||||||
@touch .npm-cache
|
|
||||||
|
|
||||||
.PHONY: npm-uncache
|
|
||||||
npm-uncache:
|
|
||||||
rm -rf .npm-cache
|
|
||||||
npm config --userconfig=$(FOMANTIC_WORK_DIR)/.npmrc rm cache
|
|
||||||
npm config --userconfig=.npmrc rm cache
|
|
||||||
|
|
||||||
.PHONY: npm-update
|
.PHONY: npm-update
|
||||||
npm-update: node-check | node_modules
|
npm-update: node-check | node_modules
|
||||||
npx updates -cu
|
npx updates -cu
|
||||||
|
@ -703,30 +682,18 @@ npm-update: node-check | node_modules
|
||||||
@touch node_modules
|
@touch node_modules
|
||||||
|
|
||||||
.PHONY: fomantic
|
.PHONY: fomantic
|
||||||
fomantic: $(FOMANTIC_DEST)
|
fomantic:
|
||||||
|
|
||||||
$(FOMANTIC_WORK_DIR)/node_modules/fomantic-ui:
|
|
||||||
ln -sf ../../semantic.json $(FOMANTIC_WORK_DIR)
|
|
||||||
cd $(FOMANTIC_WORK_DIR); \
|
|
||||||
rm -rf node_modules && mkdir node_modules && \
|
|
||||||
npm install fomantic-ui; \
|
|
||||||
rm -f semantic.json
|
|
||||||
@touch $(FOMANTIC_WORK_DIR)/node_modules
|
|
||||||
|
|
||||||
$(FOMANTIC_DEST): $(FOMANTIC_CONFIGS) $(FOMANTIC_WORK_DIR)/node_modules/fomantic-ui
|
|
||||||
ln -sf ../../semantic.json $(FOMANTIC_WORK_DIR)
|
|
||||||
rm -rf $(FOMANTIC_WORK_DIR)/build
|
rm -rf $(FOMANTIC_WORK_DIR)/build
|
||||||
cd $(FOMANTIC_WORK_DIR); \
|
cd $(FOMANTIC_WORK_DIR) && npm install --no-save
|
||||||
cp -f theme.config.less node_modules/fomantic-ui/src/theme.config; \
|
cp -f $(FOMANTIC_WORK_DIR)/theme.config.less $(FOMANTIC_WORK_DIR)/node_modules/fomantic-ui/src/theme.config
|
||||||
cp -rf _site node_modules/fomantic-ui/src/; \
|
cp -rf $(FOMANTIC_WORK_DIR)/_site $(FOMANTIC_WORK_DIR)/node_modules/fomantic-ui/src/
|
||||||
npx gulp -f node_modules/fomantic-ui/gulpfile.js build; \
|
cd $(FOMANTIC_WORK_DIR) && npx gulp -f node_modules/fomantic-ui/gulpfile.js build
|
||||||
rm -f semantic.json
|
|
||||||
@touch $(FOMANTIC_DEST)
|
|
||||||
|
|
||||||
.PHONY: webpack
|
.PHONY: webpack
|
||||||
webpack: $(WEBPACK_DEST)
|
webpack: $(WEBPACK_DEST)
|
||||||
|
|
||||||
$(WEBPACK_DEST): $(WEBPACK_SOURCES) $(WEBPACK_CONFIGS) package-lock.json | node_modules
|
$(WEBPACK_DEST): $(WEBPACK_SOURCES) $(WEBPACK_CONFIGS) package-lock.json
|
||||||
|
@$(MAKE) -s node-check node_modules
|
||||||
rm -rf $(WEBPACK_DEST_ENTRIES)
|
rm -rf $(WEBPACK_DEST_ENTRIES)
|
||||||
npx webpack
|
npx webpack
|
||||||
@touch $(WEBPACK_DEST)
|
@touch $(WEBPACK_DEST)
|
||||||
|
|
|
@ -77,13 +77,11 @@ or if sqlite support is required:
|
||||||
The `build` target is split into two sub-targets:
|
The `build` target is split into two sub-targets:
|
||||||
|
|
||||||
- `make backend` which requires [Go 1.13](https://golang.org/dl/) or greater.
|
- `make backend` which requires [Go 1.13](https://golang.org/dl/) or greater.
|
||||||
- `make frontend` which requires [Node.js 12.17](https://nodejs.org/en/download/) or greater.
|
- `make frontend` which requires [Node.js 12.17](https://nodejs.org/en/download/) or greater and Internet connectivity to download npm dependencies.
|
||||||
|
|
||||||
If pre-built frontend files are present it is possible to only build the backend:
|
When building from the official source tarballs which include pre-built frontend files, the `frontend` target will not be triggered, making it possible to build without Node.js and Internet connectivity.
|
||||||
|
|
||||||
TAGS="bindata" make backend
|
Parallelism (`make -j <num>`) is not supported.
|
||||||
|
|
||||||
Parallelism is not supported for these targets, so please don't include `-j <num>`.
|
|
||||||
|
|
||||||
More info: https://docs.gitea.io/en-us/install-from-source/
|
More info: https://docs.gitea.io/en-us/install-from-source/
|
||||||
|
|
||||||
|
|
|
@ -1,3 +1,5 @@
|
||||||
optional=false
|
audit=false
|
||||||
|
fund=false
|
||||||
|
update-notifier=false
|
||||||
package-lock=false
|
package-lock=false
|
||||||
cache=../../.npm-cache
|
optional=false
|
||||||
|
|
5
web_src/fomantic/package.json
Normal file
5
web_src/fomantic/package.json
Normal file
|
@ -0,0 +1,5 @@
|
||||||
|
{
|
||||||
|
"dependencies": {
|
||||||
|
"fomantic-ui": "2.8.7"
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in a new issue