feat(ci): add build cache
This commit is contained in:
45
.drone.yml
45
.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
|
||||
|
||||
Reference in New Issue
Block a user