-
Notifications
You must be signed in to change notification settings - Fork 0
95 lines (83 loc) · 4.49 KB
/
bot-generate.yml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
# Название нашего workflow
name: Run tests and deploy "bot-generate"
# Условия запуска workflow - в нашем случае при каждом пуше в репозиторий
on:
push:
paths:
- 'generate/bot-generate.py'
# Определяем задачи (jobs), которые будут выполняться в рамках workflow
jobs:
# Задача с именем "test"
test:
# Запускаем задачу на виртуальной машине с Ubuntu
runs-on: ubuntu-latest
# Определяем шаги (steps) для выполнения задачи
steps:
# Шаг 1: Получаем код из репозитория
- name: Check out repository
uses: actions/checkout@v2
# Шаг 2: Устанавливаем нужную версию Python
- name: Set up Python
uses: actions/setup-python@v2
with:
python-version: 3.9
# Шаг 3: Устанавливаем зависимости (в нашем случае фреймворк для тестирования pytest и telebot)
- name: Install dependencies
run: pip install pytest telebot prometheus_client
# Шаг 4: Запускаем юнит-тесты с помощью pytest
- name: Run tests
run: python generate/bot-generate.py
env:
generate_bot: ${{ secrets.generate_bot }}
# Шаг 5: Загружаем файл как артефакт
- name: Upload file as artifact
uses: actions/upload-artifact@v2
with:
name: my-artifact-bot-generate
path: generate/bot-generate.py
# Задача с именем "deploy"
deploy:
# Запускаем задачу на виртуальной машине с Ubuntu
runs-on: ubuntu-latest
# Задаем зависимость от задачи "test"
needs: test
# Определяем шаги (steps) для выполнения задачи
steps:
# Шаг 1: Загружаем артефакт с нужными файлами
- name: Download artifact
uses: actions/download-artifact@v2
with:
name: my-artifact-bot-generate
# Шаг 2: Копируем файл на удаленный сервер с помощью scp
- name: Copy file to remote server
run: |
# Создание каталога .ssh в домашней директории пользователя
mkdir -p ~/.ssh
# Добавление известных хостов в файл known_hosts
echo "${{ secrets.ssh_known_hosts }}" >> ~/.ssh/known_hosts
# Добавление закрытого ключа SSH в файл id_rsa
echo "${{ secrets.ssh_private_key }}" > ~/.ssh/id_rsa
# Изменение прав доступа к файлу id_rsa
chmod 600 ~/.ssh/id_rsa
# Выполнение команды для отправки python-файла на удаленный сервер
scp /home/runner/work/bots-telegram/bots-telegram/bot-generate.py ${{ secrets.username }}@${{ secrets.remote_host }}:${{ secrets.path_to_destination }}
# Задача с именем "reload"
reload:
# Запускаем задачу на виртуальной машине с Ubuntu
runs-on: ubuntu-latest
# Задача запускается только после успешного выполнения задачи "deploy"
needs: deploy
steps:
# Шаг для перезагрузки службы systemd на удаленном сервере
- name: Reload systemd service on remote server
run: |
# Создание каталога .ssh в домашней директории пользователя
mkdir -p ~/.ssh
# Добавление известных хостов в файл known_hosts
echo "${{ secrets.ssh_known_hosts }}" >> ~/.ssh/known_hosts
# Добавление закрытого ключа SSH в файл id_rsa
echo "${{ secrets.ssh_private_key }}" > ~/.ssh/id_rsa
# Изменение прав доступа к файлу id_rsa
chmod 600 ~/.ssh/id_rsa
# Выполнение команды для перезагрузки службы systemd на удаленном сервере
ssh ${{ secrets.username }}@${{ secrets.remote_host }} 'sudo systemctl restart bot-generate.service'