@MynameIsBoxyy

Как сделать бесшовный деплой с помощью github actions?

Всем привет. Суть проблемы: сейчас у нас настроен git action который выкатывает правки в ветку master . Но когда происходит копирование сбилденных файлов в папку bundle , сайт перестает работать до полного копирования. Как нужно написать этот action чтобы деплой происходил нежно, плавно и работа сайта не прерывалась? Я далек от devops штучек, поэтому плохо понимаю что надо сделать

name: Node.js CI

on:
  push:
    branches:
      - master
      - staging

jobs:
  build:

    runs-on: ubuntu-latest

    strategy:
      matrix:
        node-version: [14.x]

    steps:
      - uses: actions/checkout@v2
      - name: Use Node.js ${{ matrix.node-version }}
        uses: actions/setup-node@v1
        with:
          node-version: ${{ matrix.node-version }}
      - run: npm ci
      - run: npm run build

      - name: Deploy production server
        if: github.ref == 'refs/heads/master'
        uses: BoatNg/funny-deploy@master
        env:
          REMOTE_HOST: "${{ secrets.DEPLOY_PROD_IP }}"
          REMOTE_PORT: "${{ secrets.DEPLOY_PROD_PORT }}"
          REMOTE_USER: "${{ secrets.DEPLOY_PROD_USERNAME }}"
          REMOTE_PASSWORD: "${{ secrets.DEPLOY_PROD_PASSWORD }}"
          REMOTE_PATH: "${{ secrets.DEPLOY_PROD_PATH }}/bundle"
          SOURCE: "bundle/"

      - name: Deploy production client
        if: github.ref == 'refs/heads/master'
        uses: BoatNg/funny-deploy@master
        env:
          REMOTE_HOST: "${{ secrets.DEPLOY_PROD_IP }}"
          REMOTE_PORT: "${{ secrets.DEPLOY_PROD_PORT }}"
          REMOTE_USER: "${{ secrets.DEPLOY_PROD_USERNAME }}"
          REMOTE_PASSWORD: "${{ secrets.DEPLOY_PROD_PASSWORD }}"
          REMOTE_PATH: "${{ secrets.DEPLOY_PROD_PATH }}"
          SOURCE: "dist/"
  • Вопрос задан
  • 393 просмотра
Пригласить эксперта
Ответы на вопрос 2
VoidVolker
@VoidVolker
Dark side eye. А у нас печеньки! А у вас?
Деплоить в новый отдельный каталог по названию версии. По завершению - просто сделать ссылку на каталог с новой версией.
Ответ написан
Начните с концепции сине-зелёного деплоя. В принципе идея достаточно прозрачна, один из простейших вариантов реализации вам уже предложил VoidVolker . Достаточно ли вам такого варианта - зависит от приложения. Если у вас будет какой-то более-менее сложный бэк - нужно будет проработать более комплексное переключение. Хотя бы роутинг между двумя контейнерами с разными запущенными версиями сервиса (старой и новой).
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы