diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml index fce573c..04de7ab 100644 --- a/.github/workflows/deploy.yml +++ b/.github/workflows/deploy.yml @@ -1,22 +1,33 @@ name: deploy-to-Yandex-Cloud -# Controls when the workflow will run on: workflow_dispatch: + release: + types: [published] -# A workflow run is made up of one or more jobs that can run sequentially or in parallel jobs: - # This workflow contains a single job called "build" deploy: - # The type of runner that the job will run on runs-on: ubuntu-latest - - # Steps represent a sequence of tasks that will be executed as part of the job steps: - # Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it - - uses: actions/checkout@v2 + - name: webfactory/ssh-agent + uses: webfactory/ssh-agent@v0.5.3 + with: + ssh-private-key: ${{ secrets.KEY }} - # Runs a set of commands using the runners shell - - name: Connect to Yandex Cloud SSH + - name: Set up keys for Yandex Cloud run: | - echo Hello world. + echo "${{ secrets.key }}" > "$HOME/key" + chmod 600 "$HOME/key" + + - name: Deploy bot at Yandex Cloud + run: + ssh -i $HOME/key carolyn@${{ secrets.HOST }} -o StrictHostKeyChecking=no + ' + cd Carolyn && + git pull && + export CAROLYN_DEPLOY_ID="$(git rev-parse HEAD)" && + export CAROLYN_DEPLOY_VERSION="$(git describe --tags)" && + echo "$CAROLYN_DEPLOY_VERSION, $CAROLYN_DEPLOY_ID" && + docker-compose down && + docker-compose up -d + ' diff --git a/TelegramBot/bot.py b/TelegramBot/bot.py index fa03b97..b51d68b 100644 --- a/TelegramBot/bot.py +++ b/TelegramBot/bot.py @@ -4,6 +4,7 @@ import logging import requests import time import datetime +import os import telegram from telegram import ( @@ -394,9 +395,16 @@ def variant(update: Update, context: CallbackContext): msg.edit_text(text=MESSAGES.Variant.get(data["student"]["number"])) +def about(update: Update, context: CallbackContext): + """Получить инфу о развертывании бота.""" + commit_id = os.environ.get("CAROLYN_DEPLOY_ID", "") + verison = os.environ.get("CAROLYN_DEPLOY_VERSION", "") + update.message.reply_html(MESSAGES.Deploy.about(commit_id, verison)) + + def error(update: Update, context: CallbackContext): LOG.error(msg="Exception while handling an update:", exc_info=context.error) - if context.error is not None: + if context.error is not None and update is not None: update.message.reply_text("Ой, кажется у меня %s" % repr(context.error)) update.message.reply_sticker(MESSAGES.Stickers.DEAD) return ConversationHandler.END @@ -485,6 +493,7 @@ def main() -> None: sub_handler = CommandHandler("sub", sub) unsub_handler = CommandHandler("unsub", unsub) variant_handler = CommandHandler("variant", variant) + about_handler = CommandHandler("about", about) dispatcher.add_handler(start_handler) dispatcher.add_handler(grades_handler) @@ -492,6 +501,7 @@ def main() -> None: dispatcher.add_handler(sub_handler) dispatcher.add_handler(unsub_handler) dispatcher.add_handler(variant_handler) + dispatcher.add_handler(about_handler) dispatcher.add_error_handler(error) # Начало работы бота diff --git a/TelegramBot/messages/messages.py b/TelegramBot/messages/messages.py index 4e8bd9f..baab794 100644 --- a/TelegramBot/messages/messages.py +++ b/TelegramBot/messages/messages.py @@ -29,8 +29,9 @@ class Messages: TIMEOUT = "🕛 Время запроса вышло" @staticmethod - def get(name: str, assignment: list, how_to_display: str, - notes: str, deadline: str): + def get( + name: str, assignment: list, how_to_display: str, notes: str, deadline: str + ): is_float, n_cols, n_rows = how_to_display.split(",") n_cols, n_rows = int(n_cols), int(n_rows) summary = f"{name}:\n" @@ -110,6 +111,11 @@ class Messages: } return cases.get(err, "😟 Возникли неполадки") + class Deploy: + @staticmethod + def about(commit_id: str, git_describe): + return f"ℹ️ Версия сборки:\n{git_describe}" + class Spreadsheets: pass diff --git a/docker-compose.yml b/docker-compose.yml index 78e283c..782b64f 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -7,12 +7,13 @@ services: build: ./SpreadsheetsService ports: - "5000:5000" - environment: - SECRETKEY: "HELLO-WORLD-@21XX 15AF" volumes: - ./SpreadsheetsService:/app telegrambot: container_name: "carolyn-telegrambot" + environment: + CAROLYN_DEPLOY_ID: ${CAROLYN_DEPLOY_ID} + CAROLYN_DEPLOY_VERSION: ${CAROLYN_DEPLOY_VERSION} restart: always build: ./TelegramBot volumes: