Add 'make lint', restructure 'compliance' pipeline (#10861)
- Added 'lint', 'lint-frontend', 'lint-backend' targets - Added 'lint-frontend', 'lint-backend' ci steps and restructure the 'compliance' pipeline to have a clear separation between frontend and backend and use parallelism where possible. Also, the main build pipelines now depend on 'compliance' so they will skip if it fails. - Added dependencies on ci steps so they skip when 'compliance' fails - Moved JS linters to devDependencies - Removed deprecated 'js' and 'css' targets
This commit is contained in:
		
							parent
							
								
									3f0cb8b33a
								
							
						
					
					
						commit
						ad4026431b
					
				
					 4 changed files with 419 additions and 159 deletions
				
			
		
							
								
								
									
										55
									
								
								.drone.yml
									
									
									
									
									
								
							
							
						
						
									
										55
									
								
								.drone.yml
									
									
									
									
									
								
							|  | @ -11,13 +11,37 @@ workspace: | |||
|   path: src/code.gitea.io/gitea | ||||
| 
 | ||||
| steps: | ||||
|   - name: pre-build | ||||
|   - name: deps-frontend | ||||
|     pull: always | ||||
|     image: node:12 | ||||
|     commands: | ||||
|       - make node_modules | ||||
| 
 | ||||
|   - name: lint-frontend | ||||
|     pull: always | ||||
|     image: node:12 | ||||
|     commands: | ||||
|       - make lint-frontend | ||||
|     depends_on: [deps-frontend] | ||||
| 
 | ||||
|   - name: lint-backend | ||||
|     pull: always | ||||
|     image: golang:1.14 | ||||
|     commands: | ||||
|       - make lint-backend | ||||
|     environment: | ||||
|       GOPROXY: https://goproxy.cn # proxy.golang.org is blocked in China, this proxy is not | ||||
|       GOSUMDB: sum.golang.org | ||||
|       TAGS: bindata sqlite sqlite_unlock_notify | ||||
| 
 | ||||
|   - name: build-frontend | ||||
|     pull: always | ||||
|     image: node:10 # this step is kept at the lowest version of node that we support | ||||
|     commands: | ||||
|       - make webpack | ||||
|       - make frontend | ||||
|     depends_on: [lint-frontend] | ||||
| 
 | ||||
|   - name: build-without-gcc | ||||
|   - name: build-backend-no-gcc | ||||
|     pull: always | ||||
|     image: golang:1.12 # this step is kept as the lowest version of golang that we support | ||||
|     environment: | ||||
|  | @ -25,8 +49,9 @@ steps: | |||
|       GOPROXY: off | ||||
|     commands: | ||||
|       - go build -mod=vendor -o gitea_no_gcc # test if build succeeds without the sqlite tag | ||||
|     depends_on: [lint-backend] | ||||
| 
 | ||||
|   - name: build-linux-386 | ||||
|   - name: build-backend-386 | ||||
|     pull: always | ||||
|     image: golang:1.14 | ||||
|     environment: | ||||
|  | @ -36,16 +61,7 @@ steps: | |||
|       GOARCH: 386 | ||||
|     commands: | ||||
|       - go build -mod=vendor -o gitea_linux_386 # test if compatible with 32 bit | ||||
| 
 | ||||
|   - name: check | ||||
|     pull: always | ||||
|     image: golang:1.14 | ||||
|     commands: | ||||
|       - make clean golangci-lint revive swagger-check swagger-validate test-vendor | ||||
|     environment: | ||||
|       GOPROXY: https://goproxy.cn # proxy.golang.org is blocked in China, this proxy is not | ||||
|       GOSUMDB: sum.golang.org | ||||
|       TAGS: bindata sqlite sqlite_unlock_notify | ||||
|     depends_on: [lint-backend] | ||||
| 
 | ||||
| --- | ||||
| kind: pipeline | ||||
|  | @ -55,6 +71,9 @@ platform: | |||
|   os: linux | ||||
|   arch: amd64 | ||||
| 
 | ||||
| depends_on: | ||||
|   - compliance | ||||
| 
 | ||||
| workspace: | ||||
|   base: /go | ||||
|   path: src/code.gitea.io/gitea | ||||
|  | @ -209,8 +228,6 @@ steps: | |||
|         - push | ||||
|         - pull_request | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| --- | ||||
| kind: pipeline | ||||
| name: testing-arm64 | ||||
|  | @ -219,6 +236,9 @@ platform: | |||
|   os: linux | ||||
|   arch: arm64 | ||||
| 
 | ||||
| depends_on: | ||||
|   - compliance | ||||
| 
 | ||||
| workspace: | ||||
|   base: /go | ||||
|   path: src/code.gitea.io/gitea | ||||
|  | @ -537,6 +557,9 @@ platform: | |||
|   os: linux | ||||
|   arch: arm64 | ||||
| 
 | ||||
| depends_on: | ||||
|   - compliance | ||||
| 
 | ||||
| steps: | ||||
|   - name: build-docs | ||||
|     pull: always | ||||
|  |  | |||
							
								
								
									
										33
									
								
								Makefile
									
									
									
									
									
								
							
							
						
						
									
										33
									
								
								Makefile
									
									
									
									
									
								
							|  | @ -69,7 +69,7 @@ LDFLAGS := $(LDFLAGS) -X "main.MakeVersion=$(MAKE_VERSION)" -X "main.Version=$(G | |||
| GO_PACKAGES ?= $(filter-out code.gitea.io/gitea/integrations/migration-test,$(filter-out code.gitea.io/gitea/integrations,$(shell GO111MODULE=on $(GO) list -mod=vendor ./... | grep -v /vendor/))) | ||||
| 
 | ||||
| WEBPACK_SOURCES := $(shell find web_src/js web_src/less -type f) | ||||
| WEBPACK_CONFIGS := webpack.config.js .eslintrc .stylelintrc | ||||
| WEBPACK_CONFIGS := webpack.config.js | ||||
| WEBPACK_DEST := public/js/index.js public/css/index.css | ||||
| WEBPACK_DEST_DIRS := public/js public/css | ||||
| 
 | ||||
|  | @ -133,14 +133,18 @@ help: | |||
| 	@echo " - backend           build backend files" | ||||
| 	@echo " - clean             delete backend and integration files" | ||||
| 	@echo " - clean-all         delete backend, frontend and integration files" | ||||
| 	@echo " - lint              lint everything" | ||||
| 	@echo " - lint-frontend     lint frontend files" | ||||
| 	@echo " - lint-backend      lint backend 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" | ||||
| 	@echo " - misspell          check if a word is written wrong" | ||||
| 	@echo " - golangci-lint     run golangci-lint linter" | ||||
| 	@echo " - revive            run revive linter" | ||||
| 	@echo " - misspell          check for misspellings" | ||||
| 	@echo " - vet               examines Go source code and reports suspicious constructs" | ||||
| 	@echo " - test              run unit test" | ||||
| 	@echo " - test-sqlite       run integration test for sqlite" | ||||
|  | @ -259,6 +263,17 @@ fmt-check: | |||
| 		exit 1; \
 | ||||
| 	fi; | ||||
| 
 | ||||
| .PHONY: lint | ||||
| lint: lint-backend lint-frontend | ||||
| 
 | ||||
| .PHONY: lint-backend | ||||
| lint-backend: golangci-lint revive swagger-check swagger-validate test-vendor | ||||
| 
 | ||||
| .PHONY: lint-frontend | ||||
| lint-frontend: node_modules | ||||
| 	npx eslint web_src/js webpack.config.js | ||||
| 	npx stylelint web_src/less | ||||
| 
 | ||||
| .PHONY: test | ||||
| test: | ||||
| 	GO111MODULE=on $(GO) test $(GOTESTFLAGS) -mod=vendor -tags='sqlite sqlite_unlock_notify' $(GO_PACKAGES) | ||||
|  | @ -540,16 +555,6 @@ npm-update: node-check | node_modules | |||
| 	rm -rf node_modules package-lock.json | ||||
| 	npm install --package-lock | ||||
| 
 | ||||
| .PHONY: js | ||||
| js: | ||||
| 	@echo "'make js' is deprecated, please use 'make webpack'" | ||||
| 	$(MAKE) webpack | ||||
| 
 | ||||
| .PHONY: css | ||||
| css: | ||||
| 	@echo "'make css' is deprecated, please use 'make webpack'" | ||||
| 	$(MAKE) webpack | ||||
| 
 | ||||
| .PHONY: fomantic | ||||
| fomantic: $(FOMANTIC_DEST) | ||||
| 
 | ||||
|  | @ -564,8 +569,6 @@ $(FOMANTIC_DEST): $(FOMANTIC_CONFIGS) package-lock.json | node_modules | |||
| webpack: $(WEBPACK_DEST) | ||||
| 
 | ||||
| $(WEBPACK_DEST): $(WEBPACK_SOURCES) $(WEBPACK_CONFIGS) package-lock.json | node_modules | ||||
| 	npx eslint web_src/js webpack.config.js | ||||
| 	npx stylelint web_src/less | ||||
| 	npx webpack --hide-modules --display-entrypoints=false | ||||
| 	@touch $(WEBPACK_DEST) | ||||
| 
 | ||||
|  |  | |||
							
								
								
									
										480
									
								
								package-lock.json
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										480
									
								
								package-lock.json
									
									
									
										generated
									
									
									
								
							
										
											
												File diff suppressed because it is too large
												Load diff
											
										
									
								
							
							
								
								
									
										10
									
								
								package.json
									
									
									
									
									
								
							
							
						
						
									
										10
									
								
								package.json
									
									
									
									
									
								
							|  | @ -18,9 +18,6 @@ | |||
|     "css-loader": "3.4.2", | ||||
|     "cssnano": "4.1.10", | ||||
|     "dropzone": "5.7.0", | ||||
|     "eslint": "6.8.0", | ||||
|     "eslint-config-airbnb-base": "14.1.0", | ||||
|     "eslint-plugin-import": "2.20.1", | ||||
|     "fast-glob": "3.2.2", | ||||
|     "fomantic-ui": "2.8.4", | ||||
|     "highlight.js": "9.18.1", | ||||
|  | @ -35,8 +32,6 @@ | |||
|     "postcss-loader": "3.0.0", | ||||
|     "postcss-preset-env": "6.7.0", | ||||
|     "postcss-safe-parser": "4.0.2", | ||||
|     "stylelint": "13.2.1", | ||||
|     "stylelint-config-standard": "20.0.0", | ||||
|     "svg-sprite-loader": "4.2.1", | ||||
|     "svgo": "1.3.2", | ||||
|     "svgo-loader": "2.2.1", | ||||
|  | @ -52,6 +47,11 @@ | |||
|     "webpack-fix-style-only-entries": "0.4.0" | ||||
|   }, | ||||
|   "devDependencies": { | ||||
|     "eslint": "6.8.0", | ||||
|     "eslint-config-airbnb-base": "14.1.0", | ||||
|     "eslint-plugin-import": "2.20.1", | ||||
|     "stylelint": "13.2.1", | ||||
|     "stylelint-config-standard": "20.0.0", | ||||
|     "updates": "10.2.4" | ||||
|   }, | ||||
|   "browserslist": [ | ||||
|  |  | |||
		Loading…
	
		Reference in a new issue