Files
yamusic-bot/.drone.yml
Vladimir Zagainov eef26aba0a
All checks were successful
continuous-integration/drone/push Build is passing
continuous-integration/drone/pr Build is passing
feat(ci): add build cache
2025-06-23 22:19:01 +03:00

108 lines
3.4 KiB
YAML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
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