Настроил тулинг

This commit is contained in:
2026-06-14 11:35:14 +03:00
parent e5dabebbd6
commit b1a4a846d6
5 changed files with 101 additions and 47 deletions
+23 -9
View File
@@ -1,13 +1,27 @@
# Минимальный конфиг golangci-lint (формат v1). # Конфиг golangci-lint (схема v2; устанавливается через `task setup`).
# При golangci-lint v2 может потребоваться адаптация схемы. # Базовый набор v2 (`default: standard`) — errcheck, govet, ineffassign,
run: # staticcheck, unused; дополнительно включаем misspell.
timeout: 5m version: "2"
linters: linters:
enable: enable:
- errcheck
- govet
- ineffassign
- staticcheck
- unused
- misspell - misspell
exclusions:
generated: lax
presets:
- comments
- common-false-positives
- legacy
- std-error-handling
paths:
- third_party$
- builtin$
- examples$
formatters:
exclusions:
generated: lax
paths:
- third_party$
- builtin$
- examples$
+8 -5
View File
@@ -54,11 +54,14 @@
## Команды ## Команды
- `make run` — локальный запуск (`go run ./cmd/jellybit --config ./config.toml`) Запуск через [Task](https://taskfile.dev) (`task --list` — полный список):
- `make build` — статический бинарь `linux/amd64` для сервера
- `make test` / `make lint` — тесты и golangci-lint - `task setup` — установка тулинга (golangci-lint + git-хуки lefthook)
- `make tidy``go mod tidy` - `task run` — локальный запуск (`go run ./cmd/jellybit --config ./config.toml`)
- `make image` — docker-образ из готового бинаря - `task build` — статический бинарь `linux/amd64` для сервера
- `task test` / `task lint` — тесты и golangci-lint
- `task tidy``go mod tidy`
- `task image` — docker-образ из готового бинаря
Module path — `git.vakhrushev.me/av/jellybit`. Go 1.26, `CGO_ENABLED=0`. Module path — `git.vakhrushev.me/av/jellybit`. Go 1.26, `CGO_ENABLED=0`.
Стек: `chi`, `sqlx` + `modernc.org/sqlite`, `goose` (миграции), Стек: `chi`, `sqlx` + `modernc.org/sqlite`, `goose` (миграции),
-28
View File
@@ -1,28 +0,0 @@
BINARY := jellybit
PKG := ./cmd/jellybit
.PHONY: build run test lint tidy image clean
# Статический бинарь для сервера (Intel N150 = linux/amd64).
build:
CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -trimpath -ldflags='-s -w' -o $(BINARY) $(PKG)
# Локальный запуск (нужен ./config.toml с db_path -> ./jellybit.db).
run:
go run $(PKG) --config ./config.toml
test:
go test ./...
lint:
golangci-lint run
tidy:
go mod tidy
# Образ из уже собранного бинаря (см. docs/adr docker-deploy).
image: build
docker build -t jellybit:dev .
clean:
rm -f $(BINARY)
+9 -5
View File
@@ -52,13 +52,17 @@ TOML, логи — структурированный JSON (`slog`). Подро
## Разработка ## Разработка
Нужны Go 1.26 и [Task](https://taskfile.dev). Полный список задач —
`task --list`.
```bash ```bash
cp config.example.toml config.toml # локально: db_path -> ./jellybit.db cp config.example.toml config.toml # локально: db_path -> ./jellybit.db
make tidy # go mod tidy task setup # golangci-lint + git-хуки lefthook
make run # go run ./cmd/jellybit --config ./config.toml task tidy # go mod tidy
make test lint # тесты и golangci-lint task run # go run ./cmd/jellybit --config ./config.toml
make build # статический бинарь (linux/amd64) для сервера task test lint # тесты и golangci-lint
make image # docker-образ из готового бинаря task build # статический бинарь (linux/amd64) для сервера
task image # docker-образ из готового бинаря
``` ```
## Доставка ## Доставка
+61
View File
@@ -0,0 +1,61 @@
# yaml-language-server: $schema=https://taskfile.dev/schema.json
#
# Запуск команд проекта через Task (https://taskfile.dev).
# Список задач: `task --list`.
version: '3'
vars:
BINARY: jellybit
PKG: ./cmd/jellybit
# Версия линтера для воспроизводимой установки (см. задачу setup).
GOLANGCI_VERSION: v2.12.2
tasks:
default:
desc: Список доступных задач
cmds:
- task --list
silent: true
run:
desc: 'Локальный запуск (нужен ./config.toml с db_path -> ./jellybit.db)'
cmds:
- go run {{.PKG}} --config ./config.toml
build:
desc: Статический бинарь linux/amd64 для сервера (Intel N150)
cmds:
- CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -trimpath -ldflags='-s -w' -o {{.BINARY}} {{.PKG}}
test:
desc: Прогон тестов
cmds:
- go test ./...
lint:
desc: Запуск golangci-lint
cmds:
- golangci-lint run
tidy:
desc: go mod tidy
cmds:
- go mod tidy
image:
desc: Docker-образ из готового бинаря (см. docs/adr docker-deploy)
deps: [build]
cmds:
- docker build -t jellybit:dev .
clean:
desc: Удалить собранный бинарь
cmds:
- rm -f {{.BINARY}}
setup:
desc: Установка инструментов разработки (линтер + git-хуки lefthook)
cmds:
- go install github.com/golangci/golangci-lint/v2/cmd/golangci-lint@{{.GOLANGCI_VERSION}}
- lefthook install