added test labels #56
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# Название нашего 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' |