feat(ci): add build cache
All checks were successful
continuous-integration/drone/push Build is passing
continuous-integration/drone/pr Build is passing

This commit is contained in:
2025-06-23 22:19:01 +03:00
parent 14c54ee737
commit eef26aba0a

View File

@@ -10,24 +10,55 @@ trigger:
- push
- pull_request
# --- НАЧАЛО БЛОКА ЛОКАЛЬНОГО КЭШИРОВАНИЯ ---
volumes:
- name: go-cache # Логическое имя кэша для Go
host:
# Путь на сервере, где запущен Drone Agent.
# Убедитесь, что эта директория существует и у Drone есть права на запись.
path: /var/cache/drone/gocache
- name: lint-cache # Отдельный кэш для линтера
host:
path: /var/cache/drone/lintcache
# --- КОНЕЦ БЛОКА ЛОКАЛЬНОГО КЭШИРОВАНИЯ ---
steps:
# Общие шаги для всех веток
- name: deps
image: golang:1.24-alpine
volumes:
# Монтируем наш go-cache в стандартный GOPATH контейнера
- name: go-cache
path: /go
commands:
# Теперь go mod download будет сразу использовать и сохранять кэш на хост-машине
- go mod download
- go mod tidy
- name: lint
image: golangci/golangci-lint:v1.64-alpine
volumes:
# Монтируем кэш линтера
- name: lint-cache
path: /root/.cache
commands:
# Линтер автоматически подхватит кэш из /root/.cache
- golangci-lint run --timeout=5m --verbose ./...
- name: test
image: golang:1.24-alpine
volumes:
# Также монтируем go-cache, чтобы тесты использовали скачанные модули и кэш сборки
- name: go-cache
path: /go
commands:
- apk add --no-cache build-base
# CGO_ENABLED=1 go test теперь будет значительно быстрее при повторных запусках
- CGO_ENABLED=1 go test -race -cover ./...
# Шаг сборки и публикации для MASTER
# Шаги сборки и публикации остаются почти без изменений.
# Кэширование Docker-слоев (`cache_from`) - это отдельный механизм, и его стоит оставить.
# Он дополняет кэширование зависимостей, ускоряя саму сборку Docker-образа.
- name: build-and-publish-master
image: plugins/docker
settings:
@@ -37,7 +68,10 @@ steps:
from_secret: gitea_username
password:
from_secret: gitea_password
auto_tag: true # Создаст теги: latest, git-хеш и т.д.
auto_tag: true
# Оставляем кэширование Docker-слоев, это очень эффективно
cache_from:
- gitea.mrixs.me/mrixs/yamusic-bot:latest
platforms:
- linux/amd64
- linux/arm64
@@ -48,7 +82,6 @@ steps:
event:
- push
# Шаг сборки и публикации для DEV (nightbuild/dev-build)
- name: build-and-publish-dev
image: plugins/docker
settings:
@@ -58,11 +91,11 @@ steps:
from_secret: gitea_username
password:
from_secret: gitea_password
# Вместо auto_tag: true указываем теги вручную
tags:
- dev # Статический тег 'dev', который будет перезаписываться
# Очень полезный тег: dev-<короткий-хеш-коммита>
- dev
- dev-${DRONE_COMMIT_SHA:0:7}
cache_from:
- gitea.mrixs.me/mrixs/yamusic-bot:dev
platforms:
- linux/amd64
- linux/arm64