From 3afa1fbb7bdabaa6d91e58974530fc191db4f740 Mon Sep 17 00:00:00 2001 From: RedrockJS Date: Thu, 11 Dec 2025 11:23:55 +0300 Subject: [PATCH 1/9] fix(ci-cd): add github workflows --- .github/workflows/main.yaml | 137 ++++++++++++++++++++++++++++++++++++ .idea/compiler.xml | 6 ++ .idea/workspace.xml | 82 +++++++++------------ Dockerfile | 20 +++++- 4 files changed, 197 insertions(+), 48 deletions(-) create mode 100644 .github/workflows/main.yaml create mode 100644 .idea/compiler.xml diff --git a/.github/workflows/main.yaml b/.github/workflows/main.yaml new file mode 100644 index 0000000..0ae4d62 --- /dev/null +++ b/.github/workflows/main.yaml @@ -0,0 +1,137 @@ +name: Build and deploy + +on: + push: + branches: + - 'main' + +jobs: + build: + runs-on: ubuntu-latest + steps: + - name: Notify Telegram start building + uses: appleboy/telegram-action@master + with: + to: ${{ secrets.TELEGRAM_CHAT_ID }} + token: ${{ secrets.TELEGRAM_BOT_TOKEN }} + message: | + 🚀 Запуск сборки! + Сервер: ${{ secrets.SERVER_NAME }} + Репозиторий: ${{ github.repository }} + + - name: Set up QEMU + uses: docker/setup-qemu-action@v3 + + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v3 + + - name: Login to Docker Hub + uses: docker/login-action@v3 + with: + username: ${{ secrets.DOCKERHUB_USERNAME }} + password: ${{ secrets.DOCKERHUB_TOKEN }} + + - name: Build and push + uses: docker/build-push-action@v5 + with: + push: true + tags: smallbuster/ocenka-web:latest + build-args: | + NEXT_PUBLIC_MAIL_USER=${{ secrets.NEXT_PUBLIC_MAIL_USER }} + NEXT_PUBLIC_MAIL_PASS=${{ secrets.NEXT_PUBLIC_MAIL_PASS }} + NEXT_PUBLIC_MAIL_FROM=${{ secrets.NEXT_PUBLIC_MAIL_FROM }} + NEXT_PUBLIC_MAIL_TO=${{ secrets.NEXT_PUBLIC_MAIL_TO }} + NEXT_PUBLIC_MAIL_SECURE_KEY=${{ secrets.NEXT_PUBLIC_MAIL_SECURE_KEY }} + + - name: Notify Telegram about success + if: success() + uses: appleboy/telegram-action@master + with: + to: ${{ secrets.TELEGRAM_CHAT_ID }} + token: ${{ secrets.TELEGRAM_BOT_TOKEN }} + message: | + ✅ Сборка успешно завершена! + Сервер: ${{ secrets.SERVER_NAME }} + Репозиторий: ${{ github.repository }} + Ветка: ${{ github.ref_name }} + Коммит: ${{ github.sha }} + + - name: Notify Telegram about failure + if: failure() + uses: appleboy/telegram-action@master + with: + to: ${{ secrets.TELEGRAM_CHAT_ID }} + token: ${{ secrets.TELEGRAM_BOT_TOKEN }} + message: | + ❌ Сборка проекта неудачна! + Сервер: ${{ secrets.SERVER_NAME }} + Репозиторий: ${{ github.repository }} + Ветка: ${{ github.ref_name }} + Коммит: ${{ github.sha }} + Подробности: ${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }} + + deploy: + runs-on: self-hosted + needs: build + steps: + - name: Notify Telegram start deploy + uses: appleboy/telegram-action@master + with: + to: ${{ secrets.TELEGRAM_CHAT_ID }} + token: ${{ secrets.TELEGRAM_BOT_TOKEN }} + message: | + 🐳 Запуск деплоя! + Сервер: ${{ secrets.SERVER_NAME }} + Репозиторий: ${{ github.repository }} + + - name: Checkout repository + uses: actions/checkout@v4 + + - name: Login to Docker Hub + uses: docker/login-action@v3 + with: + username: ${{ secrets.DOCKERHUB_USERNAME }} + password: ${{ secrets.DOCKERHUB_TOKEN }} + + - name: Set up Docker Compose + run: | + docker compose version + + - name: Stop and remove existing containers + run: | + docker compose -f docker-compose.yaml down || true + + - name: Pull Docker images + run: | + docker compose -f docker-compose.yaml pull + + - name: Start containers + run: | + docker compose -f docker-compose.yaml up -d + + - name: Notify Telegram about success + if: success() + uses: appleboy/telegram-action@master + with: + to: ${{ secrets.TELEGRAM_CHAT_ID }} + token: ${{ secrets.TELEGRAM_BOT_TOKEN }} + message: | + ✅ Деплой успешно завершен! + Сервер: ${{ secrets.SERVER_NAME }} + Репозиторий: ${{ github.repository }} + Ветка: ${{ github.ref_name }} + Коммит: ${{ github.sha }} + + - name: Notify Telegram about failure + if: failure() + uses: appleboy/telegram-action@master + with: + to: ${{ secrets.TELEGRAM_CHAT_ID }} + token: ${{ secrets.TELEGRAM_BOT_TOKEN }} + message: | + ❌ Деплой не удался! + Сервер: ${{ secrets.SERVER_NAME }} + Репозиторий: ${{ github.repository }} + Ветка: ${{ github.ref_name }} + Коммит: ${{ github.sha }} + Подробности: ${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }} diff --git a/.idea/compiler.xml b/.idea/compiler.xml new file mode 100644 index 0000000..e6ef4f3 --- /dev/null +++ b/.idea/compiler.xml @@ -0,0 +1,6 @@ + + + + + \ No newline at end of file diff --git a/.idea/workspace.xml b/.idea/workspace.xml index e3284a3..d01f065 100644 --- a/.idea/workspace.xml +++ b/.idea/workspace.xml @@ -5,26 +5,10 @@ + + - - - - - - - - - - - - - - - - - - - + - @@ -60,32 +44,35 @@