diff --git a/.drone.yml b/.drone.yml index 9420337..acf408b 100644 --- a/.drone.yml +++ b/.drone.yml @@ -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