feat(ci): add build cache
This commit is contained in:
45
.drone.yml
45
.drone.yml
@@ -10,24 +10,55 @@ trigger:
|
|||||||
- push
|
- push
|
||||||
- pull_request
|
- 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:
|
steps:
|
||||||
# Общие шаги для всех веток
|
# Общие шаги для всех веток
|
||||||
- name: deps
|
- name: deps
|
||||||
image: golang:1.24-alpine
|
image: golang:1.24-alpine
|
||||||
|
volumes:
|
||||||
|
# Монтируем наш go-cache в стандартный GOPATH контейнера
|
||||||
|
- name: go-cache
|
||||||
|
path: /go
|
||||||
commands:
|
commands:
|
||||||
|
# Теперь go mod download будет сразу использовать и сохранять кэш на хост-машине
|
||||||
- go mod download
|
- go mod download
|
||||||
- go mod tidy
|
- go mod tidy
|
||||||
|
|
||||||
- name: lint
|
- name: lint
|
||||||
image: golangci/golangci-lint:v1.64-alpine
|
image: golangci/golangci-lint:v1.64-alpine
|
||||||
|
volumes:
|
||||||
|
# Монтируем кэш линтера
|
||||||
|
- name: lint-cache
|
||||||
|
path: /root/.cache
|
||||||
commands:
|
commands:
|
||||||
|
# Линтер автоматически подхватит кэш из /root/.cache
|
||||||
- golangci-lint run --timeout=5m --verbose ./...
|
- golangci-lint run --timeout=5m --verbose ./...
|
||||||
|
|
||||||
- name: test
|
- name: test
|
||||||
image: golang:1.24-alpine
|
image: golang:1.24-alpine
|
||||||
|
volumes:
|
||||||
|
# Также монтируем go-cache, чтобы тесты использовали скачанные модули и кэш сборки
|
||||||
|
- name: go-cache
|
||||||
|
path: /go
|
||||||
commands:
|
commands:
|
||||||
- apk add --no-cache build-base
|
- apk add --no-cache build-base
|
||||||
|
# CGO_ENABLED=1 go test теперь будет значительно быстрее при повторных запусках
|
||||||
- CGO_ENABLED=1 go test -race -cover ./...
|
- CGO_ENABLED=1 go test -race -cover ./...
|
||||||
|
|
||||||
# Шаг сборки и публикации для MASTER
|
# Шаги сборки и публикации остаются почти без изменений.
|
||||||
|
# Кэширование Docker-слоев (`cache_from`) - это отдельный механизм, и его стоит оставить.
|
||||||
|
# Он дополняет кэширование зависимостей, ускоряя саму сборку Docker-образа.
|
||||||
- name: build-and-publish-master
|
- name: build-and-publish-master
|
||||||
image: plugins/docker
|
image: plugins/docker
|
||||||
settings:
|
settings:
|
||||||
@@ -37,7 +68,10 @@ steps:
|
|||||||
from_secret: gitea_username
|
from_secret: gitea_username
|
||||||
password:
|
password:
|
||||||
from_secret: gitea_password
|
from_secret: gitea_password
|
||||||
auto_tag: true # Создаст теги: latest, git-хеш и т.д.
|
auto_tag: true
|
||||||
|
# Оставляем кэширование Docker-слоев, это очень эффективно
|
||||||
|
cache_from:
|
||||||
|
- gitea.mrixs.me/mrixs/yamusic-bot:latest
|
||||||
platforms:
|
platforms:
|
||||||
- linux/amd64
|
- linux/amd64
|
||||||
- linux/arm64
|
- linux/arm64
|
||||||
@@ -48,7 +82,6 @@ steps:
|
|||||||
event:
|
event:
|
||||||
- push
|
- push
|
||||||
|
|
||||||
# Шаг сборки и публикации для DEV (nightbuild/dev-build)
|
|
||||||
- name: build-and-publish-dev
|
- name: build-and-publish-dev
|
||||||
image: plugins/docker
|
image: plugins/docker
|
||||||
settings:
|
settings:
|
||||||
@@ -58,11 +91,11 @@ steps:
|
|||||||
from_secret: gitea_username
|
from_secret: gitea_username
|
||||||
password:
|
password:
|
||||||
from_secret: gitea_password
|
from_secret: gitea_password
|
||||||
# Вместо auto_tag: true указываем теги вручную
|
|
||||||
tags:
|
tags:
|
||||||
- dev # Статический тег 'dev', который будет перезаписываться
|
- dev
|
||||||
# Очень полезный тег: dev-<короткий-хеш-коммита>
|
|
||||||
- dev-${DRONE_COMMIT_SHA:0:7}
|
- dev-${DRONE_COMMIT_SHA:0:7}
|
||||||
|
cache_from:
|
||||||
|
- gitea.mrixs.me/mrixs/yamusic-bot:dev
|
||||||
platforms:
|
platforms:
|
||||||
- linux/amd64
|
- linux/amd64
|
||||||
- linux/arm64
|
- linux/arm64
|
||||||
|
|||||||
Reference in New Issue
Block a user