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
|
path: src/code.gitea.io/gitea
|
||||||
|
|
||||||
steps:
|
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
|
pull: always
|
||||||
image: node:10 # this step is kept at the lowest version of node that we support
|
image: node:10 # this step is kept at the lowest version of node that we support
|
||||||
commands:
|
commands:
|
||||||
- make webpack
|
- make frontend
|
||||||
|
depends_on: [lint-frontend]
|
||||||
|
|
||||||
- name: build-without-gcc
|
- name: build-backend-no-gcc
|
||||||
pull: always
|
pull: always
|
||||||
image: golang:1.12 # this step is kept as the lowest version of golang that we support
|
image: golang:1.12 # this step is kept as the lowest version of golang that we support
|
||||||
environment:
|
environment:
|
||||||
|
@ -25,8 +49,9 @@ steps:
|
||||||
GOPROXY: off
|
GOPROXY: off
|
||||||
commands:
|
commands:
|
||||||
- go build -mod=vendor -o gitea_no_gcc # test if build succeeds without the sqlite tag
|
- 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
|
pull: always
|
||||||
image: golang:1.14
|
image: golang:1.14
|
||||||
environment:
|
environment:
|
||||||
|
@ -36,16 +61,7 @@ steps:
|
||||||
GOARCH: 386
|
GOARCH: 386
|
||||||
commands:
|
commands:
|
||||||
- go build -mod=vendor -o gitea_linux_386 # test if compatible with 32 bit
|
- go build -mod=vendor -o gitea_linux_386 # test if compatible with 32 bit
|
||||||
|
depends_on: [lint-backend]
|
||||||
- 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
|
|
||||||
|
|
||||||
---
|
---
|
||||||
kind: pipeline
|
kind: pipeline
|
||||||
|
@ -55,6 +71,9 @@ platform:
|
||||||
os: linux
|
os: linux
|
||||||
arch: amd64
|
arch: amd64
|
||||||
|
|
||||||
|
depends_on:
|
||||||
|
- compliance
|
||||||
|
|
||||||
workspace:
|
workspace:
|
||||||
base: /go
|
base: /go
|
||||||
path: src/code.gitea.io/gitea
|
path: src/code.gitea.io/gitea
|
||||||
|
@ -209,8 +228,6 @@ steps:
|
||||||
- push
|
- push
|
||||||
- pull_request
|
- pull_request
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
---
|
---
|
||||||
kind: pipeline
|
kind: pipeline
|
||||||
name: testing-arm64
|
name: testing-arm64
|
||||||
|
@ -219,6 +236,9 @@ platform:
|
||||||
os: linux
|
os: linux
|
||||||
arch: arm64
|
arch: arm64
|
||||||
|
|
||||||
|
depends_on:
|
||||||
|
- compliance
|
||||||
|
|
||||||
workspace:
|
workspace:
|
||||||
base: /go
|
base: /go
|
||||||
path: src/code.gitea.io/gitea
|
path: src/code.gitea.io/gitea
|
||||||
|
@ -537,6 +557,9 @@ platform:
|
||||||
os: linux
|
os: linux
|
||||||
arch: arm64
|
arch: arm64
|
||||||
|
|
||||||
|
depends_on:
|
||||||
|
- compliance
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
- name: build-docs
|
- name: build-docs
|
||||||
pull: always
|
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/)))
|
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_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 := public/js/index.js public/css/index.css
|
||||||
WEBPACK_DEST_DIRS := public/js public/css
|
WEBPACK_DEST_DIRS := public/js public/css
|
||||||
|
|
||||||
|
@ -133,14 +133,18 @@ help:
|
||||||
@echo " - backend build backend files"
|
@echo " - backend build backend files"
|
||||||
@echo " - clean delete backend and integration files"
|
@echo " - clean delete backend and integration files"
|
||||||
@echo " - clean-all delete backend, frontend 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 " - webpack build webpack files"
|
||||||
@echo " - fomantic build fomantic files"
|
@echo " - fomantic build fomantic files"
|
||||||
@echo " - generate run \"go generate\""
|
@echo " - generate run \"go generate\""
|
||||||
@echo " - fmt format the Go code"
|
@echo " - fmt format the Go code"
|
||||||
@echo " - generate-swagger generate the swagger spec from code comments"
|
@echo " - generate-swagger generate the swagger spec from code comments"
|
||||||
@echo " - swagger-validate check if the swagger spec is valid"
|
@echo " - swagger-validate check if the swagger spec is valid"
|
||||||
@echo " - revive run code linter revive"
|
@echo " - golangci-lint run golangci-lint linter"
|
||||||
@echo " - misspell check if a word is written wrong"
|
@echo " - revive run revive linter"
|
||||||
|
@echo " - misspell check for misspellings"
|
||||||
@echo " - vet examines Go source code and reports suspicious constructs"
|
@echo " - vet examines Go source code and reports suspicious constructs"
|
||||||
@echo " - test run unit test"
|
@echo " - test run unit test"
|
||||||
@echo " - test-sqlite run integration test for sqlite"
|
@echo " - test-sqlite run integration test for sqlite"
|
||||||
|
@ -259,6 +263,17 @@ fmt-check:
|
||||||
exit 1; \
|
exit 1; \
|
||||||
fi;
|
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
|
.PHONY: test
|
||||||
test:
|
test:
|
||||||
GO111MODULE=on $(GO) test $(GOTESTFLAGS) -mod=vendor -tags='sqlite sqlite_unlock_notify' $(GO_PACKAGES)
|
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
|
rm -rf node_modules package-lock.json
|
||||||
npm install --package-lock
|
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
|
.PHONY: fomantic
|
||||||
fomantic: $(FOMANTIC_DEST)
|
fomantic: $(FOMANTIC_DEST)
|
||||||
|
|
||||||
|
@ -564,8 +569,6 @@ $(FOMANTIC_DEST): $(FOMANTIC_CONFIGS) package-lock.json | node_modules
|
||||||
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 | node_modules
|
||||||
npx eslint web_src/js webpack.config.js
|
|
||||||
npx stylelint web_src/less
|
|
||||||
npx webpack --hide-modules --display-entrypoints=false
|
npx webpack --hide-modules --display-entrypoints=false
|
||||||
@touch $(WEBPACK_DEST)
|
@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",
|
"css-loader": "3.4.2",
|
||||||
"cssnano": "4.1.10",
|
"cssnano": "4.1.10",
|
||||||
"dropzone": "5.7.0",
|
"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",
|
"fast-glob": "3.2.2",
|
||||||
"fomantic-ui": "2.8.4",
|
"fomantic-ui": "2.8.4",
|
||||||
"highlight.js": "9.18.1",
|
"highlight.js": "9.18.1",
|
||||||
|
@ -35,8 +32,6 @@
|
||||||
"postcss-loader": "3.0.0",
|
"postcss-loader": "3.0.0",
|
||||||
"postcss-preset-env": "6.7.0",
|
"postcss-preset-env": "6.7.0",
|
||||||
"postcss-safe-parser": "4.0.2",
|
"postcss-safe-parser": "4.0.2",
|
||||||
"stylelint": "13.2.1",
|
|
||||||
"stylelint-config-standard": "20.0.0",
|
|
||||||
"svg-sprite-loader": "4.2.1",
|
"svg-sprite-loader": "4.2.1",
|
||||||
"svgo": "1.3.2",
|
"svgo": "1.3.2",
|
||||||
"svgo-loader": "2.2.1",
|
"svgo-loader": "2.2.1",
|
||||||
|
@ -52,6 +47,11 @@
|
||||||
"webpack-fix-style-only-entries": "0.4.0"
|
"webpack-fix-style-only-entries": "0.4.0"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"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"
|
"updates": "10.2.4"
|
||||||
},
|
},
|
||||||
"browserslist": [
|
"browserslist": [
|
||||||
|
|
Reference in a new issue