108 lines
3.4 KiB
YAML
108 lines
3.4 KiB
YAML
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
|