Compare commits

..
52 Commits
Author SHA1 Message Date
LeoR156 9b0783581f Update README 2026-09-15 16:02:26 +05:00
LeoR156 36763e28fa Enhance README with emojis and formatting updates
Updated README.md with emojis and improved formatting.
2026-09-15 15:53:18 +05:00
LeoR156 a48841be07 Update REAME.md 2026-09-15 15:46:01 +05:00
LeoR156 48790e1071 Merge branch 'main' of https://github.com/LeoR156/quote-bot 2026-09-15 15:38:49 +05:00
LeoR156 15c6a21c7b Fix variable 2026-09-15 15:38:38 +05:00
LeoR156 4b3413d403 Backup deploy.yml file 2026-09-15 15:35:31 +05:00
LeoR156 7393fdeee0 Merge conflict resolved 2026-09-15 15:32:50 +05:00
LeoR156 187c2bcc1b Update README.md and update logic CI/CD and ansible playbook
Quote Bot CI/CD Pipeline / check (push) Canceled after 0s
Quote Bot CI/CD Pipeline / Security Scan (push) Canceled after 0s
Quote Bot CI/CD Pipeline / Build and push to Docker Hub (push) Canceled after 0s
Quote Bot CI/CD Pipeline / Deploy to VPS via Ansible (push) Canceled after 0s
2026-09-15 15:29:49 +05:00
LeoR156 aff2838a95 Refactor environment variable retrieval in A_deploy.yml 2026-09-14 23:40:48 +05:00
LeoR156 0d60bb1b67 Update TOKEN environment variable in A_deploy.yml 2026-09-14 23:33:25 +05:00
LeoR156 b178c4004b Update CI/CD
Quote Bot CI/CD Pipeline / check (push) Canceled after 0s
Quote Bot CI/CD Pipeline / Security Scan (push) Canceled after 0s
Quote Bot CI/CD Pipeline / Build and push to Docker Hub (push) Canceled after 0s
Quote Bot CI/CD Pipeline / Deploy to VPS via Ansible (push) Canceled after 0s
2026-09-13 21:27:35 +05:00
LeoR156 4529b53aa7 Update CI/CD 2026-09-13 21:25:44 +05:00
LeoR156 6ec501608e Update CI/CD 2026-09-13 21:22:35 +05:00
LeoR156 ba70770212 Update CI/CD 2026-09-13 21:18:26 +05:00
LeoR156 66063be925 Fix CI/CD 2026-09-13 21:12:20 +05:00
LeoR156 be3ad20d80 Update README.md file 2026-09-13 20:57:11 +05:00
LeoR156 f20be312d7 Merge branch 'main' of gitlab.leor156.online:root/quote_bot_auto-deployment 2026-09-13 15:29:20 +05:00
LeoR156 20f5940385 Fix CI/CD 2026-09-13 15:29:05 +05:00
Leo cce65604ef Fix space in .gitlab-ci.yml file 2026-09-13 10:24:06 +00:00
LeoR156 edd6acc153 Add gitea repo 2026-09-13 15:21:31 +05:00
LeoR156 17069f19f3 fix CI/CD (: F 2026-09-12 18:28:00 +05:00
LeoR156 5183d483cf fix CI/CD (: 2026-09-12 18:23:01 +05:00
LeoR156 5b9539ffa0 Merge branch 'main' of gitlab.leor156.online:root/quote_bot_auto-deployment 2026-09-12 18:09:56 +05:00
LeoR156 f86e269d24 Update CI/CD 2026-09-12 18:09:16 +05:00
Leo 3df249fd84 Update .gitlab-ci.yml file 2026-09-12 11:05:01 +00:00
LeoR156 e4806e1e07 fix tg notify 2026-09-12 13:37:13 +05:00
LeoR156 adf6936c1c fix tg notify 2026-09-12 13:34:51 +05:00
Leo cdde9fd375 Update .gitlab-ci.yml file 2026-09-12 08:30:40 +00:00
LeoR156 fd5dfc4d7f fix tg notify 2026-09-12 13:29:23 +05:00
LeoR156 d9b6fa9739 Fix 2026-09-12 13:20:32 +05:00
LeoR156 deb3acdec0 Update CI/CD Pipline, Add notify in TG 2026-09-12 13:03:52 +05:00
Leo 70f62d15dd Edit A_deploy.yml 2026-09-12 07:31:11 +00:00
Leo 6be7c6424a Edit A_deploy.yml 2026-09-12 07:28:06 +00:00
Leo 3f6c0a5f92 Edit quotes.py 2026-09-12 07:22:58 +00:00
Leo 7420b51297 Update .gitlab-ci.yml file 2026-09-12 07:18:29 +00:00
Leo 15abd2e533 Update .gitlab-ci.yml file 2026-09-12 06:59:52 +00:00
Leo acf01486ff Update .gitlab-ci.yml file 2026-09-12 06:59:31 +00:00
Leo 166b35bbb9 Update .gitlab-ci.yml file 2026-09-12 06:54:58 +00:00
Leo d7447807e1 Update .gitlab-ci.yml file 2026-09-12 05:48:38 +00:00
Leo f5ecb29962 Update .gitlab-ci.yml file 2026-09-12 05:45:56 +00:00
Leo f2f6289a7c Update .gitlab-ci.yml file 2026-09-12 05:44:34 +00:00
Leo 92ce72e895 Update .gitlab-ci.yml file 2026-09-12 05:41:21 +00:00
Leo 3fb7ca862b Update .gitlab-ci.yml file 2026-09-12 05:38:57 +00:00
Leo 78db08e953 Edit .gitlab-ci.yml 2026-09-12 05:36:51 +00:00
Leo ee325adc5e Edit .gitlab-ci.yml 2026-09-12 05:33:30 +00:00
Leo 1b8d109a92 Update .gitlab-ci.yml file 2026-09-12 05:26:37 +00:00
Leo 1e2a2d8ccc Update .gitlab-ci.yml file 2026-09-12 05:24:23 +00:00
Leo 8054180fdf Update .gitlab-ci.yml file 2026-09-12 05:23:00 +00:00
Leo bbc8431cc3 Update .gitlab-ci.yml file 2026-09-12 05:21:38 +00:00
Leo 98853e31fa Edit A_deploy.yml 2026-09-12 05:21:31 +00:00
Leo 5d12514bf0 Add new file 2026-09-12 05:16:49 +00:00
LeoR156 44410c3e56 Add quote bot 2026-09-12 09:46:55 +05:00
4 changed files with 86 additions and 19 deletions
+7 -12
View File
@@ -1,3 +1,4 @@
# Универсальная группа раннеров
default: default:
tags: tags:
- universal - universal
@@ -48,10 +49,10 @@ deploy_to_server:
- chmod 600 ~/.ssh/id_ed25519 - chmod 600 ~/.ssh/id_ed25519
- ansible-galaxy collection install community.docker - ansible-galaxy collection install community.docker
script: script:
- echo "TOKEN=$BOT_TOKEN" > .env
- echo "ADMIN_IDS=$ADMIN_ID_TG" >> .env
- cd auto-deployment/ - cd auto-deployment/
- ansible-playbook -i inventory.ini A_deploy.yml - ansible-playbook -i inventory.ini A_deploy.yml --extra-vars "image_tag=$CI_COMMIT_SHORT_SHA"
--extra-vars "image_tag=$CI_COMMIT_SHORT_SHA"
environment: environment:
name: production name: production
url: http://$BOT_SERVER_IP url: http://$BOT_SERVER_IP
@@ -113,15 +114,9 @@ mirror_to_gitea:
entrypoint: [""] entrypoint: [""]
stage: .post stage: .post
variables: variables:
GIT_DEPTH: 1
GIT_STRATEGY: clone GIT_STRATEGY: clone
GIT_DEPTH: 0
script: script:
- git config user.name "GitLab CI/CD"
- git config user.email "ci@leor156.online"
- git branch -D showcase || true
- git checkout --orphan showcase
- git add -A
- git commit -m "Showcase update - ${CI_COMMIT_SHORT_SHA}"
- git remote add gitea https://leo:$GITEA_TOKEN@gitea.leor156.online/leo/quote_bot_auto-deployment.git - git remote add gitea https://leo:$GITEA_TOKEN@gitea.leor156.online/leo/quote_bot_auto-deployment.git
- git push gitea showcase:main --force - git push gitea HEAD:main --force
when: on_success when: on_success
+56 -2
View File
@@ -1,2 +1,56 @@
### Цитатный бот # Цитатный телеграмм бот с авторазвёртыванием. :robot:
#### ...Скоро...
## 🛠 Под капотом (Стек технологий)
Этот проект создавался в том числе для практики современных DevOps-инструментов. Здесь реализован полноценный автоматизированный пайплайн развертывания:
* **Terraform + Yandex Cloud:** Используется концепция Infrastructure as Code (IaC) для автоматического создания виртуальных машин, настройки сети и дисков в облаке.
* **Docker:** Приложение упаковано в контейнер, что решает проблему с зависимостями и позволяет легко запускать бота на любом сервере.
* **Ansible:** Автоматизирует настройку чистого сервера. Плейбук сам устанавливает Docker (если его нет), настраивает окружение и запускает контейнер.
* **GitLab CI/CD:** Готовый пайплайн (`.gitlab-ci.yml`), который прогоняет тесты, собирает Docker-образ с помощью Kaniko, пушит его в Docker Hub и автоматически запускает Ansible-плейбук для деплоя на боевой сервер.
---
### Что умеет данный бот?
* Отправлять рандомную цитату по запросу ``` /quote ```
* По команде ``` /stats ``` показывать, сколько цитат в базе есть на данный момент.
### Возможности для администратора: :gear:
* Добавлять новые цитаты командой ``` /add <текст цитаты> ```
## Как это развернуть? :rocket:
### Вам понадобится:
* Зарубежный Linux сервер на Ubuntu или Debian.
* Токен вашего телеграмм бота. Можно получить здесь: [BotFather](https://t.me/BotFather)
* У вас должен быть установлен ansible и git на wsl. Если не установлены, то установите командами ` sudo apt install ansible && sudo apt install git `
### Ваши действия для развертывания:
* Клонируйте репозиторий командой: ` git clone https://github.com/LeoR156/quote-bot `
* Перейдите в папку с ботом командой ` cd quote-bot `
* Создайте файл ` .env ` и добавьте в него данные командой ` nano .env `:
```
TOKEN=your_token_here # Замените на реальный токен
ADMIN_IDS=123456789,987654321 # Напишите свой id или id того аккаунта, с которого будет осуществляться добавление цитат. ID может быть несколько, порядок записи в примере.
```
* Перейдите в папку ` auto-deployment ` командой ` cd auto-deployment `
* Отредактируйте файл инвентори командой ` nano inventory.ini `. Удалите оттуда всю информацию и добавьте следующее ( :warning: не забудьте поменять данные на свои):
```
[server_bot]
server ansible_host=<ваш_ip> ansible_user=<ваш_пользователь> ansible_ssh_private_key_file=<путь_до_вашего_ssh_ключа_на_хосте>
[all:vars]
ansible_ssh_common_args='-o StrictHostKeyChecking=no'
```
* Запустите плейбук командой `ansible-playbook A_deploy.yml -i inventory.ini`
### Готово, через несколько минут бот заработает. :white_check_mark:
***
***
***
## Диагностика, если бот не отвечает/падает:
...скоро...
+23 -5
View File
@@ -1,6 +1,7 @@
# deploy.yml # deploy.yml
- name: Автоматический деплой Telegram-бота - name: Автоматический деплой Telegram-бота
hosts: all hosts: all
vars: vars:
image_name: "leor156/quote-bot:{{ image_tag | default('latest') }}" image_name: "leor156/quote-bot:{{ image_tag | default('latest') }}"
@@ -8,17 +9,36 @@
container_state: "started" container_state: "started"
tasks: tasks:
- name: Убеждаемся, что установлена библиотека Docker для Python - name: Устанавливаем Docker и библиотеку для Python
apt: apt:
name: python3-docker name:
- docker.io
- python3-docker
state: present state: present
update_cache: yes update_cache: yes
- name: Убеждаемся, что Docker запущен
service:
name: docker
state: started
enabled: yes
- name: Скачиваем образ бота с Docker Hub - name: Скачиваем образ бота с Docker Hub
community.docker.docker_image: community.docker.docker_image:
name: "{{ image_name }}" name: "{{ image_name }}"
source: pull source: pull
- name: Создать папку, если она отсутствует
ansible.builtin.file:
path: /opt/quote-bot
state: directory
mode: '0700'
- name: Копируем .env файл на сервер
copy:
src: ../.env
dest: /opt/quote-bot/.env
- name: Запускаем контейнер - name: Запускаем контейнер
community.docker.docker_container: community.docker.docker_container:
name: "{{ container_name }}" name: "{{ container_name }}"
@@ -26,9 +46,7 @@
state: "{{ container_state }}" state: "{{ container_state }}"
restart_policy: unless-stopped restart_policy: unless-stopped
pull: always pull: always
env: env_file: /opt/quote-bot/.env
TOKEN: "{{ lookup('env', 'BOT_TOKEN') }}"
ADMIN_IDS: "{{ lookup('env', 'ADMIN_ID_TG') }}"
- name: Чистка - name: Чистка
community.docker.docker_prune: community.docker.docker_prune: