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

This commit is contained in:
LeoR156
2026-09-15 15:29:49 +05:00
parent b178c4004b
commit 187c2bcc1b
3 changed files with 63 additions and 10 deletions
+4 -3
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 "BOT_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
+36 -2
View File
@@ -1,2 +1,36 @@
### Цитатный бот # Цитатный телеграмм бот с авторазвёртыванием.
#### .....Скоро.....
### Что умеет данный бот?
* Отправлять рандомную цитату по запросу ``` /quote ```.
* По команде ``` /stats ``` показывать, сколько цитат в базе есть на данный момент.
### Возможности для администратора:
* Добавлять новые цитаты командой ``` /add <текст цитаты> ```.
## Как это развернуть?
### вам понадобится:
* Зарубежный Linux сервер на Ubuntu или Debian.
* Токен вашего телеграмм бота. Можно получить здесь: [BotFather](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 ` и добавте в него данные:
```
TOKEN=your_token_here # Замените на реальный токен
ADMIN_IDS=123456789,987654321 # Напишите свой id или id того аккаунта, с которого будет осущесвляться добавление цитат. ID может быть несколько, порядок записи в примере.
```
* Перейдите в папку ` auto-deployment ` командой ` cd auto-deployment `.
* Отредактируйте файл инвентори командой ` nano inventory.ini `. Удалите оттуда всю информацию и добавьте следующее:
```
[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`
##### Готово, через несколько минут бот заработает.
+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: