diff --git a/.drone.yml b/.drone.yml index 8066c75..19382fe 100644 --- a/.drone.yml +++ b/.drone.yml @@ -1,69 +1,19 @@ kind: pipeline type: docker -name: default +name: backend steps: - - name: format - image: golang:1.26 + - name: check + image: golang:1.27.0-bookworm + environment: + TEST_DATABASE_URL: postgres://postgres:postgres@postgres:5432/postgres?sslmode=disable commands: - - test -z "$(gofmt -l .)" + - go version + - go install github.com/golangci/golangci-lint/v2/cmd/golangci-lint@v2.14.0 + - make check - - name: test - image: golang:1.26 - commands: - - go test ./... - - - name: build - image: golang:1.26 - commands: - - GOOS=linux GOARCH=amd64 CGO_ENABLED=0 go build -a -ldflags '-extldflags "-static"' -o evening_detective_server ./cmd/evening_detective_server - - - name: scp - image: appleboy/drone-scp - settings: - host: - from_secret: server_ip - username: - from_secret: ssh_user - key: - from_secret: ssh_key - port: - from_secret: ssh_port - target: - - deploys/evening_detective_server - source: - - evening_detective_server - - docker-compose.yml - - Dockerfile - rm: true - when: - branch: - - master - event: - - push - - - name: deploy - image: appleboy/drone-ssh - settings: - host: - from_secret: server_ip - username: - from_secret: ssh_user - key: - from_secret: ssh_key - port: - from_secret: ssh_port - command_timeout: 10s - script: - - cd deploys/evening_detective_server - - docker-compose up -d --force-recreate - when: - branch: - - master - event: - - push - -trigger: - event: - - push - - pull_request +services: + - name: postgres + image: postgres:18 + environment: + POSTGRES_PASSWORD: postgres diff --git a/.golangci-version b/.golangci-version new file mode 100644 index 0000000..d4174a4 --- /dev/null +++ b/.golangci-version @@ -0,0 +1 @@ +v2.14.0 diff --git a/.golangci.yml b/.golangci.yml new file mode 100644 index 0000000..a787060 --- /dev/null +++ b/.golangci.yml @@ -0,0 +1,16 @@ +version: "2" + +linters: + default: none + enable: + - errcheck + - ineffassign + - revive + - staticcheck + - unused + exclusions: + generated: strict + +run: + relative-path-mode: gomod + timeout: 5m diff --git a/Makefile b/Makefile index 11d86df..53e1945 100644 --- a/Makefile +++ b/Makefile @@ -4,7 +4,22 @@ DEV_USER_USERNAME ?= dev DEV_USER_EMAIL ?= dev@example.com DEV_USER_PASSWORD ?= dev123456 -.PHONY: dev-user migrate-up +.PHONY: dev-user migrate-up fmt-check vet lint check + +fmt-check: + @set -e; files=$$(git ls-files -z '*.go' ':!proto/*.pb.go' | xargs -0 -r gofmt -l); if [ -n "$$files" ]; then printf '%s\n' "$$files"; exit 1; fi + +vet: + go vet ./... + +lint: + golangci-lint run ./... + +check: + $(MAKE) fmt-check + $(MAKE) vet + $(MAKE) lint + $(MAKE) test migrate-up: goose -dir ./migrations postgres "$(DATABASE_URL)" up