Настроил тулинг
This commit is contained in:
+23
-9
@@ -1,13 +1,27 @@
|
||||
# Минимальный конфиг golangci-lint (формат v1).
|
||||
# При golangci-lint v2 может потребоваться адаптация схемы.
|
||||
run:
|
||||
timeout: 5m
|
||||
# Конфиг golangci-lint (схема v2; устанавливается через `task setup`).
|
||||
# Базовый набор v2 (`default: standard`) — errcheck, govet, ineffassign,
|
||||
# staticcheck, unused; дополнительно включаем misspell.
|
||||
version: "2"
|
||||
|
||||
linters:
|
||||
enable:
|
||||
- errcheck
|
||||
- govet
|
||||
- ineffassign
|
||||
- staticcheck
|
||||
- unused
|
||||
- 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$
|
||||
|
||||
@@ -54,11 +54,14 @@
|
||||
|
||||
## Команды
|
||||
|
||||
- `make run` — локальный запуск (`go run ./cmd/jellybit --config ./config.toml`)
|
||||
- `make build` — статический бинарь `linux/amd64` для сервера
|
||||
- `make test` / `make lint` — тесты и golangci-lint
|
||||
- `make tidy` — `go mod tidy`
|
||||
- `make image` — docker-образ из готового бинаря
|
||||
Запуск через [Task](https://taskfile.dev) (`task --list` — полный список):
|
||||
|
||||
- `task setup` — установка тулинга (golangci-lint + git-хуки lefthook)
|
||||
- `task run` — локальный запуск (`go run ./cmd/jellybit --config ./config.toml`)
|
||||
- `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`.
|
||||
Стек: `chi`, `sqlx` + `modernc.org/sqlite`, `goose` (миграции),
|
||||
|
||||
@@ -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)
|
||||
@@ -52,13 +52,17 @@ TOML, логи — структурированный JSON (`slog`). Подро
|
||||
|
||||
## Разработка
|
||||
|
||||
Нужны Go 1.26 и [Task](https://taskfile.dev). Полный список задач —
|
||||
`task --list`.
|
||||
|
||||
```bash
|
||||
cp config.example.toml config.toml # локально: db_path -> ./jellybit.db
|
||||
make tidy # go mod tidy
|
||||
make run # go run ./cmd/jellybit --config ./config.toml
|
||||
make test lint # тесты и golangci-lint
|
||||
make build # статический бинарь (linux/amd64) для сервера
|
||||
make image # docker-образ из готового бинаря
|
||||
task setup # golangci-lint + git-хуки lefthook
|
||||
task tidy # go mod tidy
|
||||
task run # go run ./cmd/jellybit --config ./config.toml
|
||||
task test lint # тесты и golangci-lint
|
||||
task build # статический бинарь (linux/amd64) для сервера
|
||||
task image # docker-образ из готового бинаря
|
||||
```
|
||||
|
||||
## Доставка
|
||||
|
||||
@@ -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
|
||||
Reference in New Issue
Block a user