diff --git a/README.md b/README.md index 51ab934..15238cb 100644 --- a/README.md +++ b/README.md @@ -12,6 +12,18 @@ - [Алгоритм поиска воспоминаний](spec/SEARCH.md) +## Сборка и деплой + +Команды проекта — через [Task](https://taskfile.dev), список: `task --list`. + +Деплоем занимается плейбук `playbook-remembos.yml` в `pet-project-server`: +роль `app_image` собирает образ локально этим репозиторием и везёт его на +сервер через `docker save`/`load` — реестр не участвует. + +Контракт роли — задача `image`: она получает `BUILD_ID` через окружение и +собирает `remembos:$BUILD_ID`. Без переменной (`task image`) собирается +`remembos:dev` для локальной работы. + ## Стек - **Go** — основной язык diff --git a/Taskfile.yml b/Taskfile.yml new file mode 100644 index 0000000..6988d3a --- /dev/null +++ b/Taskfile.yml @@ -0,0 +1,52 @@ +# yaml-language-server: $schema=https://taskfile.dev/schema.json +# +# Запуск команд проекта через Task (https://taskfile.dev). +# Список задач: `task --list`. + +version: '3' + +vars: + BINARY: remembos + PKG: ./cmd/remembos + +tasks: + default: + desc: Список доступных задач + cmds: + - task --list + silent: true + + run: + desc: 'Локальный запуск (нужен ./config.toml)' + cmds: + - go run {{.PKG}} --config ./config.toml + + build: + desc: Статический бинарь linux/amd64 + cmds: + - CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -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-образ (сборка Go внутри образа). Тег из $BUILD_ID, по умолчанию dev' + cmds: + - docker build -t {{.BINARY}}:${BUILD_ID:-dev} . + + clean: + desc: Удалить собранный бинарь + cmds: + - rm -f {{.BINARY}}