kind: pipeline type: docker name: default trigger: branch: - master - dev event: - 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 ./... # Шаги сборки и публикации остаются почти без изменений. # Кэширование Docker-слоев (`cache_from`) - это отдельный механизм, и его стоит оставить. # Он дополняет кэширование зависимостей, ускоряя саму сборку Docker-образа. - name: build-and-publish-master image: plugins/docker settings: repo: gitea.mrixs.me/mrixs/yamusic-bot registry: gitea.mrixs.me username: from_secret: gitea_username password: from_secret: gitea_password auto_tag: true # Оставляем кэширование Docker-слоев, это очень эффективно cache_from: - gitea.mrixs.me/mrixs/yamusic-bot:latest platforms: - linux/amd64 - linux/arm64 - linux/arm/v7 when: branch: - master event: - push - name: build-and-publish-dev image: plugins/docker settings: repo: gitea.mrixs.me/mrixs/yamusic-bot registry: gitea.mrixs.me username: from_secret: gitea_username password: from_secret: gitea_password tags: - dev - dev-${DRONE_COMMIT_SHA:0:7} cache_from: - gitea.mrixs.me/mrixs/yamusic-bot:dev platforms: - linux/amd64 - linux/arm64 - linux/arm/v7 when: branch: - dev event: - push