From 15686b146aa2ac9b7829105c655085e116c1af5d Mon Sep 17 00:00:00 2001 From: Vladimir Zagainov Date: Mon, 23 Jun 2025 08:16:29 +0300 Subject: [PATCH] Initial commit --- .drone.yml | 35 +++++++++++++++++++++++++++++++++++ .gitignore | 23 +++++++++++++++++++++++ Dockerfile | 40 ++++++++++++++++++++++++++++++++++++++++ README.md | 17 +++++++++++++++++ go.mod | 17 +++++++++++++++++ 5 files changed, 132 insertions(+) create mode 100644 .drone.yml create mode 100644 .gitignore create mode 100644 Dockerfile create mode 100644 README.md create mode 100644 go.mod diff --git a/.drone.yml b/.drone.yml new file mode 100644 index 0000000..4aee20c --- /dev/null +++ b/.drone.yml @@ -0,0 +1,35 @@ +kind: pipeline +type: docker +name: default + +trigger: + branch: + - master + event: + - push + - pull_request + +steps: + - name: lint + image: golangci/golangci-lint:v1.59-alpine + commands: + - golangci-lint run ./... + + - name: test + image: golang:1.24-alpine + commands: + - go test -race -cover ./... +# Шаг сборки и публикации будет добавлен позже +# - name: build-and-publish +# 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 +# platforms: +# - linux/amd64 +# - linux/arm64 diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..d5999e3 --- /dev/null +++ b/.gitignore @@ -0,0 +1,23 @@ +# Binary +bot +yamusic-bot + +# Data +/data/ +bot.db + +# Go +*.exe +*.exe~ +*.dll +*.so +*.dylib +*.test + +# IDEs +.idea/ +.vscode/ + +# OS +.DS_Store +Thumbs.db diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..a1a1a69 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,40 @@ +# ---- Builder Stage ---- +# На этом этапе мы собираем приложение +FROM golang:1.24-alpine AS builder + +# Устанавливаем рабочую директорию +WORKDIR /app + +# Копируем файлы зависимостей и загружаем их +# Это позволяет кэшировать слой с зависимостями, если они не менялись +COPY go.mod go.sum ./ +RUN go mod download + +# Копируем исходный код +COPY . . + +# Собираем статически слинкованный бинарник. +# -w -s флаги убирают отладочную информацию и символы, уменьшая размер. +# CGO_ENABLED=0 необходимо для статической линковки и использования from scratch. +# TARGETARCH будет автоматически подставлен Docker Buildx (amd64 или arm64). +ARG TARGETARCH +RUN CGO_ENABLED=0 GOOS=linux GOARCH=${TARGETARCH} go build -ldflags="-w -s" -o /app/bot ./cmd/bot + +# ---- Final Stage ---- +# На этом этапе мы создаем финальный образ +FROM scratch + +# Устанавливаем рабочую директорию +WORKDIR /app + +# Копируем только скомпилированный бинарник из builder'а +COPY --from=builder /app/bot /app/bot + +# Создаем том для хранения данных, например, файла базы данных SQLite +VOLUME /data + +# Указываем, что контейнер будет слушать на этом порту (если потребуется) +# EXPOSE 8080 + +# Команда для запуска приложения +ENTRYPOINT ["/app/bot"] diff --git a/README.md b/README.md new file mode 100644 index 0000000..fe61e98 --- /dev/null +++ b/README.md @@ -0,0 +1,17 @@ +# Yandex.Music Downloader Bot + +[![Build Status](https://drone.mrixs.me/api/badges/Mrixs/yamusic-bot/status.svg)](https://drone.mrixs.me/Mrixs/yamusic-bot) + +Удобный и быстрый Telegram-бот для получения аудиофайлов треков из сервиса Yandex.Music по ссылке. + +## Конфигурация + +_(Будет заполнено позже)_ + +## Запуск + +_(Будет заполнено позже)_ + +## Использование + +_(Будет заполнено позже)_ diff --git a/go.mod b/go.mod new file mode 100644 index 0000000..45d33f8 --- /dev/null +++ b/go.mod @@ -0,0 +1,17 @@ +module gitea.mrixs.me/Mrixs/yamusic-bot + +go 1.24 + +require ( + github.com/bogem/id3v2 v1.2.1 + github.com/caarlos0/env/v10 v10.0.0 + github.com/go-telegram-bot-api/telegram-bot-api/v5 v5.5.1 + github.com/mattn/go-sqlite3 v1.14.22 + golang.org/x/sync v0.7.0 +) + +require ( + github.com/lmittmann/tint v1.0.4 // indirect + golang.org/x/net v0.21.0 // indirect + golang.org/x/text v0.14.0 // indirect +)