Рубрики
Uncategorized

Непрерывное развертывание, простой способ

Действия GitHub позволяют автоматизировать все ваши скучные вещи. В этом блоге вы увидите, как вы можете автоматизировать … Tagged with Github, DevOps, Tulciory, WebDev.

Действия GitHub позволяют автоматизировать все ваши скучные вещи. В этом блоге вы увидите, как вы можете автоматизировать развертывание на любом персональном сервере, виртуальном частном сервере (VPS) или виртуальной машине (VM). Каждый крупный поставщик облачных услуг предоставляет автоматическое развертывание, которое ограничено только услугами веб-хостинга.

Большинство из вас всегда хотят автоматизировать развертывание на вашем личном сервере и VPS/VM, но боятся напряженного процесса. Вот как вы можете легко это сделать. Это не ограничивается JavaScript, Python, Ruby. Вы можете автоматизировать развертывание чего -либо от ML Model до новой версии Game.

Давайте начнем 🚀

  • Мы будем использовать SSH для автоматизации. Убедитесь, что у вас есть порт 22 Откройте свой сервер.

  • Давайте создадим новый ключ SSH для действий GitHub на сервере и скопировать это.

# Save it with a recognizable name eg. github_actions 
# Do give it a strong passphrase
ssh-keygen -t rsa -b 4096 -C "your_email@example.com"

# Add Key to Authorize Keys. So, We can connect to it. 
cat ~/.ssh/github_actions.pub >> ~/.ssh/authorized_keys

# Copy content of Public Key. 
clip < ~/.ssh/github_actions
  • Перейдите к опции Secrets в настройках репозитория GitHub.

  • Нажмите «Новый секрет», чтобы добавить новые секреты.

    • Ключ — Содержание SSH Private Key. например. необработанное содержание ~/.ssh/github_actons. Скопировано на предыдущем шаге.
    • Хост — хозяин SSH
    • Порт — порт SSH, по умолчанию 22
    • Имя пользователя — SSH Имя пользователя
    • Пароль — SSH пароль
    • Passphrase — Пассная фраза обычно зашифрует закрытый ключ.
  • Перейдите на вкладку «Действия» в своем хранилище и нажмите «Настройте рабочий процесс самостоятельно».

  • Используйте и персонализируйте ниже.

# Give the workflow a name. 
name: Continuous Deployment

# Trigger Workflow on master/production branch. 

on:
  push:
    branches: [ master ]
  pull_request:
    branches: [ master ]

# 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 "deploy"
  deploy:
    name: Deploy
    # make sure to run this action in Linux env (say ubuntu)
    runs-on: ubuntu-latest
    # Steps represent a sequence of tasks that will be executed as part of the job
    steps:
    - name: executing remote ssh commands using password
      uses: appleboy/ssh-action@master
      # all environment variables needed to connect with Server is placed in with. 
      with:
        host: ${{ secrets.HOST }}
        key: ${{ secrets.KEY }}
        username: ${{ secrets.USERNAME }}
        password: ${{ secrets.PASSWORD }}
        port: ${{ secrets.PORT }}
        passphrase: ${{ secrets.PASSPHRASE }}
        # Here will go script required for auto-deployment.
        # eg. For Django server using Gunicorn. 
        # Website Server is stored in thewebsite folder
        script: |
        echo "Changing Directory to thewebsite"
        cd thewebsite/
        echo "Pulling From Github"
        git pull -q origin master
        echo "Git Pull Complete"
        echo "Restarting Service"
        sudo systemctl daemon-reload
        sudo systemctl restart gunicorn

Выше выше будет автоматически развернуть любые изменения в Django. Вы можете изменить сценарий в соответствии с языком и структурой по вашему выбору.

Вы также можете использовать локально сохраненный скрипт, предоставив путь сценария вместо того, чтобы писать здесь. например.

script: /home/username/deploy.sh

Заключение 📓

Вы можете автоматизировать что угодно с этим рабочим процессом с изменением в мастер -/производственной филиале в качестве триггера.

Этот рабочий процесс разработан с использованием Appleboy/SSH-Action Анкет Вы можете прочитать больше о аргументах и документации Здесь Анкет

Оригинал: «https://dev.to/mercury/continuous-deployment-the-easy-way-8j2»